1.4k txs
47.3k calls
constructor
constructor(string name_, string symbol_, uint8 decimals_, address owner_, address compliance_, address accountant_)
functions
accountant
viewfunction accountant() view returns (address)
allowance
viewfunction allowance(address _owner, address _spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
basisPointsRate
viewfunction basisPointsRate() view returns (uint256)
compliance
viewfunction compliance() view returns (address)
decimals
viewfunction decimals() view returns (uint8)
FEE_PRECISION
viewfunction FEE_PRECISION() view returns (uint256)
getBlackListStatus
viewfunction getBlackListStatus(address _maker) view returns (bool)
getLiquidityAmount
viewfunction getLiquidityAmount(uint256 shares) view returns (uint256)
getScaledAmount
viewfunction getScaledAmount(uint256 amount) view returns (uint256)
isBlackListed
viewfunction isBlackListed(address) view returns (bool)
MAX_BASIS_POINTS
viewfunction MAX_BASIS_POINTS() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
sharesOf
viewfunction sharesOf(address _account) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalLiquidity
viewfunction totalLiquidity() view returns (uint256)
totalShares
viewfunction totalShares() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
addBlackList
nonpayablefunction addBlackList(address _evilUser)
approve
nonpayablefunction approve(address _spender, uint256 _value) returns (bool)
burn
nonpayablefunction burn(uint256 amount)
destroyBlackFunds
nonpayablefunction destroyBlackFunds(address _blackListedUser)
distributeInterest
nonpayablefunction distributeInterest(int256 _liquidity)
issue
nonpayablefunction issue(address account, uint256 amount)
pause
nonpayablefunction pause()
removeBlackList
nonpayablefunction removeBlackList(address _clearedUser)
transfer
nonpayablefunction transfer(address _to, uint256 _value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address _from, address _to, uint256 _value) returns (bool)
transferScaled
nonpayablefunction transferScaled(address _to, uint256 _value) returns (bool)
transferScaledFrom
nonpayablefunction transferScaledFrom(address _from, address _to, uint256 _value) returns (bool)
unpause
nonpayablefunction unpause()
updateBasisPointsRate
nonpayablefunction updateBasisPointsRate(uint256 newBasisPoints)
events
Approval
event Approval(address indexed from, address indexed to, uint256 amount)
BasisPointsRateUpdated
event BasisPointsRateUpdated(uint256 newBasisPointsRate)
Blacklisted
event Blacklisted(address token)
Burn
event Burn(address user, uint256 amount)
DeBlacklisted
event DeBlacklisted(address token)
DestroyedBlackFunds
event DestroyedBlackFunds(address user, uint256 amount)
Issue
event Issue(address user, uint256 amount)
Paused
event Paused()
TotalLiquidityUpdated
event TotalLiquidityUpdated(uint256 oldTotalLiquidity, uint256 newTotalLiquidity)
Transfer
event Transfer(address indexed from, address indexed to, uint256 amount)
Unpaused
event Unpaused()
errors
No errors.
creation bytecode
0x6101006040526000600860006101000a81548160ff0219169083151502179055503480156200002d57600080fd5b5060405162003e1338038062003e138339818101604052810190620000539190620004b9565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620000c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000bc90620005f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000137576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012e90620005f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a090620005f4565b60405180910390fd5b8560009081620001ba919062000861565b508460019081620001cc919062000861565b508360ff1660808160ff16815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff168152505050505050505062000948565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002ec82620002a1565b810181811067ffffffffffffffff821117156200030e576200030d620002b2565b5b80604052505050565b60006200032362000283565b9050620003318282620002e1565b919050565b600067ffffffffffffffff821115620003545762000353620002b2565b5b6200035f82620002a1565b9050602081019050919050565b60005b838110156200038c5780820151818401526020810190506200036f565b60008484015250505050565b6000620003af620003a98462000336565b62000317565b905082815260208101848484011115620003ce57620003cd6200029c565b5b620003db8482856200036c565b509392505050565b600082601f830112620003fb57620003fa62000297565b5b81516200040d84826020860162000398565b91505092915050565b600060ff82169050919050565b6200042e8162000416565b81146200043a57600080fd5b50565b6000815190506200044e8162000423565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004818262000454565b9050919050565b620004938162000474565b81146200049f57600080fd5b50565b600081519050620004b38162000488565b92915050565b60008060008060008060c08789031215620004d957620004d86200028d565b5b600087015167ffffffffffffffff811115620004fa57620004f962000292565b5b6200050889828a01620003e3565b965050602087015167ffffffffffffffff8111156200052c576200052b62000292565b5b6200053a89828a01620003e3565b95505060406200054d89828a016200043d565b94505060606200056089828a01620004a2565b93505060806200057389828a01620004a2565b92505060a06200058689828a01620004a2565b9150509295509295509295565b600082825260208201905092915050565b7f4f776e65722073686f756c64206265206e6f6e207a65726f2061646472657373600082015250565b6000620005dc60208362000593565b9150620005e982620005a4565b602082019050919050565b600060208201905081810360008301526200060f81620005cd565b9050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200066957607f821691505b6020821081036200067f576200067e62000621565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006e97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006aa565b620006f58683620006aa565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007426200073c62000736846200070d565b62000717565b6200070d565b9050919050565b6000819050919050565b6200075e8362000721565b620007766200076d8262000749565b848454620006b7565b825550505050565b600090565b6200078d6200077e565b6200079a81848462000753565b505050565b5b81811015620007c257620007b660008262000783565b600181019050620007a0565b5050565b601f8211156200081157620007db8162000685565b620007e6846200069a565b81016020851015620007f6578190505b6200080e62000805856200069a565b8301826200079f565b50505b505050565b600082821c905092915050565b6000620008366000198460080262000816565b1980831691505092915050565b600062000851838362000823565b9150826002028217905092915050565b6200086c8262000616565b67ffffffffffffffff811115620008885762000887620002b2565b5b62000894825462000650565b620008a1828285620007c6565b600060209050601f831160018114620008d95760008415620008c4578287015190505b620008d0858262000843565b86555062000940565b601f198416620008e98662000685565b60005b828110156200091357848901518255600182019150602085019450602081019050620008ec565b868310156200093357848901516200092f601f89168262000823565b8355505b6001600288020188555050505b505050505050565b60805160a05160c05160e05161340562000a0e6000396000818161125d0152611e5401526000818161082f015281816112ea0152818161236a0152612490015260008181610c6f01528181610c9701528181610e1501528181610eec01528181610fbe01528181611047015281816110d6015281816111120152818161135f0152818161148c0152818161168c015281816118ce015281816118f601528181611d8e01528181611db6015281816121fa015261222201526000610daf01526134056000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a578063d5f191b6116100ad578063e4997dc51161007c578063e4997dc514610605578063e63a391f14610621578063f3bdc2281461063f578063f4ea93d81461065b578063f5eb42dc1461067957610206565b8063d5f191b614610557578063dd62ed3e14610587578063dd644f72146105b7578063e47d6060146105d557610206565b806395d89b41116100e957806395d89b41146104bd578063a9059cbb146104db578063a9a4fbd71461050b578063bde365c11461053b57610206565b806370a08231146104495780638456cb5914610479578063867904b4146104835780638da5cb5b1461049f57610206565b80633c6134561161019d5780634bd5b18c1161016c5780634bd5b18c1461038f5780634fb3ccc5146103bf57806359bf1abe146103dd5780635c975abb1461040d5780636290865d1461042b57610206565b80633c6134561461031d5780633f4ba83a1461034d57806342966c68146103575780634b378f1b1461037357610206565b806318160ddd116101d957806318160ddd1461029357806323b872dd146102b1578063313ce567146102e15780633a98ef39146102ff57610206565b806306fdde031461020b578063095ea7b3146102295780630ecb93c01461025957806315770f9214610275575b600080fd5b6102136106a9565b604051610220919061290e565b60405180910390f35b610243600480360381019061023e91906129c9565b61073b565b6040516102509190612a24565b60405180910390f35b610273600480360381019061026e9190612a3f565b61082d565b005b61027d61094d565b60405161028a9190612a7b565b60405180910390f35b61029b610957565b6040516102a89190612a7b565b60405180910390f35b6102cb60048036038101906102c69190612a96565b610961565b6040516102d89190612a24565b60405180910390f35b6102e9610dab565b6040516102f69190612b05565b60405180910390f35b610307610dd3565b6040516103149190612a7b565b60405180910390f35b61033760048036038101906103329190612b20565b610ddd565b6040516103449190612a7b565b60405180910390f35b610355610e13565b005b610371600480360381019061036c9190612b20565b610eea565b005b61038d60048036038101906103889190612b20565b611110565b005b6103a960048036038101906103a49190612b20565b611224565b6040516103b69190612a7b565b60405180910390f35b6103c761125b565b6040516103d49190612b5c565b60405180910390f35b6103f760048036038101906103f29190612a3f565b61127f565b6040516104049190612a24565b60405180910390f35b6104156112d5565b6040516104229190612a24565b60405180910390f35b6104336112e8565b6040516104409190612b5c565b60405180910390f35b610463600480360381019061045e9190612a3f565b61130c565b6040516104709190612a7b565b60405180910390f35b61048161135d565b005b61049d600480360381019061049891906129c9565b61148a565b005b6104a761168a565b6040516104b49190612b5c565b60405180910390f35b6104c56116ae565b6040516104d2919061290e565b60405180910390f35b6104f560048036038101906104f091906129c9565b611740565b6040516105029190612a24565b60405180910390f35b61052560048036038101906105209190612a96565b611a08565b6040516105329190612a24565b60405180910390f35b61055560048036038101906105509190612bad565b611e52565b005b610571600480360381019061056c91906129c9565b612001565b60405161057e9190612a24565b60405180910390f35b6105a1600480360381019061059c9190612bda565b6122bb565b6040516105ae9190612a7b565b60405180910390f35b6105bf612342565b6040516105cc9190612a7b565b60405180910390f35b6105ef60048036038101906105ea9190612a3f565b612348565b6040516105fc9190612a24565b60405180910390f35b61061f600480360381019061061a9190612a3f565b612368565b005b610629612488565b6040516106369190612a7b565b60405180910390f35b61065960048036038101906106549190612a3f565b61248e565b005b610663612687565b6040516106709190612a7b565b60405180910390f35b610693600480360381019061068e9190612a3f565b61268c565b6040516106a09190612a7b565b60405180910390f35b6060600080546106b890612c49565b80601f01602080910402602001604051908101604052809291908181526020018280546106e490612c49565b80156107315780601f1061070657610100808354040283529160200191610731565b820191906000526020600020905b81548152906001019060200180831161071457829003601f168201915b5050505050905090565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161081b9190612a7b565b60405180910390a36001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b290612cc6565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b855816040516109429190612b5c565b60405180910390a150565b6000600354905090565b6000600354905090565b6000801515600860009054906101000a900460ff161515146109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af90612d32565b60405180910390fd5b8383600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610a5e5750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b610a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9490612d9e565b60405180910390fd5b6000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5890612e0a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610c1d5784600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c159190612e59565b925050819055505b6000610c2886610ddd565b9050600061271060075483610c3d9190612e8d565b610c479190612efe565b9050610c5f89898385610c5a9190612e59565b6126d5565b506000811115610d2357610c94897f0000000000000000000000000000000000000000000000000000000000000000836126d5565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610d0d84611224565b604051610d1a9190612a7b565b60405180910390a35b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610d868486610d819190612e59565b611224565b604051610d939190612a7b565b60405180910390a36001955050505050509392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000600254905090565b60008060035403610df057819050610e0e565b60035460025483610e019190612e8d565b610e0b9190612efe565b90505b919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890612f7b565b60405180910390fd5b6000600860006101000a81548160ff0219169083151502179055507fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693360405160405180910390a1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90612f7b565b60405180910390fd5b6000610f8382610ddd565b90508060026000828254610f979190612e59565b925050819055508160036000828254610fb09190612e59565b9250508190555080600460007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110269190612e59565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110ab9190612a7b565b60405180910390a37fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca57f000000000000000000000000000000000000000000000000000000000000000083604051611104929190612f9b565b60405180910390a15050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590612f7b565b60405180910390fd5b601481106111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d890613036565b60405180910390fd5b806007819055507f8a3948141be01647094cc92488a4eba0d822d84e4619ec9895529195cf2bd7366007546040516112199190612a7b565b60405180910390a150565b600080600254036112385760009050611256565b600254600354836112499190612e8d565b6112539190612efe565b90505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600860009054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611356600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611224565b9050919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290612f7b565b60405180910390fd5b60001515600860009054906101000a900460ff16151514611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890612d32565b60405180910390fd5b6001600860006101000a81548160ff0219169083151502179055507f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75260405160405180910390a1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f90612f7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361155157600080fd5b600061155c82610ddd565b905080600260008282546115709190613056565b9250508190555081600360008282546115899190613056565b9250508190555080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115df9190613056565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116449190612a7b565b60405180910390a37fc65a3f767206d2fdcede0b094a4840e01c0dd0be1888b5ba800346eaa0123c16838360405161167d929190612f9b565b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600180546116bd90612c49565b80601f01602080910402602001604051908101604052809291908181526020018280546116e990612c49565b80156117365780601f1061170b57610100808354040283529160200191611736565b820191906000526020600020905b81548152906001019060200180831161171957829003601f168201915b5050505050905090565b6000801515600860009054906101000a900460ff16151514611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90612d32565b60405180910390fd5b3383600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561183d5750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61187c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187390612d9e565b60405180910390fd5b600061188785610ddd565b905060006127106007548361189c9190612e8d565b6118a69190612efe565b90506118be338883856118b99190612e59565b6126d5565b506000811115611982576118f3337f0000000000000000000000000000000000000000000000000000000000000000836126d5565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61196c84611224565b6040516119799190612a7b565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6119e584866119e09190612e59565b611224565b6040516119f29190612a7b565b60405180910390a3600194505050505092915050565b6000801515600860009054906101000a900460ff16151514611a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5690612d32565b60405180910390fd5b8383600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b055750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90612d9e565b60405180910390fd5b600061271060075486611b579190612e8d565b611b619190612efe565b90506000600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611bef87611224565b905080821015611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b90612e0a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821015611cf05780600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ce89190612e59565b925050819055505b611d068989858a611d019190612e59565b6126d5565b508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611d6a868b611d659190612e59565b611224565b604051611d779190612a7b565b60405180910390a36000831115611e4257611db3897f0000000000000000000000000000000000000000000000000000000000000000856126d5565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e2c86611224565b604051611e399190612a7b565b60405180910390a35b6001955050505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed7906130d6565b60405180910390fd5b600060035490506000821315611f0e578160036000828254611f029190613056565b92505081905550611f7b565b600082611f1a906130f6565b90506003548110611f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f579061318a565b60405180910390fd5b8060036000828254611f729190612e59565b92505081905550505b6002546003541015611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb99061321c565b60405180910390fd5b7f23f31be7d29096a0730b25d6d41b691376dd9d8c04ab730a8435a188521f7af881600354604051611ff592919061323c565b60405180910390a15050565b6000801515600860009054906101000a900460ff16151514612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90612d32565b60405180910390fd5b3383600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120fe5750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61213d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213490612d9e565b60405180910390fd5b6000612710600754866121509190612e8d565b61215a9190612efe565b90506121723387838861216d9190612e59565b6126d5565b508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6121d684896121d19190612e59565b611224565b6040516121e39190612a7b565b60405180910390a360008111156122ae5761221f337f0000000000000000000000000000000000000000000000000000000000000000836126d5565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61229884611224565b6040516122a59190612a7b565b60405180910390a35b6001935050505092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ed90612cc6565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8e6c9e5ceff66044a0b27759779a9be2e7c99655252b235ff3f754efb6b8a6168160405161247d9190612b5c565b60405180910390a150565b61271081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461251c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251390612cc6565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259f906132b1565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008282546126439190612e59565b925050819055507f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c6828260405161267b929190612f9b565b60405180910390a15050565b601481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c90613343565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127be906133af565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128169190612e59565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461286c9190613056565b92505081905550600190509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128b857808201518184015260208101905061289d565b60008484015250505050565b6000601f19601f8301169050919050565b60006128e08261287e565b6128ea8185612889565b93506128fa81856020860161289a565b612903816128c4565b840191505092915050565b6000602082019050818103600083015261292881846128d5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061296082612935565b9050919050565b61297081612955565b811461297b57600080fd5b50565b60008135905061298d81612967565b92915050565b6000819050919050565b6129a681612993565b81146129b157600080fd5b50565b6000813590506129c38161299d565b92915050565b600080604083850312156129e0576129df612930565b5b60006129ee8582860161297e565b92505060206129ff858286016129b4565b9150509250929050565b60008115159050919050565b612a1e81612a09565b82525050565b6000602082019050612a396000830184612a15565b92915050565b600060208284031215612a5557612a54612930565b5b6000612a638482850161297e565b91505092915050565b612a7581612993565b82525050565b6000602082019050612a906000830184612a6c565b92915050565b600080600060608486031215612aaf57612aae612930565b5b6000612abd8682870161297e565b9350506020612ace8682870161297e565b9250506040612adf868287016129b4565b9150509250925092565b600060ff82169050919050565b612aff81612ae9565b82525050565b6000602082019050612b1a6000830184612af6565b92915050565b600060208284031215612b3657612b35612930565b5b6000612b44848285016129b4565b91505092915050565b612b5681612955565b82525050565b6000602082019050612b716000830184612b4d565b92915050565b6000819050919050565b612b8a81612b77565b8114612b9557600080fd5b50565b600081359050612ba781612b81565b92915050565b600060208284031215612bc357612bc2612930565b5b6000612bd184828501612b98565b91505092915050565b60008060408385031215612bf157612bf0612930565b5b6000612bff8582860161297e565b9250506020612c108582860161297e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c6157607f821691505b602082108103612c7457612c73612c1a565b5b50919050565b7f6e6f7420636f6d706c69616e6365000000000000000000000000000000000000600082015250565b6000612cb0600e83612889565b9150612cbb82612c7a565b602082019050919050565b60006020820190508181036000830152612cdf81612ca3565b9050919050565b7f70726f746f636f6c207061757365640000000000000000000000000000000000600082015250565b6000612d1c600f83612889565b9150612d2782612ce6565b602082019050919050565b60006020820190508181036000830152612d4b81612d0f565b9050919050565b7f5573657220626c61636b6c697374656400000000000000000000000000000000600082015250565b6000612d88601083612889565b9150612d9382612d52565b602082019050919050565b60006020820190508181036000830152612db781612d7b565b9050919050565b7f616c6c6f77616e63652065786365656465640000000000000000000000000000600082015250565b6000612df4601283612889565b9150612dff82612dbe565b602082019050919050565b60006020820190508181036000830152612e2381612de7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e6482612993565b9150612e6f83612993565b9250828203905081811115612e8757612e86612e2a565b5b92915050565b6000612e9882612993565b9150612ea383612993565b9250828202612eb181612993565b91508282048414831517612ec857612ec7612e2a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f0982612993565b9150612f1483612993565b925082612f2457612f23612ecf565b5b828204905092915050565b7f6e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b6000612f65600983612889565b9150612f7082612f2f565b602082019050919050565b60006020820190508181036000830152612f9481612f58565b9050919050565b6000604082019050612fb06000830185612b4d565b612fbd6020830184612a6c565b9392505050565b7f626173697320706f696e74732073686f756c64206265206c657373207468656e60008201527f204d41585f42415349535f504f494e5453000000000000000000000000000000602082015250565b6000613020603183612889565b915061302b82612fc4565b604082019050919050565b6000602082019050818103600083015261304f81613013565b9050919050565b600061306182612993565b915061306c83612993565b925082820190508082111561308457613083612e2a565b5b92915050565b7f6e6f74206163636f756e74616e74000000000000000000000000000000000000600082015250565b60006130c0600e83612889565b91506130cb8261308a565b602082019050919050565b600060208201905081810360008301526130ef816130b3565b9050919050565b600061310182612b77565b91507f8000000000000000000000000000000000000000000000000000000000000000820361313357613132612e2a565b5b816000039050919050565b7f6e6f74206c697175696469747920656e6f756768000000000000000000000000600082015250565b6000613174601483612889565b915061317f8261313e565b602082019050919050565b600060208201905081810360008301526131a381613167565b9050919050565b7f546f74616c206c6971756964697479206d757374206265206d6f72652074686560008201527f6e20746f74616c20737570706c79000000000000000000000000000000000000602082015250565b6000613206602e83612889565b9150613211826131aa565b604082019050919050565b60006020820190508181036000830152613235816131f9565b9050919050565b60006040820190506132516000830185612a6c565b61325e6020830184612a6c565b9392505050565b7f757365722073686f756c6420626520626c61636b6c6973746564000000000000600082015250565b600061329b601a83612889565b91506132a682613265565b602082019050919050565b600060208201905081810360008301526132ca8161328e565b9050919050565b7f546f6b656e2072656365697665722063616e6e6f74206265207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061332d602583612889565b9150613338826132d1565b604082019050919050565b6000602082019050818103600083015261335c81613320565b9050919050565b7f6e6f7420656e6f7567682073686172657320666f72207472616e736665720000600082015250565b6000613399601e83612889565b91506133a482613363565b602082019050919050565b600060208201905081810360008301526133c88161338c565b905091905056fea2646970667358221220de9c68f2f55a6263553c06bf4de52ac270571ecdd27b0d5213ba30df09f6a06e64736f6c6343000816003300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000060000000000000000000000007d2d47e441915ff9c2d5a6e4a7aadd5e02722e29000000000000000000000000760e226fe0767c5db016ef0e55a4ac677ae869c00000000000000000000000007d2d47e441915ff9c2d5a6e4a7aadd5e02722e290000000000000000000000000000000000000000000000000000000000000004413741350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044137413500000000000000000000000000000000000000000000000000000000