Voting.json 36.8 KB
Newer Older
timothe 2004's avatar
timothe 2004 committed
1
{
2
  "_format": "hh-sol-artifact-1",
timothe 2004's avatar
timothe 2004 committed
3
  "contractName": "Voting",
4
  "sourceName": "contracts/Voting.sol",
timothe 2004's avatar
timothe 2004 committed
5 6
  "abi": [
    {
7 8 9 10 11 12 13
      "inputs": [
        {
          "internalType": "address",
          "name": "_deployer",
          "type": "address"
        }
      ],
timothe 2004's avatar
timothe 2004 committed
14 15 16
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
timothe 2004's avatar
timothe 2004 committed
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "ProposalRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "Voted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "voterAddress",
          "type": "address"
        }
      ],
      "name": "VoterRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "enum Voting.WorkflowStatus",
          "name": "previousStatus",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "enum Voting.WorkflowStatus",
          "name": "newStatus",
          "type": "uint8"
        }
      ],
      "name": "WorkflowStatusChange",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "checkAndUpdateStatus",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "delegateVoteTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "endProposalsRegistration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "endVotingSession",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_voterAddress",
          "type": "address"
        }
      ],
      "name": "getDelegation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_proposalId",
          "type": "uint256"
        }
      ],
      "name": "getProposal",
      "outputs": [
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "voteCount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getProposalsCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_voterAddress",
          "type": "address"
        }
      ],
      "name": "getVoter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isRegistered",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "hasVoted",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "votedProposalId",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getWinner",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "winningProposalIndex",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "voteCount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_description",
          "type": "string"
        }
      ],
      "name": "registerProposal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_voterAddress",
          "type": "address"
        }
      ],
      "name": "registerVoter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
