{
  "_format": "hh-sol-artifact-1",
  "contractName": "UpgradeScheme",
  "sourceName": "contracts/universalSchemes/UpgradeScheme.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_intVoteInterface",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newUpgradeScheme",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_params",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "ChangeUpgradeSchemeProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_intVoteInterface",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newController",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "NewUpgradeProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "ProposalDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "_param",
          "type": "int256"
        }
      ],
      "name": "ProposalExecuted",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_stakingToken",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "balanceOfStakingToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "burnReputation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_param",
          "type": "int256"
        }
      ],
      "name": "executeProposal",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_voteParams",
          "type": "bytes32"
        },
        {
          "internalType": "contract IntVoteInterface",
          "name": "_intVote",
          "type": "address"
        }
      ],
      "name": "getParametersHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "getTotalReputationSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "mintReputation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "organizationsProposals",
      "outputs": [
        {
          "internalType": "address",
          "name": "upgradeContract",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "params",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "proposalType",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "parameters",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "voteParams",
          "type": "bytes32"
        },
        {
          "internalType": "contract IntVoteInterface",
          "name": "intVote",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposalsInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "contract Avatar",
          "name": "avatar",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_scheme",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_params",
          "type": "bytes32"
        },
        {
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "proposeChangeUpgradingScheme",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_newController",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "proposeUpgrade",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "reputationOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_voteParams",
          "type": "bytes32"
        },
        {
          "internalType": "contract IntVoteInterface",
          "name": "_intVote",
          "type": "address"
        }
      ],
      "name": "setParameters",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_stakingToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "stakingTokenTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611c97806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639588378e1161008c578063bea75f2811610066578063bea75f2814610382578063d29b5d2f146103be578063da816894146103f0578063f81f8bf6146104b6576100ea565b80639588378e146103025780639d4c162d1461032e578063b551c37314610365576100ea565b806360bdbb3f116100c857806360bdbb3f146101bf57806368e14dac146101eb5780636b8eb4031461021757806374ad5c3314610243576100ea565b806302506804146100ef57806306e3a9781461012d5780632453732a14610181575b600080fd5b61010c6004803603602081101561010557600080fd5b50356104e8565b604080519283526001600160a01b0390911660208301528051918290030190f35b6101596004803603604081101561014357600080fd5b506001600160a01b03813516906020013561050a565b604080516001600160a01b039094168452602084019290925282820152519081900360600190f35b6101ad6004803603604081101561019757600080fd5b50803590602001356001600160a01b031661053e565b60408051918252519081900360200190f35b61010c600480360360408110156101d557600080fd5b506001600160a01b038135169060200135610580565b6101ad6004803603604081101561020157600080fd5b50803590602001356001600160a01b03166105aa565b6101ad6004803603604081101561022d57600080fd5b506001600160a01b0381351690602001356105ef565b6101ad6004803603606081101561025957600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460018302840111640100000000831117156102c157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106ad945050505050565b6101ad6004803603604081101561031857600080fd5b506001600160a01b0381351690602001356108fe565b6103516004803603604081101561034457600080fd5b5080359060200135610b90565b604080519115158252519081900360200190f35b6101ad6004803603602081101561037b57600080fd5b503561100b565b6103516004803603608081101561039857600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611293565b610351600480360360608110156103d457600080fd5b508035906001600160a01b036020820135169060400135611435565b6101ad6004803603608081101561040657600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561044157600080fd5b82018360208201111561045357600080fd5b8035906020019184600183028401116401000000008311171561047557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506115ce945050505050565b610351600480360360608110156104cc57600080fd5b508035906001600160a01b0360208201351690604001356118b4565b600260205260009081526040902080546001909101546001600160a01b031682565b600160208181526000938452604080852090915291835291208054918101546002909101546001600160a01b039092169183565b6040805160208082018590526bffffffffffffffffffffffff19606085901b168284015282516034818403018152605490920190925280519101205b92915050565b6000602081815292815260408082209093529081522080546001909101546001600160a01b031682565b6000806105b7848461053e565b600081815260026020526040902085815560010180546001600160a01b0386166001600160a01b031990911617905591505092915050565b336000908152602081815260408083208484529091528120600101546001600160a01b03168061062357600091505061057a565b836001600160a01b03166370a08231826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561067957600080fd5b505afa15801561068d573d6000803e3d6000fd5b505050506040513d60208110156106a357600080fd5b5051949350505050565b60006106b7611c2b565b600260006106c487611a15565b8152602080820192909252604090810160009081208251808401845281548082526001909201546001600160a01b039081168287018190528551634439bdaf60e11b8152600260048201526024810194909452336044850152908b166064840152935190955091936388737b5e9260848084019382900301818787803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b505050506040513d602081101561077757600080fd5b50519050610783611c42565b5060408051606080820183526001600160a01b038881168084526000602080860182815260018789018181528f87168086528285528a86208c875285528a86208a5181546001600160a01b031916908a16178155935192840192909255516002909201919091558982015188519485528483018981528d51998601999099528c519798951696899691957f5378fb6111ece3f1032a0e9b60cb0caa886ec384da4300631570473ae5a4fbc0958f958f95919492939285019291860191908190849084905b8381101561085f578181015183820152602001610847565b50505050905090810190601f16801561088c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4506040805180820182524381526001600160a01b0397881660208083019182529485015189166000908152808652838120858252909552919093209251835551600190920180546001600160a01b0319169290961691909117909455509192915050565b336000908152602081815260408083208484528252808320600101548151638da5cb5b60e01b8152915185936001600160a01b03909216928392638da5cb5b92600480840193829003018186803b15801561095857600080fd5b505afa15801561096c573d6000803e3d6000fd5b505050506040513d602081101561098257600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03848116602483015291519190921691639be2faed916044808301926020929190829003018186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d60208110156109fe57600080fd5b5051610a4c576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b610a54611c2b565b5033600090815260208181526040808320878452825291829020825180840190935280548352600101546001600160a01b0316908201819052610a9b576000935050610b88565b80602001516001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015610ad857600080fd5b505afa158015610aec573d6000803e3d6000fd5b505050506040513d6020811015610b0257600080fd5b505181516040805163277166bf60e11b81526001600160a01b038a81166004830152602482019390935290519190921691634ee2cd7e916044808301926020929190829003018186803b158015610b5857600080fd5b505afa158015610b6c573d6000803e3d6000fd5b505050506040513d6020811015610b8257600080fd5b50519350505b505092915050565b3360009081526020818152604080832085845290915281206001015483906001600160a01b0316610bfd576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208784529091529020600101546001600160a01b0316610c2a611c42565b506001600160a01b0380821660009081526001602081815260408084208a8552825292839020835160608101855281549095168552918201549084015260020154908201819052610c7a57600080fd5b6001600160a01b03821660008181526001602081815260408084208b855290915280832080546001600160a01b03191681559182018390556002909101829055518892917f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe91a38460011415610fbf576000826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2557600080fd5b505afa158015610d39573d6000803e3d6000fd5b505050506040513d6020811015610d4f57600080fd5b5051604083015190915060011415610dec578151604080516308484f7f60e31b81526001600160a01b03928316600482015285831660248201529051918316916342427bf8916044808201926020929091908290030181600087803b158015610db757600080fd5b505af1158015610dcb573d6000803e3d6000fd5b505050506040513d6020811015610de157600080fd5b5051610dec57600080fd5b816040015160021415610fbd5760408051634da8f1ad60e11b81523060048201526001600160a01b0385811660248301529151600092841691639b51e35a916044808301926020929190829003018186803b158015610e4a57600080fd5b505afa158015610e5e573d6000803e3d6000fd5b505050506040513d6020811015610e7457600080fd5b505183516020858101516040805163e869d45f60e01b81526001600160a01b03948516600482015260248101929092526001600160e01b0319851660448301528884166064830152519394509185169263e869d45f9260848082019392918290030181600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b5051610f1d57600080fd5b82516001600160a01b03163014610fbb57816001600160a01b0316636c525b13856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015610f8657600080fd5b505af1158015610f9a573d6000803e3d6000fd5b505050506040513d6020811015610fb057600080fd5b5051610fbb57600080fd5b505b505b60408051868152905187916001600160a01b038516917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc09181900360200190a350600195945050505050565b336000908152602081815260408083208484528252808320600101548151638da5cb5b60e01b8152915185936001600160a01b03909216928392638da5cb5b92600480840193829003018186803b15801561106557600080fd5b505afa158015611079573d6000803e3d6000fd5b505050506040513d602081101561108f57600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03848116602483015291519190921691639be2faed916044808301926020929190829003018186803b1580156110e157600080fd5b505afa1580156110f5573d6000803e3d6000fd5b505050506040513d602081101561110b57600080fd5b5051611159576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b611161611c2b565b5033600090815260208181526040808320878452825291829020825180840190935280548352600101546001600160a01b03169082018190526111a857600093505061128c565b80602001516001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e557600080fd5b505afa1580156111f9573d6000803e3d6000fd5b505050506040513d602081101561120f57600080fd5b5051815160408051630981b24d60e41b81526004810192909252516001600160a01b039092169163981b24d091602480820192602092909190829003018186803b15801561125c57600080fd5b505afa158015611270573d6000803e3d6000fd5b505050506040513d602081101561128657600080fd5b50519350505b5050919050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b0316611300576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b03168061133457600092505061142c565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561136d57600080fd5b505afa158015611381573d6000803e3d6000fd5b505050506040513d602081101561139757600080fd5b50516040805163b9a04cdd60e01b81526001600160a01b038a8116600483015289811660248301526044820189905284811660648301529151919092169163b9a04cdd9160848083019260209291908290030181600087803b1580156113fc57600080fd5b505af1158015611410573d6000803e3d6000fd5b505050506040513d602081101561142657600080fd5b50519250505b50949350505050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b03166114a2576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b0316806114d65760009250506115c6565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561150f57600080fd5b505afa158015611523573d6000803e3d6000fd5b505050506040513d602081101561153957600080fd5b50516040805163757cca5960e11b8152600481018990526001600160a01b03888116602483015284811660448301529151919092169163eaf994b29160648083019260209291908290030181600087803b15801561159657600080fd5b505af11580156115aa573d6000803e3d6000fd5b505050506040513d60208110156115c057600080fd5b50519250505b509392505050565b60006115d8611c2b565b600260006115e588611a15565b8152602080820192909252604090810160009081208251808401845281548082526001909201546001600160a01b039081168287018190528551634439bdaf60e11b8152600260048201526024810194909452336044850152908c16606484015293519095509293919284926388737b5e926084808201939182900301818787803b15801561167357600080fd5b505af1158015611687573d6000803e3d6000fd5b505050506040513d602081101561169d57600080fd5b50516001600160a01b0389166000908152600160209081526040808320848452909152902060020154909150156116d357600080fd5b6116db611c42565b6040518060600160405280896001600160a01b031681526020018881526020016002815250905080600160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600084815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101556040820151816002015590505083602001516001600160a01b0316828a6001600160a01b03167f54db9b1773952b7528e7872ab8f8411827fe4d14f722aecf6dc0f0fd59de99b88b8b8b60405180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156118155781810151838201526020016117fd565b50505050905090810190601f1680156118425780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a4506040805180820182524381526001600160a01b03998a166020808301918252948b166000908152808652838120858252909552919093209251835551600190920180546001600160a01b03191692909816919091179096555093949350505050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b0316611921576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b0316806119555760009250506115c6565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561198e57600080fd5b505afa1580156119a2573d6000803e3d6000fd5b505050506040513d60208110156119b857600080fd5b505160408051630dd29a4f60e31b8152600481018990526001600160a01b038881166024830152848116604483015291519190921691636e94d2789160648083019260209291908290030181600087803b15801561159657600080fd5b6000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a5057600080fd5b505afa158015611a64573d6000803e3d6000fd5b505050506040513d6020811015611a7a57600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03858116602483015291519190921691639be2faed916044808301926020929190829003018186803b158015611acc57600080fd5b505afa158015611ae0573d6000803e3d6000fd5b505050506040513d6020811015611af657600080fd5b5051611b44576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b7d57600080fd5b505afa158015611b91573d6000803e3d6000fd5b505050506040513d6020811015611ba757600080fd5b505160408051630389aac160e31b81523060048201526001600160a01b03858116602483015291519190921691631c4d5608916044808301926020929190829003018186803b158015611bf957600080fd5b505afa158015611c0d573d6000803e3d6000fd5b505050506040513d6020811015611c2357600080fd5b505192915050565b604080518082019091526000808252602082015290565b60408051606081018252600080825260208201819052918101919091529056fea265627a7a723158203a7cf6cf693e999186e888dfd7840f0aeba6a7f81e6c7b79973923d9b5fbdf5364736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639588378e1161008c578063bea75f2811610066578063bea75f2814610382578063d29b5d2f146103be578063da816894146103f0578063f81f8bf6146104b6576100ea565b80639588378e146103025780639d4c162d1461032e578063b551c37314610365576100ea565b806360bdbb3f116100c857806360bdbb3f146101bf57806368e14dac146101eb5780636b8eb4031461021757806374ad5c3314610243576100ea565b806302506804146100ef57806306e3a9781461012d5780632453732a14610181575b600080fd5b61010c6004803603602081101561010557600080fd5b50356104e8565b604080519283526001600160a01b0390911660208301528051918290030190f35b6101596004803603604081101561014357600080fd5b506001600160a01b03813516906020013561050a565b604080516001600160a01b039094168452602084019290925282820152519081900360600190f35b6101ad6004803603604081101561019757600080fd5b50803590602001356001600160a01b031661053e565b60408051918252519081900360200190f35b61010c600480360360408110156101d557600080fd5b506001600160a01b038135169060200135610580565b6101ad6004803603604081101561020157600080fd5b50803590602001356001600160a01b03166105aa565b6101ad6004803603604081101561022d57600080fd5b506001600160a01b0381351690602001356105ef565b6101ad6004803603606081101561025957600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460018302840111640100000000831117156102c157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106ad945050505050565b6101ad6004803603604081101561031857600080fd5b506001600160a01b0381351690602001356108fe565b6103516004803603604081101561034457600080fd5b5080359060200135610b90565b604080519115158252519081900360200190f35b6101ad6004803603602081101561037b57600080fd5b503561100b565b6103516004803603608081101561039857600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611293565b610351600480360360608110156103d457600080fd5b508035906001600160a01b036020820135169060400135611435565b6101ad6004803603608081101561040657600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561044157600080fd5b82018360208201111561045357600080fd5b8035906020019184600183028401116401000000008311171561047557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506115ce945050505050565b610351600480360360608110156104cc57600080fd5b508035906001600160a01b0360208201351690604001356118b4565b600260205260009081526040902080546001909101546001600160a01b031682565b600160208181526000938452604080852090915291835291208054918101546002909101546001600160a01b039092169183565b6040805160208082018590526bffffffffffffffffffffffff19606085901b168284015282516034818403018152605490920190925280519101205b92915050565b6000602081815292815260408082209093529081522080546001909101546001600160a01b031682565b6000806105b7848461053e565b600081815260026020526040902085815560010180546001600160a01b0386166001600160a01b031990911617905591505092915050565b336000908152602081815260408083208484529091528120600101546001600160a01b03168061062357600091505061057a565b836001600160a01b03166370a08231826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561067957600080fd5b505afa15801561068d573d6000803e3d6000fd5b505050506040513d60208110156106a357600080fd5b5051949350505050565b60006106b7611c2b565b600260006106c487611a15565b8152602080820192909252604090810160009081208251808401845281548082526001909201546001600160a01b039081168287018190528551634439bdaf60e11b8152600260048201526024810194909452336044850152908b166064840152935190955091936388737b5e9260848084019382900301818787803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b505050506040513d602081101561077757600080fd5b50519050610783611c42565b5060408051606080820183526001600160a01b038881168084526000602080860182815260018789018181528f87168086528285528a86208c875285528a86208a5181546001600160a01b031916908a16178155935192840192909255516002909201919091558982015188519485528483018981528d51998601999099528c519798951696899691957f5378fb6111ece3f1032a0e9b60cb0caa886ec384da4300631570473ae5a4fbc0958f958f95919492939285019291860191908190849084905b8381101561085f578181015183820152602001610847565b50505050905090810190601f16801561088c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4506040805180820182524381526001600160a01b0397881660208083019182529485015189166000908152808652838120858252909552919093209251835551600190920180546001600160a01b0319169290961691909117909455509192915050565b336000908152602081815260408083208484528252808320600101548151638da5cb5b60e01b8152915185936001600160a01b03909216928392638da5cb5b92600480840193829003018186803b15801561095857600080fd5b505afa15801561096c573d6000803e3d6000fd5b505050506040513d602081101561098257600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03848116602483015291519190921691639be2faed916044808301926020929190829003018186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d60208110156109fe57600080fd5b5051610a4c576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b610a54611c2b565b5033600090815260208181526040808320878452825291829020825180840190935280548352600101546001600160a01b0316908201819052610a9b576000935050610b88565b80602001516001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015610ad857600080fd5b505afa158015610aec573d6000803e3d6000fd5b505050506040513d6020811015610b0257600080fd5b505181516040805163277166bf60e11b81526001600160a01b038a81166004830152602482019390935290519190921691634ee2cd7e916044808301926020929190829003018186803b158015610b5857600080fd5b505afa158015610b6c573d6000803e3d6000fd5b505050506040513d6020811015610b8257600080fd5b50519350505b505092915050565b3360009081526020818152604080832085845290915281206001015483906001600160a01b0316610bfd576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208784529091529020600101546001600160a01b0316610c2a611c42565b506001600160a01b0380821660009081526001602081815260408084208a8552825292839020835160608101855281549095168552918201549084015260020154908201819052610c7a57600080fd5b6001600160a01b03821660008181526001602081815260408084208b855290915280832080546001600160a01b03191681559182018390556002909101829055518892917f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe91a38460011415610fbf576000826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2557600080fd5b505afa158015610d39573d6000803e3d6000fd5b505050506040513d6020811015610d4f57600080fd5b5051604083015190915060011415610dec578151604080516308484f7f60e31b81526001600160a01b03928316600482015285831660248201529051918316916342427bf8916044808201926020929091908290030181600087803b158015610db757600080fd5b505af1158015610dcb573d6000803e3d6000fd5b505050506040513d6020811015610de157600080fd5b5051610dec57600080fd5b816040015160021415610fbd5760408051634da8f1ad60e11b81523060048201526001600160a01b0385811660248301529151600092841691639b51e35a916044808301926020929190829003018186803b158015610e4a57600080fd5b505afa158015610e5e573d6000803e3d6000fd5b505050506040513d6020811015610e7457600080fd5b505183516020858101516040805163e869d45f60e01b81526001600160a01b03948516600482015260248101929092526001600160e01b0319851660448301528884166064830152519394509185169263e869d45f9260848082019392918290030181600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b5051610f1d57600080fd5b82516001600160a01b03163014610fbb57816001600160a01b0316636c525b13856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015610f8657600080fd5b505af1158015610f9a573d6000803e3d6000fd5b505050506040513d6020811015610fb057600080fd5b5051610fbb57600080fd5b505b505b60408051868152905187916001600160a01b038516917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc09181900360200190a350600195945050505050565b336000908152602081815260408083208484528252808320600101548151638da5cb5b60e01b8152915185936001600160a01b03909216928392638da5cb5b92600480840193829003018186803b15801561106557600080fd5b505afa158015611079573d6000803e3d6000fd5b505050506040513d602081101561108f57600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03848116602483015291519190921691639be2faed916044808301926020929190829003018186803b1580156110e157600080fd5b505afa1580156110f5573d6000803e3d6000fd5b505050506040513d602081101561110b57600080fd5b5051611159576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b611161611c2b565b5033600090815260208181526040808320878452825291829020825180840190935280548352600101546001600160a01b03169082018190526111a857600093505061128c565b80602001516001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e557600080fd5b505afa1580156111f9573d6000803e3d6000fd5b505050506040513d602081101561120f57600080fd5b5051815160408051630981b24d60e41b81526004810192909252516001600160a01b039092169163981b24d091602480820192602092909190829003018186803b15801561125c57600080fd5b505afa158015611270573d6000803e3d6000fd5b505050506040513d602081101561128657600080fd5b50519350505b5050919050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b0316611300576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b03168061133457600092505061142c565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561136d57600080fd5b505afa158015611381573d6000803e3d6000fd5b505050506040513d602081101561139757600080fd5b50516040805163b9a04cdd60e01b81526001600160a01b038a8116600483015289811660248301526044820189905284811660648301529151919092169163b9a04cdd9160848083019260209291908290030181600087803b1580156113fc57600080fd5b505af1158015611410573d6000803e3d6000fd5b505050506040513d602081101561142657600080fd5b50519250505b50949350505050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b03166114a2576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b0316806114d65760009250506115c6565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561150f57600080fd5b505afa158015611523573d6000803e3d6000fd5b505050506040513d602081101561153957600080fd5b50516040805163757cca5960e11b8152600481018990526001600160a01b03888116602483015284811660448301529151919092169163eaf994b29160648083019260209291908290030181600087803b15801561159657600080fd5b505af11580156115aa573d6000803e3d6000fd5b505050506040513d60208110156115c057600080fd5b50519250505b509392505050565b60006115d8611c2b565b600260006115e588611a15565b8152602080820192909252604090810160009081208251808401845281548082526001909201546001600160a01b039081168287018190528551634439bdaf60e11b8152600260048201526024810194909452336044850152908c16606484015293519095509293919284926388737b5e926084808201939182900301818787803b15801561167357600080fd5b505af1158015611687573d6000803e3d6000fd5b505050506040513d602081101561169d57600080fd5b50516001600160a01b0389166000908152600160209081526040808320848452909152902060020154909150156116d357600080fd5b6116db611c42565b6040518060600160405280896001600160a01b031681526020018881526020016002815250905080600160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600084815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101556040820151816002015590505083602001516001600160a01b0316828a6001600160a01b03167f54db9b1773952b7528e7872ab8f8411827fe4d14f722aecf6dc0f0fd59de99b88b8b8b60405180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156118155781810151838201526020016117fd565b50505050905090810190601f1680156118425780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a4506040805180820182524381526001600160a01b03998a166020808301918252948b166000908152808652838120858252909552919093209251835551600190920180546001600160a01b03191692909816919091179096555093949350505050565b3360009081526020818152604080832084845290915281206001015482906001600160a01b0316611921576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b336000908152602081815260408083208684529091529020600101546001600160a01b0316806119555760009250506115c6565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561198e57600080fd5b505afa1580156119a2573d6000803e3d6000fd5b505050506040513d60208110156119b857600080fd5b505160408051630dd29a4f60e31b8152600481018990526001600160a01b038881166024830152848116604483015291519190921691636e94d2789160648083019260209291908290030181600087803b15801561159657600080fd5b6000816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a5057600080fd5b505afa158015611a64573d6000803e3d6000fd5b505050506040513d6020811015611a7a57600080fd5b505160408051639be2faed60e01b81523060048201526001600160a01b03858116602483015291519190921691639be2faed916044808301926020929190829003018186803b158015611acc57600080fd5b505afa158015611ae0573d6000803e3d6000fd5b505050506040513d6020811015611af657600080fd5b5051611b44576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b7d57600080fd5b505afa158015611b91573d6000803e3d6000fd5b505050506040513d6020811015611ba757600080fd5b505160408051630389aac160e31b81523060048201526001600160a01b03858116602483015291519190921691631c4d5608916044808301926020929190829003018186803b158015611bf957600080fd5b505afa158015611c0d573d6000803e3d6000fd5b505050506040513d6020811015611c2357600080fd5b505192915050565b604080518082019091526000808252602082015290565b60408051606081018252600080825260208201819052918101919091529056fea265627a7a723158203a7cf6cf693e999186e888dfd7840f0aeba6a7f81e6c7b79973923d9b5fbdf5364736f6c63430005110032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}