{
  "_format": "hh-sol-artifact-1",
  "contractName": "TokenVesting",
  "sourceName": "contracts/TokenVesting.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "beneficiary",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "start",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "cliffDuration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "revocable",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "TokenVestingRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TokensReleased",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "beneficiary",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cliff",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "duration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "release",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "released",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "revocable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "revoke",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "revoked",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "start",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051610f41380380610f41833981810160405260a081101561003357600080fd5b50805160208201516040830151606084015160809094015192939192909190600061005c610225565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0385166100eb5760405162461bcd60e51b815260040180806020018281038252602d815260200180610ee9602d913960400191505060405180910390fd5b8183111561012a5760405162461bcd60e51b815260040180806020018281038252602b815260200180610f16602b913960400191505060405180910390fd5b6000821161017f576040805162461bcd60e51b815260206004820152601b60248201527f546f6b656e56657374696e673a206475726174696f6e20697320300000000000604482015290519081900360640190fd5b42610197838661022960201b6107701790919060201c565b116101d35760405162461bcd60e51b815260040180806020018281038252602f815260200180610eba602f913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0387161790556005805460ff191682151517905560048290556102168484610229602090811b61077017901c565b60025550505060035550610287565b3390565b81810181811015610281576040805162461bcd60e51b815260206004820152601660248201527f536166654d6174683a20416464204f766572666c6f7700000000000000000000604482015290519081900360640190fd5b92915050565b610c24806102966000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063872a781011610071578063872a7810146101555780638da5cb5b146101715780639852595c14610179578063be9a65551461019f578063f2fde38b146101a7578063fa01dc06146101cd576100b4565b80630fb5a6b4146100b957806313d033c0146100d357806319165587146100db57806338af3eed14610103578063715018a61461012757806374a8f1031461012f575b600080fd5b6100c16101f3565b60408051918252519081900360200190f35b6100c16101f9565b610101600480360360208110156100f157600080fd5b50356001600160a01b03166101ff565b005b61010b6102f8565b604080516001600160a01b039092168252519081900360200190f35b610101610307565b6101016004803603602081101561014557600080fd5b50356001600160a01b03166103c5565b61015d610601565b604080519115158252519081900360200190f35b61010b61060a565b6100c16004803603602081101561018f57600080fd5b50356001600160a01b0316610619565b6100c1610638565b610101600480360360208110156101bd57600080fd5b50356001600160a01b031661063e565b61015d600480360360208110156101e357600080fd5b50356001600160a01b0316610752565b60045490565b60025490565b600061020a826107c7565b905060008111610261576040805162461bcd60e51b815260206004820152601f60248201527f546f6b656e56657374696e673a206e6f20746f6b656e73206172652064756500604482015290519081900360640190fd5b6001600160a01b0382166000908152600660205260409020546102849082610770565b6001600160a01b038084166000818152600660205260409020929092556001546102b0929116836107f3565b604080516001600160a01b03841681526020810183905281517fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df93179929181900390910190a15050565b6001546001600160a01b031690565b61030f61095d565b6001600160a01b031661032061060a565b6001600160a01b03161461037b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6103cd61095d565b6001600160a01b03166103de61060a565b6001600160a01b031614610439576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460ff16610490576040805162461bcd60e51b815260206004820152601b60248201527f546f6b656e56657374696e673a2063616e6e6f74207265766f6b650000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16156104e85760405162461bcd60e51b8152600401808060200182810382526023815260200180610bcc6023913960400191505060405180910390fd5b6000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561053757600080fd5b505afa15801561054b573d6000803e3d6000fd5b505050506040513d602081101561056157600080fd5b505190506000610570836107c7565b9050600061057e8383610961565b6001600160a01b0385166000908152600760205260409020805460ff1916600117905590506105bf6105ae61060a565b6001600160a01b03861690836107f3565b604080516001600160a01b038616815290517f39983c6d4d174a7aee564f449d4a5c3c7ac9649d72b7793c56901183996f8af69181900360200190a150505050565b60055460ff1690565b6000546001600160a01b031690565b6001600160a01b0381166000908152600660205260409020545b919050565b60035490565b61064661095d565b6001600160a01b031661065761060a565b6001600160a01b0316146106b2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166106f75760405162461bcd60e51b8152600401808060200182810382526026815260200180610ba66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526007602052604090205460ff1690565b818101818110156107c1576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a20416464204f766572666c6f7760501b604482015290519081900360640190fd5b92915050565b6001600160a01b0381166000908152600660205260408120546107c1906107ed846109af565b90610961565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106108705780518252601f199092019160209182019101610851565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108d2576040519150601f19603f3d011682016040523d82523d6000602084013e6108d7565b606091505b5091509150818015610905575080511580610905575080806020019051602081101561090257600080fd5b50515b610956576040805162461bcd60e51b815260206004820152601a60248201527f5361666545524332303a205472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b5050505050565b3390565b808203828111156107c1576040805162461bcd60e51b8152602060048201526013602482015272536166654d6174683a20556e646572666c6f7760681b604482015290519081900360640190fd5b600080826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156109ff57600080fd5b505afa158015610a13573d6000803e3d6000fd5b505050506040513d6020811015610a2957600080fd5b50516001600160a01b03841660009081526006602052604081205491925090610a53908390610770565b9050600254421015610a6a57600092505050610633565b600454600354610a7991610770565b42101580610a9f57506001600160a01b03841660009081526007602052604090205460ff165b15610aad5791506106339050565b610ad8600454610ad2610acb6003544261096190919063ffffffff16565b8490610ae1565b90610b46565b92505050610633565b6000811580610afc57505080820282828281610af957fe5b04145b6107c1576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a204d756c204f766572666c6f7760501b604482015290519081900360640190fd5b6000808211610b94576040805162461bcd60e51b8152602060048201526015602482015274536166654d6174683a20446976206279205a65726f60581b604482015290519081900360640190fd5b818381610b9d57fe5b04939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373546f6b656e56657374696e673a20746f6b656e20616c7265616479207265766f6b6564a26469706673582212201fc250eef90dffccbe6b1381f7ccd97d374dc8ed6bd85c4ba851ce2374611e3464736f6c634300060c0033546f6b656e56657374696e673a2066696e616c2074696d65206973206265666f72652063757272656e742074696d65546f6b656e56657374696e673a2062656e656669636961727920697320746865207a65726f2061646472657373546f6b656e56657374696e673a20636c696666206973206c6f6e676572207468616e206475726174696f6e",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063872a781011610071578063872a7810146101555780638da5cb5b146101715780639852595c14610179578063be9a65551461019f578063f2fde38b146101a7578063fa01dc06146101cd576100b4565b80630fb5a6b4146100b957806313d033c0146100d357806319165587146100db57806338af3eed14610103578063715018a61461012757806374a8f1031461012f575b600080fd5b6100c16101f3565b60408051918252519081900360200190f35b6100c16101f9565b610101600480360360208110156100f157600080fd5b50356001600160a01b03166101ff565b005b61010b6102f8565b604080516001600160a01b039092168252519081900360200190f35b610101610307565b6101016004803603602081101561014557600080fd5b50356001600160a01b03166103c5565b61015d610601565b604080519115158252519081900360200190f35b61010b61060a565b6100c16004803603602081101561018f57600080fd5b50356001600160a01b0316610619565b6100c1610638565b610101600480360360208110156101bd57600080fd5b50356001600160a01b031661063e565b61015d600480360360208110156101e357600080fd5b50356001600160a01b0316610752565b60045490565b60025490565b600061020a826107c7565b905060008111610261576040805162461bcd60e51b815260206004820152601f60248201527f546f6b656e56657374696e673a206e6f20746f6b656e73206172652064756500604482015290519081900360640190fd5b6001600160a01b0382166000908152600660205260409020546102849082610770565b6001600160a01b038084166000818152600660205260409020929092556001546102b0929116836107f3565b604080516001600160a01b03841681526020810183905281517fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df93179929181900390910190a15050565b6001546001600160a01b031690565b61030f61095d565b6001600160a01b031661032061060a565b6001600160a01b03161461037b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6103cd61095d565b6001600160a01b03166103de61060a565b6001600160a01b031614610439576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460ff16610490576040805162461bcd60e51b815260206004820152601b60248201527f546f6b656e56657374696e673a2063616e6e6f74207265766f6b650000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16156104e85760405162461bcd60e51b8152600401808060200182810382526023815260200180610bcc6023913960400191505060405180910390fd5b6000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561053757600080fd5b505afa15801561054b573d6000803e3d6000fd5b505050506040513d602081101561056157600080fd5b505190506000610570836107c7565b9050600061057e8383610961565b6001600160a01b0385166000908152600760205260409020805460ff1916600117905590506105bf6105ae61060a565b6001600160a01b03861690836107f3565b604080516001600160a01b038616815290517f39983c6d4d174a7aee564f449d4a5c3c7ac9649d72b7793c56901183996f8af69181900360200190a150505050565b60055460ff1690565b6000546001600160a01b031690565b6001600160a01b0381166000908152600660205260409020545b919050565b60035490565b61064661095d565b6001600160a01b031661065761060a565b6001600160a01b0316146106b2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166106f75760405162461bcd60e51b8152600401808060200182810382526026815260200180610ba66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526007602052604090205460ff1690565b818101818110156107c1576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a20416464204f766572666c6f7760501b604482015290519081900360640190fd5b92915050565b6001600160a01b0381166000908152600660205260408120546107c1906107ed846109af565b90610961565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106108705780518252601f199092019160209182019101610851565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108d2576040519150601f19603f3d011682016040523d82523d6000602084013e6108d7565b606091505b5091509150818015610905575080511580610905575080806020019051602081101561090257600080fd5b50515b610956576040805162461bcd60e51b815260206004820152601a60248201527f5361666545524332303a205472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b5050505050565b3390565b808203828111156107c1576040805162461bcd60e51b8152602060048201526013602482015272536166654d6174683a20556e646572666c6f7760681b604482015290519081900360640190fd5b600080826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156109ff57600080fd5b505afa158015610a13573d6000803e3d6000fd5b505050506040513d6020811015610a2957600080fd5b50516001600160a01b03841660009081526006602052604081205491925090610a53908390610770565b9050600254421015610a6a57600092505050610633565b600454600354610a7991610770565b42101580610a9f57506001600160a01b03841660009081526007602052604090205460ff165b15610aad5791506106339050565b610ad8600454610ad2610acb6003544261096190919063ffffffff16565b8490610ae1565b90610b46565b92505050610633565b6000811580610afc57505080820282828281610af957fe5b04145b6107c1576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a204d756c204f766572666c6f7760501b604482015290519081900360640190fd5b6000808211610b94576040805162461bcd60e51b8152602060048201526015602482015274536166654d6174683a20446976206279205a65726f60581b604482015290519081900360640190fd5b818381610b9d57fe5b04939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373546f6b656e56657374696e673a20746f6b656e20616c7265616479207265766f6b6564a26469706673582212201fc250eef90dffccbe6b1381f7ccd97d374dc8ed6bd85c4ba851ce2374611e3464736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