303 304 305 306 307 308 309 310 311 312 313 314 315
    {
      "inputs": [],
      "name": "registrationEndTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
timothe 2004's avatar
timothe 2004 committed
316 317 318 319 320 321 322
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
323 324 325 326 327 328 329
    {
      "inputs": [],
      "name": "resetVoting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
timothe 2004's avatar
timothe 2004 committed
330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_durationInMinutes",
          "type": "uint256"
        }
      ],
      "name": "startProposalsRegistration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_durationInMinutes",
          "type": "uint256"
        }
      ],
      "name": "startVotingSession",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tallyVotes",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_proposalId",
          "type": "uint256"
        }
      ],
      "name": "vote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingEndTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "winningProposalId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "workflowStatus",
      "outputs": [
        {
          "internalType": "enum Voting.WorkflowStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
428
  ],
429 430
  "bytecode": "0x608060405234801561001057600080fd5b50604051611c5d380380611c5d83398101604081905261002f916100c8565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006781610078565b50506003805460ff191690556100f8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100da57600080fd5b81516001600160a01b03811681146100f157600080fd5b9392505050565b611b56806101076000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638e7ea5b2116100c3578063a7bfab161161007c578063a7bfab161461027f578063c64963c514610287578063c7f758a814610290578063d4f50f98146102b1578063dff7d2c7146102e1578063f2fde38b146102ea57600080fd5b80638e7ea5b2146102185780638f60c0e21461022f5780639823004f1461023757806398e527d31461024a5780639980a55a14610252578063a1edffa21461026557600080fd5b806338db6dd31161011557806338db6dd3146101c95780636c297445146101dc578063715018a6146101e4578063856e698c146101ec5780638bc6a6dd146101f45780638da5cb5b1461020757600080fd5b80630121b93f146101525780631ea736e0146101675780632b293768146101835780632f95355b146101ae578063378a2178146101c1575b600080fd5b6101656101603660046116cc565b6102fd565b005b61017060065481565b6040519081526020015b60405180910390f35b6101966101913660046116e5565b610515565b6040516001600160a01b03909116815260200161017a565b6101656101bc366004611715565b610563565b6101656107a8565b6101656101d73660046116e5565b6108da565b610165610a22565b610165610ae9565b610165610afd565b6101656102023660046116cc565b610bfc565b6000546001600160a01b0316610196565b610220610cd4565b60405161017a939291906117cf565b610165610e3b565b6101656102453660046116e5565b610ede565b600254610170565b6101656102603660046116cc565b6112a7565b6003546102729060ff1681565b60405161017a9190611830565b610165611375565b61017060045481565b6102a361029e3660046116cc565b61140c565b60405161017a929190611844565b6102c46102bf3660046116e5565b61153f565b60408051931515845291151560208401529082015260600161017a565b61017060055481565b6101656102f83660046116e5565b6115c3565b3360009081526001602052604090205460ff166103355760405162461bcd60e51b815260040161032c90611866565b60405180910390fd5b6003805460ff16600581111561034d5761034d6117f8565b1461036a5760405162461bcd60e51b815260040161032c906118ac565b33600090815260016020526040902054610100900460ff16156103c55760405162461bcd60e51b8152602060048201526013602482015272566f7573206176657a2064656a6120766f746560681b604482015260640161032c565b60025481106104165760405162461bcd60e51b815260206004820152601b60248201527f4c612070726f706f736974696f6e206e27657869737465207061730000000000604482015260640161032c565b6006544211156104685760405162461bcd60e51b815260206004820152601f60248201527f4c6120706572696f646520646520766f746520657374207465726d696e656500604482015260640161032c565b336000908152600160208181526040808420805461ff001916610100178155909201849055600790529020546001600160a01b03166104d857600281815481106104b4576104b46118ef565b6000918252602082206001600290920201018054916104d28361191b565b91905055505b60408051338152602081018390527f4d99b957a2bc29a30ebd96a7be8e68fe50a3c701db28a91436490b7d53870ca491015b60405180910390a150565b3360009081526001602052604081205460ff166105445760405162461bcd60e51b815260040161032c90611866565b506001600160a01b039081166000908152600760205260409020541690565b3360009081526001602052604090205460ff166105925760405162461bcd60e51b815260040161032c90611866565b600160035460ff1660058111156105ab576105ab6117f8565b1461061e5760405162461bcd60e51b815260206004820152603d60248201527f4c612073657373696f6e206427656e72656769737472656d656e74206465732060448201527f70726f706f736974696f6e73206e276573742070617320616374697665000000606482015260840161032c565b806106775760405162461bcd60e51b8152602060048201526024808201527f4c61206465736372697074696f6e206e652070657574207061732065747265206044820152637669646560e01b606482015260840161032c565b6005544211156106ef5760405162461bcd60e51b815260206004820152603960248201527f4c6120706572696f6465206427656e72656769737472656d656e74206465732060448201527f70726f706f736974696f6e7320657374207465726d696e656500000000000000606482015260840161032c565b6040805160606020601f850181900402820181018352918101838152600292829190869086908190850183828082843760009201829052509385525050506020918201819052835460018101855593815220815191926002020190819061075690826119d3565b50602091909101516001918201556002547f92e393e9b54e2f801d3ea4beb0c5e71a21cc34a5d34b77d0fb8a3aa1650dc18f9161079291611a92565b6040519081526020015b60405180910390a15050565b6107b0611601565b600460035460ff1660058111156107c9576107c96117f8565b146108315760405162461bcd60e51b815260206004820152603260248201527f4c6520636f6d70746167652064657320766f746573206e652070657574207061604482015271399032b731b7b9329031b7b6b6b2b731b2b960711b606482015260840161032c565b6003805460ff19811660051790915560ff166000805b6002548110156108b4578160028281548110610865576108656118ef565b90600052602060002090600202016001015411156108ac5760028181548110610890576108906118ef565b9060005260206000209060020201600101549150806004819055505b600101610847565b50600354604051600080516020611b018339815191529161079c91859160ff1690611aa5565b6108e2611601565b600060035460ff1660058111156108fb576108fb6117f8565b146109645760405162461bcd60e51b815260206004820152603360248201527f4c6120706572696f6465206427696e736372697074696f6e2064657320656c6560448201527263746575727320657374207465726d696e656560681b606482015260840161032c565b6001600160a01b03811660009081526001602052604090205460ff16156109cd5760405162461bcd60e51b815260206004820152601e60248201527f4c27656c656374657572206573742064656a6120656e72656769737472650000604482015260640161032c565b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527fb6be2187d059cc2a55fe29e0e503b566e1e0f8c8780096e185429350acffd3dd910161050a565b610a2a611601565b600160035460ff166005811115610a4357610a436117f8565b14610aab5760405162461bcd60e51b815260206004820152603260248201527f496d706f737369626c65206465207465726d696e6572206c612073657373696f6044820152711b881909d95b9c9959da5cdd1c995b595b9d60721b606482015260840161032c565b6003805460ff81169160029160ff19166001835b0217905550600354604051600080516020611b018339815191529161050a91849160ff1690611aa5565b610af1611601565b610afb600061162e565b565b610b05611601565b600560035460ff166005811115610b1e57610b1e6117f8565b14610b835760405162461bcd60e51b815260206004820152602f60248201527f496d706f737369626c65206465207265696e697469616c6973657220756e207660448201526e6f7465206e6f6e2d7465726d696e6560881b606482015260840161032c565b60005b600254811015610bd2576002805480610ba157610ba1611ac0565b60008281526020812060001990920191600283020190610bc1828261167e565b506000600191820155915501610b86565b506000600481815560058290556006919091556003805460ff811692919060ff1916600183610abf565b610c04611601565b600060035460ff166005811115610c1d57610c1d6117f8565b14610c855760405162461bcd60e51b815260206004820152603260248201527f496d706f737369626c652064652064656d6172726572206c612073657373696f6044820152711b881909d95b9c9959da5cdd1c995b595b9d60721b606482015260840161032c565b6003805460ff19811660011790915560ff16610ca282603c611ad6565b610cac9042611aed565b600555600354604051600080516020611b018339815191529161079c91849160ff1690611aa5565b6000606081600560035460ff166005811115610cf257610cf26117f8565b14610d545760405162461bcd60e51b815260206004820152602c60248201527f4c657320766f746573206e276f6e742070617320656e636f726520657465206360448201526b6f6d70746162696c6973657360a01b606482015260840161032c565b600454600260045481548110610d6c57610d6c6118ef565b9060005260206000209060020201600001600260045481548110610d9257610d926118ef565b906000526020600020906002020160010154818054610db09061194a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddc9061194a565b8015610e295780601f10610dfe57610100808354040283529160200191610e29565b820191906000526020600020905b815481529060010190602001808311610e0c57829003601f168201915b50505050509150925092509250909192565b600160035460ff166005811115610e5457610e546117f8565b148015610e62575060055442115b15610e9b5760038054600260ff198216811790925560405160ff90911691600080516020611b018339815191529161050a918491611aa5565b6003805460ff166005811115610eb357610eb36117f8565b148015610ec1575060065442115b15610afb576003805460ff81169160049160ff1916600183610abf565b3360009081526001602052604090205460ff16610f0d5760405162461bcd60e51b815260040161032c90611866565b6003805460ff166005811115610f2557610f256117f8565b14610f425760405162461bcd60e51b815260040161032c906118ac565b33600090815260016020526040902054610100900460ff1615610f9d5760405162461bcd60e51b8152602060048201526013602482015272566f7573206176657a2064656a6120766f746560681b604482015260640161032c565b336001600160a01b038216036110105760405162461bcd60e51b815260206004820152603260248201527f566f7573206e6520706f7576657a207061732064656c656775657220766f74726044820152716520766f7465206120766f75732d6d656d6560701b606482015260840161032c565b6001600160a01b03811660009081526001602052604090205460ff166110915760405162461bcd60e51b815260206004820152603060248201527f4c2761647265737365206369626c65206e276573742070617320756e20656c6560448201526f637465757220656e726567697374726560801b606482015260840161032c565b336000908152600760205260409020546001600160a01b0316156111015760405162461bcd60e51b815260206004820152602160248201527f566f7573206176657a2064656a612064656c6567756520766f74726520766f746044820152606560f81b606482015260840161032c565b805b6001600160a01b0381811660009081526007602052604090205416156111ad576001600160a01b038181166000908152600760205260409020543391160361118d5760405162461bcd60e51b815260206004820152601d60248201527f426f75636c652064652064656c65676174696f6e206465746563746565000000604482015260640161032c565b6001600160a01b0390811660009081526007602052604090205416611103565b33600090815260076020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526001909152902054610100900460ff16156112a3576001600160a01b038216600090815260016020819052604090912001546002805482908110611223576112236118ef565b6000918252602082206001600290920201018054916112418361191b565b909155505033600081815260016020818152604092839020805461ff001916610100178155909101849055815192835282018390527f4d99b957a2bc29a30ebd96a7be8e68fe50a3c701db28a91436490b7d53870ca4910160405180910390a1505b5050565b6112af611601565b600260035460ff1660058111156112c8576112c86117f8565b146113275760405162461bcd60e51b815260206004820152602960248201527f496d706f737369626c652064652064656d6172726572206c612073657373696f6044820152686e20646520766f746560b81b606482015260840161032c565b6003805460ff198116821790915560ff1661134382603c611ad6565b61134d9042611aed565b600655600354604051600080516020611b018339815191529161079c91849160ff1690611aa5565b61137d611601565b6003805460ff166005811115611395576113956117f8565b146113f45760405162461bcd60e51b815260206004820152602960248201527f496d706f737369626c65206465207465726d696e6572206c612073657373696f6044820152686e20646520766f746560b81b606482015260840161032c565b6003805460ff81169160049160ff1916600183610abf565b60025460609060009083106114635760405162461bcd60e51b815260206004820152601b60248201527f4c612070726f706f736974696f6e206e27657869737465207061730000000000604482015260640161032c565b600060028481548110611478576114786118ef565b90600052602060002090600202016040518060400160405290816000820180546114a19061194a565b80601f01602080910402602001604051908101604052809291908181526020018280546114cd9061194a565b801561151a5780601f106114ef5761010080835404028352916020019161151a565b820191906000526020600020905b8154815290600101906020018083116114fd57829003601f168201915b5050509183525050600191909101546020918201528151910151909590945092505050565b336000908152600160205260408120548190819060ff166115725760405162461bcd60e51b815260040161032c90611866565b5050506001600160a01b03166000908152600160208181526040928390208351606081018552815460ff80821615158084526101009092041615159382018490529190930154929093018290529192565b6115cb611601565b6001600160a01b0381166115f557604051631e4fbdf760e01b81526000600482015260240161032c565b6115fe8161162e565b50565b6000546001600160a01b03163314610afb5760405163118cdaa760e01b815233600482015260240161032c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b50805461168a9061194a565b6000825580601f1061169a575050565b601f0160209004906000526020600020908101906115fe91905b808211156116c857600081556001016116b4565b5090565b6000602082840312156116de57600080fd5b5035919050565b6000602082840312156116f757600080fd5b81356001600160a01b038116811461170e57600080fd5b9392505050565b6000806020838503121561172857600080fd5b823567ffffffffffffffff81111561173f57600080fd5b8301601f8101851361175057600080fd5b803567ffffffffffffffff81111561176757600080fd5b85602082840101111561177957600080fd5b6020919091019590945092505050565b6000815180845260005b818110156117af57602081850181015186830182015201611793565b506000602082860101526020601f19601f83011685010191505092915050565b8381526060602082015260006117e86060830185611789565b9050826040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b6006811061182c57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161183e828461180e565b92915050565b6040815260006118576040830185611789565b90508260208301529392505050565b60208082526026908201527f566f7573206e27657465732070617320756e20656c65637465757220656e726560408201526567697374726560d01b606082015260800190565b60208082526023908201527f4c612073657373696f6e20646520766f7465206e27657374207061732061637460408201526269766560e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161192d5761192d611905565b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061195e57607f821691505b60208210810361197e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119ce57806000526020600020601f840160051c810160208510156119ab5750805b601f840160051c820191505b818110156119cb57600081556001016119b7565b50505b505050565b815167ffffffffffffffff8111156119ed576119ed611934565b611a01816119fb845461194a565b84611984565b6020601f821160018114611a355760008315611a1d5750848201515b600019600385901b1c1916600184901b1784556119cb565b600084815260208120601f198516915b82811015611a655787850151825560209485019460019092019101611a45565b5084821015611a835786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b8181038181111561183e5761183e611905565b60408101611ab3828561180e565b61170e602083018461180e565b634e487b7160e01b600052603160045260246000fd5b808202811582820484141761183e5761183e611905565b8082018082111561183e5761183e61190556fe0a97a4ee45751e2abf3e4fc8946939630b11b371ea8ae39ccdc3056e98f5cc3fa26469706673582212202bbbc539b8efe7a37d1fa77ad867a16b22e5522b4c4e02c4436b49da979f64c664736f6c634300081d0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638e7ea5b2116100c3578063a7bfab161161007c578063a7bfab161461027f578063c64963c514610287578063c7f758a814610290578063d4f50f98146102b1578063dff7d2c7146102e1578063f2fde38b146102ea57600080fd5b80638e7ea5b2146102185780638f60c0e21461022f5780639823004f1461023757806398e527d31461024a5780639980a55a14610252578063a1edffa21461026557600080fd5b806338db6dd31161011557806338db6dd3146101c95780636c297445146101dc578063715018a6146101e4578063856e698c146101ec5780638bc6a6dd146101f45780638da5cb5b1461020757600080fd5b80630121b93f146101525780631ea736e0146101675780632b293768146101835780632f95355b146101ae578063378a2178146101c1575b600080fd5b6101656101603660046116cc565b6102fd565b005b61017060065481565b6040519081526020015b60405180910390f35b6101966101913660046116e5565b610515565b6040516001600160a01b03909116815260200161017a565b6101656101bc366004611715565b610563565b6101656107a8565b6101656101d73660046116e5565b6108da565b610165610a22565b610165610ae9565b610165610afd565b6101656102023660046116cc565b610bfc565b6000546001600160a01b0316610196565b610220610cd4565b60405161017a939291906117cf565b610165610e3b565b6101656102453660046116e5565b610ede565b600254610170565b6101656102603660046116cc565b6112a7565b6003546102729060ff1681565b60405161017a9190611830565b610165611375565b61017060045481565b6102a361029e3660046116cc565b61140c565b60405161017a929190611844565b6102c46102bf3660046116e5565b61153f565b60408051931515845291151560208401529082015260600161017a565b61017060055481565b6101656102f83660046116e5565b6115c3565b3360009081526001602052604090205460ff166103355760405162461bcd60e51b815260040161032c90611866565b60405180910390fd5b6003805460ff16600581111561034d5761034d6117f8565b1461036a5760405162461bcd60e51b815260040161032c906118ac565b33600090815260016020526040902054610100900460ff16156103c55760405162461bcd60e51b8152602060048201526013602482015272566f7573206176657a2064656a6120766f746560681b604482015260640161032c565b60025481106104165760405162461bcd60e51b815260206004820152601b60248201527f4c612070726f706f736974696f6e206e27657869737465207061730000000000604482015260640161032c565b6006544211156104685760405162461bcd60e51b815260206004820152601f60248201527f4c6120706572696f646520646520766f746520657374207465726d696e656500604482015260640161032c565b336000908152600160208181526040808420805461ff001916610100178155909201849055600790529020546001600160a01b03166104d857600281815481106104b4576104b46118ef565b6000918252602082206001600290920201018054916104d28361191b565b91905055505b60408051338152602081018390527f4d99b957a2bc29a30ebd96a7be8e68fe50a3c701db28a91436490b7d53870ca491015b60405180910390a150565b3360009081526001602052604081205460ff166105445760405162461bcd60e51b815260040161032c90611866565b506001600160a01b039081166000908152600760205260409020541690565b3360009081526001602052604090205460ff166105925760405162461bcd60e51b815260040161032c90611866565b600160035460ff1660058111156105ab576105ab6117f8565b1461061e5760405162461bcd60e51b815260206004820152603d60248201527f4c612073657373696f6e206427656e72656769737472656d656e74206465732060448201527f70726f706f736974696f6e73206e276573742070617320616374697665000000606482015260840161032c565b806106775760405162461bcd60e51b8152602060048201526024808201527f4c61206465736372697074696f6e206e652070657574207061732065747265206044820152637669646560e01b606482015260840161032c565b6005544211156106ef5760405162461bcd60e51b815260206004820152603960248201527f4c6120706572696f6465206427656e72656769737472656d656e74206465732060448201527f70726f706f736974696f6e7320657374207465726d696e656500000000000000606482015260840161032c565b6040805160606020601f850181900402820181018352918101838152600292829190869086908190850183828082843760009201829052509385525050506020918201819052835460018101855593815220815191926002020190819061075690826119d3565b50602091909101516001918201556002547f92e393e9b54e2f801d3ea4beb0c5e71a21cc34a5d34b77d0fb8a3aa1650dc18f9161079291611a92565b6040519081526020015b60405180910390a15050565b6107b0611601565b600460035460ff1660058111156107c9576107c96117f8565b146108315760405162461bcd60e51b815260206004820152603260248201527f4c6520636f6d70746167652064657320766f746573206e652070657574207061604482015271399032b731b7b9329031b7b6b6b2b731b2b960711b606482015260840161032c565b6003805460ff19811660051790915560ff166000805b6002548110156108b4578160028281548110610865576108656118ef565b90600052602060002090600202016001015411156108ac5760028181548110610890576108906118ef565b9060005260206000209060020201600101549150806004819055505b600101610847565b50600354604051600080516020611b018339815191529161079c91859160ff1690611aa5565b6108e2611601565b600060035460ff1660058111156108fb576108fb6117f8565b146109645760405162461bcd60e51b815260206004820152603360248201527f4c6120706572696f6465206427696e736372697074696f6e2064657320656c6560448201527263746575727320657374207465726d696e656560681b606482015260840161032c565b6001600160a01b03811660009081526001602052604090205460ff16156109cd5760405162461bcd60e51b815260206004820152601e60248201527f4c27656c656374657572206573742064656a6120656e72656769737472650000604482015260640161032c565b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527fb6be2187d059cc2a55fe29e0e503b566e1e0f8c8780096e185429350acffd3dd910161050a565b610a2a611601565b600160035460ff166005811115610a4357610a436117f8565b14610aab5760405162461bcd60e51b815260206004820152603260248201527f496d706f737369626c65206465207465726d696e6572206c612073657373696f6044820152711b881909d95b9c9959da5cdd1c995b595b9d60721b606482015260840161032c565b6003805460ff81169160029160ff19166001835b0217905550600354604051600080516020611b018339815191529161050a91849160ff1690611aa5565b610af1611601565b610afb600061162e565b565b610b05611601565b600560035460ff166005811115610b1e57610b1e6117f8565b14610b835760405162461bcd60e51b815260206004820152602f60248201527f496d706f737369626c65206465207265696e697469616c6973657220756e207660448201526e6f7465206e6f6e2d7465726d696e6560881b606482015260840161032c565b60005b600254811015610bd2576002805480610ba157610ba1611ac0565b60008281526020812060001990920191600283020190610bc1828261167e565b506000600191820155915501610b86565b506000600481815560058290556006919091556003805460ff811692919060ff1916600183610abf565b610c04611601565b600060035460ff166005811115610c1d57610c1d6117f8565b14610c855760405162461bcd60e51b815260206004820152603260248201527f496d706f737369626c652064652064656d6172726572206c612073657373696f6044820152711b881909d95b9c9959da5cdd1c995b595b9d60721b606482015260840161032c565b6003805460ff19811660011790915560ff16610ca282603c611ad6565b610cac9042611aed565b600555600354604051600080516020611b018339815191529161079c91849160ff1690611aa5565b6000606081600560035460ff166005811115610cf257610cf26117f8565b14610d545760405162461bcd60e51b815260206004820152602c60248201527f4c657320766f746573206e276f6e742070617320656e636f726520657465206360448201526b6f6d70746162696c6973657360a01b606482015260840161032c565b600454600260045481548110610d6c57610d6c6118ef565b9060005260206000209060020201600001600260045481548110610d9257610d926118ef565b906000526020600020906002020160010154818054610db09061194a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddc9061194a565b8015610e295780601f10610dfe57610100808354040283529160200191610e29565b820191906000526020600020905b815481529060010190602001808311610e0c57829003601f168201915b50505050509150925092509250909192565b600160035460ff166005811115610e5457610e546117f8565b148015610e62575060055442115b15610e9b5760038054600260ff198216811790925560405160ff90911691600080516020611b018339815191529161050a918491611aa5565b6003805460ff166005811115610eb357610eb36117f8565b148015610ec1575060065442115b15610afb576003805460ff81169160049160ff1916600183610abf565b3360009081526001602052604090205460ff16610f0d5760405162461bcd60e51b815260040161032c90611866565b6003805460ff166005811115610f2557610f256117f8565b14610f425760405162461bcd60e51b815260040161032c906118ac565b33600090815260016020526040902054610100900460ff1615610f9d5760405162461bcd60e51b8152602060048201526013602482015272566f7573206176657a2064656a6120766f746560681b604482015260640161032c565b336001600160a01b038216036110105760405162461bcd60e51b815260206004820152603260248201527f566f7573206e6520706f7576657a207061732064656c656775657220766f74726044820152716520766f7465206120766f75732d6d656d6560701b606482015260840161032c565b6001600160a01b03811660009081526001602052604090205460ff166110915760405162461bcd60e51b815260206004820152603060248201527f4c2761647265737365206369626c65206e276573742070617320756e20656c6560448201526f637465757220656e726567697374726560801b606482015260840161032c565b336000908152600760205260409020546001600160a01b0316156111015760405162461bcd60e51b815260206004820152602160248201527f566f7573206176657a2064656a612064656c6567756520766f74726520766f746044820152606560f81b606482015260840161032c565b805b6001600160a01b0381811660009081526007602052604090205416156111ad576001600160a01b038181166000908152600760205260409020543391160361118d5760405162461bcd60e51b815260206004820152601d60248201527f426f75636c652064652064656c65676174696f6e206465746563746565000000604482015260640161032c565b6001600160a01b0390811660009081526007602052604090205416611103565b33600090815260076020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526001909152902054610100900460ff16156112a3576001600160a01b038216600090815260016020819052604090912001546002805482908110611223576112236118ef565b6000918252602082206001600290920201018054916112418361191b565b909155505033600081815260016020818152604092839020805461ff001916610100178155909101849055815192835282018390527f4d99b957a2bc29a30ebd96a7be8e68fe50a3c701db28a91436490b7d53870ca4910160405180910390a1505b5050565b6112af611601565b600260035460ff1660058111156112c8576112c86117f8565b146113275760405162461bcd60e51b815260206004820152602960248201527f496d706f737369626c652064652064656d6172726572206c612073657373696f6044820152686e20646520766f746560b81b606482015260840161032c565b6003805460ff198116821790915560ff1661134382603c611ad6565b61134d9042611aed565b600655600354604051600080516020611b018339815191529161079c91849160ff1690611aa5565b61137d611601565b6003805460ff166005811115611395576113956117f8565b146113f45760405162461bcd60e51b815260206004820152602960248201527f496d706f737369626c65206465207465726d696e6572206c612073657373696f6044820152686e20646520766f746560b81b606482015260840161032c565b6003805460ff81169160049160ff1916600183610abf565b60025460609060009083106114635760405162461bcd60e51b815260206004820152601b60248201527f4c612070726f706f736974696f6e206e27657869737465207061730000000000604482015260640161032c565b600060028481548110611478576114786118ef565b90600052602060002090600202016040518060400160405290816000820180546114a19061194a565b80601f01602080910402602001604051908101604052809291908181526020018280546114cd9061194a565b801561151a5780601f106114ef5761010080835404028352916020019161151a565b820191906000526020600020905b8154815290600101906020018083116114fd57829003601f168201915b5050509183525050600191909101546020918201528151910151909590945092505050565b336000908152600160205260408120548190819060ff166115725760405162461bcd60e51b815260040161032c90611866565b5050506001600160a01b03166000908152600160208181526040928390208351606081018552815460ff80821615158084526101009092041615159382018490529190930154929093018290529192565b6115cb611601565b6001600160a01b0381166115f557604051631e4fbdf760e01b81526000600482015260240161032c565b6115fe8161162e565b50565b6000546001600160a01b03163314610afb5760405163118cdaa760e01b815233600482015260240161032c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b50805461168a9061194a565b6000825580601f1061169a575050565b601f0160209004906000526020600020908101906115fe91905b808211156116c857600081556001016116b4565b5090565b6000602082840312156116de57600080fd5b5035919050565b6000602082840312156116f757600080fd5b81356001600160a01b038116811461170e57600080fd5b9392505050565b6000806020838503121561172857600080fd5b823567ffffffffffffffff81111561173f57600080fd5b8301601f8101851361175057600080fd5b803567ffffffffffffffff81111561176757600080fd5b85602082840101111561177957600080fd5b6020919091019590945092505050565b6000815180845260005b818110156117af57602081850181015186830182015201611793565b506000602082860101526020601f19601f83011685010191505092915050565b8381526060602082015260006117e86060830185611789565b9050826040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b6006811061182c57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161183e828461180e565b92915050565b6040815260006118576040830185611789565b90508260208301529392505050565b60208082526026908201527f566f7573206e27657465732070617320756e20656c65637465757220656e726560408201526567697374726560d01b606082015260800190565b60208082526023908201527f4c612073657373696f6e20646520766f7465206e27657374207061732061637460408201526269766560e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161192d5761192d611905565b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061195e57607f821691505b60208210810361197e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119ce57806000526020600020601f840160051c810160208510156119ab5750805b601f840160051c820191505b818110156119cb57600081556001016119b7565b50505b505050565b815167ffffffffffffffff8111156119ed576119ed611934565b611a01816119fb845461194a565b84611984565b6020601f821160018114611a355760008315611a1d5750848201515b600019600385901b1c1916600184901b1784556119cb565b600084815260208120601f198516915b82811015611a655787850151825560209485019460019092019101611a45565b5084821015611a835786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b8181038181111561183e5761183e611905565b60408101611ab3828561180e565b61170e602083018461180e565b634e487b7160e01b600052603160045260246000fd5b808202811582820484141761183e5761183e611905565b8082018082111561183e5761183e61190556fe0a97a4ee45751e2abf3e4fc8946939630b11b371ea8ae39ccdc3056e98f5cc3fa26469706673582212202bbbc539b8efe7a37d1fa77ad867a16b22e5522b4c4e02c4436b49da979f64c664736f6c634300081d0033",
431 432 433
  "linkReferences": {},
  "deployedLinkReferences": {}
}