Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
3,506,775.564458098521170769 DEPH
Holders
251
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.122710793613316827 DEPHValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Defiance
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-01 */ pragma solidity ^0.6.0; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } /** * @dev Allows the current owner to relinquish control of the contract. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } } interface ICallable { function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool); } // /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Defiance is Ownable { using SafeMath for uint; uint256 constant private FLOAT_SCALAR = 2**64; uint256 constant private INITIAL_SUPPLY = 36e23; // 3.6m uint256 constant private BURN_RATE = 2; // 2% per tx uint256 constant private SUPPLY_FLOOR = 10; // 1% of 3.6m = 360k uint256 constant private MIN_STAKE_AMOUNT = 1e21; // 1,000 string constant public name = "Defiance Phoenix"; string constant public symbol = "DEPH"; uint8 constant public decimals = 18; struct User { bool whitelisted; bool pauseWhitelisted; uint256 balance; uint256 staked; mapping(address => uint256) allowance; int256 scaledPayout; } struct Info { uint256 totalSupply; uint256 totalStaked; mapping(address => User) users; uint256 scaledPayoutPerToken; address admin; } Info private info; event Transfer(address indexed from, address indexed to, uint256 tokens); event Approval(address indexed owner, address indexed spender, uint256 tokens); event Whitelist(address indexed user, bool status); event PauseWhitelist(address indexed user, bool status); event Stake(address indexed owner, uint256 tokens); event Unstake(address indexed owner, uint256 tokens); event Collect(address indexed owner, uint256 tokens); event Burn(uint256 tokens); event Pause(); event Unpause(); event NotPausable(); bool public paused = false; bool public canPause = true; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused || msg.sender == owner || info.users[msg.sender].pauseWhitelisted, "paused.!"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused, "not paused.!"); _; } modifier onlyAdmin() { require(msg.sender == info.admin,"only admin.!"); _; } /** * @dev called by the owner to pause, triggers stopped state **/ function pause() onlyOwner whenNotPaused public { require(canPause == true); paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { require(paused == true); paused = false; emit Unpause(); } /** * @dev Prevent the token from ever being paused again **/ function notPausable() onlyOwner public{ paused = false; canPause = false; emit NotPausable(); } constructor() public { info.admin = msg.sender; info.totalSupply = INITIAL_SUPPLY; info.users[msg.sender].balance = INITIAL_SUPPLY; emit Transfer(address(0x0), msg.sender, INITIAL_SUPPLY); whitelist(msg.sender, true); paused = true; } function stake(uint256 _tokens) external whenNotPaused { _stake(_tokens); } function unstake(uint256 _tokens) external whenNotPaused { _unstake(_tokens); } function collect() external whenNotPaused returns (uint256) { uint256 _dividends = dividendsOf(msg.sender); require(_dividends >= 0); info.users[msg.sender].scaledPayout += int256(_dividends.mul(FLOAT_SCALAR)); uint _balance = info.users[msg.sender].balance; info.users[msg.sender].balance = _balance.add(_dividends); emit Transfer(address(this), msg.sender, _dividends); emit Collect(msg.sender, _dividends); return _dividends; } function burn(uint256 _tokens) external { require(msg.sender != info.admin); require(balanceOf(msg.sender) >= _tokens); uint _balance = info.users[msg.sender].balance; info.users[msg.sender].balance = _balance.sub(_tokens); uint256 _burnedAmount = _tokens; if (info.totalStaked > 0) { _burnedAmount = _burnedAmount.div(2); uint _scaledPayout = _burnedAmount.mul(FLOAT_SCALAR).div(info.totalStaked); info.scaledPayoutPerToken = info.scaledPayoutPerToken.add(_scaledPayout); emit Transfer(msg.sender, address(this), _burnedAmount); } info.totalSupply = info.totalSupply.sub(_burnedAmount); emit Transfer(msg.sender, address(0x0), _burnedAmount); emit Burn(_burnedAmount); } function distribute(uint256 _tokens) external { require(info.totalStaked > 0); require(balanceOf(msg.sender) >= _tokens); uint _balance = info.users[msg.sender].balance; info.users[msg.sender].balance = _balance.sub(_tokens); uint _scaledPayout = _tokens.mul(FLOAT_SCALAR).div(info.totalStaked); info.scaledPayoutPerToken = info.scaledPayoutPerToken.add(_scaledPayout); emit Transfer(msg.sender, address(this), _tokens); } function transfer(address _to, uint256 _tokens) external whenNotPaused returns (bool) { _transfer(msg.sender, _to, _tokens); return true; } function approve(address _spender, uint256 _tokens) external whenNotPaused returns (bool) { info.users[msg.sender].allowance[_spender] = _tokens; emit Approval(msg.sender, _spender, _tokens); return true; } function transferFrom(address _from, address _to, uint256 _tokens) external whenNotPaused returns (bool) { require(info.users[_from].allowance[msg.sender] >= _tokens); uint _balance = info.users[_from].allowance[msg.sender]; info.users[_from].allowance[msg.sender] = _balance.sub(_tokens); _transfer(_from, _to, _tokens); return true; } function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external whenNotPaused returns (bool) { uint256 _transferred = _transfer(msg.sender, _to, _tokens); uint32 _size; assembly { _size := extcodesize(_to) } if (_size > 0) { require(ICallable(_to).tokenCallback(msg.sender, _transferred, _data)); } return true; } function bulkTransfer(address[] calldata _receivers, uint256[] calldata _amounts) external whenNotPaused { require(_receivers.length == _amounts.length); for (uint256 i = 0; i < _receivers.length; i++) { _transfer(msg.sender, _receivers[i], _amounts[i]); } } function whitelist(address _user, bool _status) public onlyAdmin { //require(msg.sender == info.admin); info.users[_user].whitelisted = _status; emit Whitelist(_user, _status); } function pauseWhitelist(address _user, bool _status) public onlyAdmin { //require(msg.sender == info.admin); info.users[_user].pauseWhitelisted = _status; emit PauseWhitelist(_user, _status); } function totalSupply() public view returns (uint256) { return info.totalSupply; } function totalStaked() public view returns (uint256) { return info.totalStaked; } function balanceOf(address _user) public view returns (uint256) { return info.users[_user].balance.sub(stakedOf(_user)); } function stakedOf(address _user) public view returns (uint256) { return info.users[_user].staked; } function dividendsOf(address _user) public view returns (uint256) { return uint256(int256(info.scaledPayoutPerToken.mul(info.users[_user].staked)) - info.users[_user].scaledPayout).div(FLOAT_SCALAR); } function allowance(address _user, address _spender) public view returns (uint256) { return info.users[_user].allowance[_spender]; } function isWhitelisted(address _user) public view returns (bool) { return info.users[_user].whitelisted; } function allInfoFor(address _user) public view returns (uint256 totalTokenSupply, uint256 totalTokensStaked, uint256 userBalance, uint256 userStaked, uint256 userDividends) { return (totalSupply(), totalStaked(), balanceOf(_user), stakedOf(_user), dividendsOf(_user)); } function _transfer(address _from, address _to, uint256 _tokens) internal returns (uint256) { require(balanceOf(_from) >= _tokens); uint _fromBalance = info.users[_from].balance; info.users[_from].balance = _fromBalance.sub(_tokens); uint256 _burnedAmount = _tokens.mul(BURN_RATE).div(100); if (totalSupply().sub(_burnedAmount) < INITIAL_SUPPLY.mul(SUPPLY_FLOOR).div(100) || isWhitelisted(_from)) { _burnedAmount = 0; } uint256 _transferred = _tokens.sub(_burnedAmount); uint _toBalance = info.users[_to].balance; info.users[_to].balance = _toBalance.add(_transferred); emit Transfer(_from, _to, _transferred); if (_burnedAmount > 0) { if (info.totalStaked > 0) { _burnedAmount = _burnedAmount.div(2); uint _scaledPayout = _burnedAmount.mul(FLOAT_SCALAR).div(info.totalStaked); info.scaledPayoutPerToken = info.scaledPayoutPerToken.add(_scaledPayout); emit Transfer(_from, address(this), _burnedAmount); } info.totalSupply = info.totalSupply.sub(_burnedAmount); emit Transfer(_from, address(0x0), _burnedAmount); emit Burn(_burnedAmount); } return _transferred; } function _stake(uint256 _amount) internal { require(balanceOf(msg.sender) >= _amount); require(stakedOf(msg.sender).add(_amount) >= MIN_STAKE_AMOUNT); info.totalStaked = info.totalStaked.add(_amount); uint _userStaked = info.users[msg.sender].staked; info.users[msg.sender].staked = _userStaked.add(_amount); info.users[msg.sender].scaledPayout += int256(_amount.mul(info.scaledPayoutPerToken)); emit Transfer(msg.sender, address(this), _amount); emit Stake(msg.sender, _amount); } function _unstake(uint256 _amount) internal { require(stakedOf(msg.sender) >= _amount); uint256 _burnedAmount = _amount.mul(BURN_RATE).div(100); info.scaledPayoutPerToken = info.scaledPayoutPerToken.add(_burnedAmount.mul(FLOAT_SCALAR).div(info.totalStaked)); info.totalStaked = info.totalStaked.sub(_amount); uint _userBalance = info.users[msg.sender].balance; info.users[msg.sender].balance = _userBalance.sub(_burnedAmount); uint _userStaked = info.users[msg.sender].staked; info.users[msg.sender].staked = _userStaked.sub(_amount); info.users[msg.sender].scaledPayout -= int256(_amount.mul(info.scaledPayoutPerToken)); emit Transfer(address(this), msg.sender, _amount.sub(_burnedAmount)); emit Unstake(msg.sender, _amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[],"name":"NotPausable","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"PauseWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Stake","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Unstake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"Whitelist","type":"event"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"allInfoFor","outputs":[{"internalType":"uint256","name":"totalTokenSupply","type":"uint256"},{"internalType":"uint256","name":"totalTokensStaked","type":"uint256"},{"internalType":"uint256","name":"userBalance","type":"uint256"},{"internalType":"uint256","name":"userStaked","type":"uint256"},{"internalType":"uint256","name":"userDividends","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","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":"_tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_receivers","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"bulkTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"canPause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collect","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"dividendsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notPausable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"pauseWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"stakedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","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":"_tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"whitelist","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526006805461ffff191661010017905534801561001f57600080fd5b5060008054336001600160a01b0319918216811783556005805490921681179091556a02fa54641bae8aaa0000006001818155828452600360209081526040808620909201839055815192835290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36100a63360016100b8565b6006805460ff19166001179055610166565b6005546001600160a01b03163314610106576040805162461bcd60e51b815260206004820152600c60248201526b6f6e6c792061646d696e2e2160a01b604482015290519081900360640190fd5b6001600160a01b038216600081815260036020908152604091829020805460ff1916851515908117909155825190815291517f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d9281900390910190a25050565b611cc1806101756000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c806357f6b8121161010f57806395d89b41116100a2578063dd62ed3e11610071578063dd62ed3e14610678578063e5225381146106a6578063f2fde38b146106ae578063f59c3708146106d4576101e4565b806395d89b4114610601578063a694fc3a14610609578063a9059cbb14610626578063af500ba314610652576101e4565b8063817b1cd2116100de578063817b1cd2146105b05780638456cb59146105b85780638da5cb5b146105c057806391c05b0b146105e4576101e4565b806357f6b812146105295780635c975abb1461057a57806370a0823114610582578063715018a6146105a8576101e4565b80632e17de78116101875780633f4ba83a116101565780633f4ba83a146104775780634000aea01461047f57806342966c68146105045780634be8b05e14610521576101e4565b80632e17de781461040e578063313ce5671461042b578063323be1c5146104495780633af32abf14610451576101e4565b8063153a1f3e116101c3578063153a1f3e146102de57806318160ddd146103a257806323b872dd146103aa578063279f7176146103e0576101e4565b806265318b146101e957806306fdde0314610221578063095ea7b31461029e575b600080fd5b61020f600480360360208110156101ff57600080fd5b50356001600160a01b0316610702565b60408051918252519081900360200190f35b61022961074a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026357818101518382015260200161024b565b50505050905090810190601f1680156102905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ca600480360360408110156102b457600080fd5b506001600160a01b038135169060200135610776565b604080519115158252519081900360200190f35b6103a0600480360360408110156102f457600080fd5b81019060208101813564010000000081111561030f57600080fd5b82018360208201111561032157600080fd5b8035906020019184602083028401116401000000008311171561034357600080fd5b91939092909160208101903564010000000081111561036157600080fd5b82018360208201111561037357600080fd5b8035906020019184602083028401116401000000008311171561039557600080fd5b509092509050610858565b005b61020f61092e565b6102ca600480360360608110156103c057600080fd5b506001600160a01b03813581169160208101359091169060400135610934565b6103a0600480360360408110156103f657600080fd5b506001600160a01b0381351690602001351515610a4d565b6103a06004803603602081101561042457600080fd5b5035610b03565b610433610b86565b6040805160ff9092168252519081900360200190f35b6102ca610b8b565b6102ca6004803603602081101561046757600080fd5b50356001600160a01b0316610b99565b6103a0610bb7565b6102ca6004803603606081101561049557600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104c557600080fd5b8201836020820111156104d757600080fd5b803590602001918460018302840111640100000000831117156104f957600080fd5b509092509050610c5d565b6103a06004803603602081101561051a57600080fd5b5035610dc1565b6103a0610efc565b61054f6004803603602081101561053f57600080fd5b50356001600160a01b0316610f49565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6102ca610f8e565b61020f6004803603602081101561059857600080fd5b50356001600160a01b0316610f97565b6103a0610fc7565b61020f611026565b6103a061102c565b6105c861110c565b604080516001600160a01b039092168252519081900360200190f35b6103a0600480360360208110156105fa57600080fd5b503561111b565b6102296111c1565b6103a06004803603602081101561061f57600080fd5b50356111e1565b6102ca6004803603604081101561063c57600080fd5b506001600160a01b038135169060200135611261565b61020f6004803603602081101561066857600080fd5b50356001600160a01b03166112f0565b61020f6004803603604081101561068e57600080fd5b506001600160a01b038135811691602001351661130e565b61020f61133a565b6103a0600480360360208110156106c457600080fd5b50356001600160a01b0316611471565b6103a0600480360360408110156106ea57600080fd5b506001600160a01b03813516906020013515156114f6565b6001600160a01b0381166000908152600360205260408120600480820154600290920154905461074492600160401b92909161073d916115a4565b0390611604565b92915050565b6040518060400160405280601081526020016f088caccd2c2dcc6ca40a0d0decadcd2f60831b81525081565b60065460009060ff16158061079557506000546001600160a01b031633145b806107b4575033600090815260036020526040902054610100900460ff165b6107f0576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b3360008181526003602081815260408084206001600160a01b0389168086529301825292839020869055825186815292519193927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60065460ff16158061087457506000546001600160a01b031633145b80610893575033600090815260036020526040902054610100900460ff165b6108cf576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b8281146108db57600080fd5b60005b838110156109275761091e338686848181106108f657fe5b905060200201356001600160a01b031685858581811061091257fe5b90506020020135611646565b506001016108de565b5050505050565b60015490565b60065460009060ff16158061095357506000546001600160a01b031633145b80610972575033600090815260036020526040902054610100900460ff165b6109ae576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b6001600160a01b038416600090815260036020818152604080842033855290920190529020548211156109e057600080fd5b6001600160a01b03841660009081526003602081815260408084203385529092019052902054610a10818461186c565b6001600160a01b03861660009081526003602081815260408084203385529092019052902055610a41858585611646565b50600195945050505050565b6005546001600160a01b03163314610a9b576040805162461bcd60e51b815260206004820152600c60248201526b6f6e6c792061646d696e2e2160a01b604482015290519081900360640190fd5b6001600160a01b038216600081815260036020908152604091829020805461ff00191661010086151590810291909117909155825190815291517f98970095ca49ea76125d950289e4accb06720056271360a2168f6c2aba273cae9281900390910190a25050565b60065460ff161580610b1f57506000546001600160a01b031633145b80610b3e575033600090815260036020526040902054610100900460ff165b610b7a576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b610b83816118ae565b50565b601281565b600654610100900460ff1681565b6001600160a01b031660009081526003602052604090205460ff1690565b6000546001600160a01b03163314610bce57600080fd5b60065460ff16610c14576040805162461bcd60e51b815260206004820152600c60248201526b6e6f74207061757365642e2160a01b604482015290519081900360640190fd5b60065460ff161515600114610c2857600080fd5b6006805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60065460009060ff161580610c7c57506000546001600160a01b031633145b80610c9b575033600090815260036020526040902054610100900460ff165b610cd7576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b6000610ce4338787611646565b9050853b63ffffffff811615610db457866001600160a01b0316636be32e73338488886040518563ffffffff1660e01b815260040180856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b158015610d7f57600080fd5b505af1158015610d93573d6000803e3d6000fd5b505050506040513d6020811015610da957600080fd5b5051610db457600080fd5b5060019695505050505050565b6005546001600160a01b0316331415610dd957600080fd5b80610de333610f97565b1015610dee57600080fd5b33600090815260036020526040902060010154610e0b818361186c565b33600090815260036020526040902060010155600254829015610e8e57610e33816002611604565b600254909150600090610e5490610e4e84600160401b6115a4565b90611604565b600454909150610e6490826119f2565b60045560408051838152905130913391600080516020611c6c8339815191529181900360200190a3505b600154610e9b908261186c565b6001556040805182815290516000913391600080516020611c6c8339815191529181900360200190a36040805182815290517fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9181900360200190a1505050565b6000546001600160a01b03163314610f1357600080fd5b6006805461ffff191690556040517faff39f66825d4448497d384dee3f4a3adf00a622960add00806503ae4ccee01c90600090a1565b6000806000806000610f5961092e565b610f61611026565b610f6a88610f97565b610f73896112f0565b610f7c8a610702565b939a9299509097509550909350915050565b60065460ff1681565b6000610744610fa5836112f0565b6001600160a01b0384166000908152600360205260409020600101549061186c565b6000546001600160a01b03163314610fde57600080fd5b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b60025490565b6000546001600160a01b0316331461104357600080fd5b60065460ff16158061105f57506000546001600160a01b031633145b8061107e575033600090815260036020526040902054610100900460ff165b6110ba576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b60065460ff6101009091041615156001146110d457600080fd5b6006805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6000546001600160a01b031681565b60025461112757600080fd5b8061113133610f97565b101561113c57600080fd5b33600090815260036020526040902060010154611159818361186c565b3360009081526003602052604081206001019190915560025461118490610e4e85600160401b6115a4565b60045490915061119490826119f2565b60045560408051848152905130913391600080516020611c6c8339815191529181900360200190a3505050565b604051806040016040528060048152602001630888aa0960e31b81525081565b60065460ff1615806111fd57506000546001600160a01b031633145b8061121c575033600090815260036020526040902054610100900460ff165b611258576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b610b8381611a4c565b60065460009060ff16158061128057506000546001600160a01b031633145b8061129f575033600090815260036020526040902054610100900460ff165b6112db576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b6112e6338484611646565b5060019392505050565b6001600160a01b031660009081526003602052604090206002015490565b6001600160a01b0391821660009081526003602081815260408084209490951683529201909152205490565b60065460009060ff16158061135957506000546001600160a01b031633145b80611378575033600090815260036020526040902054610100900460ff165b6113b4576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b60006113bf33610702565b90506113cf81600160401b6115a4565b336000908152600360205260409020600481018054909201909155600101546113f881836119f2565b33600081815260036020908152604091829020600101939093558051858152905191923092600080516020611c6c8339815191529281900390910190a360408051838152905133917f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999919081900360200190a250905090565b6000546001600160a01b0316331461148857600080fd5b6001600160a01b03811661149b57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611544576040805162461bcd60e51b815260206004820152600c60248201526b6f6e6c792061646d696e2e2160a01b604482015290519081900360640190fd5b6001600160a01b038216600081815260036020908152604091829020805460ff1916851515908117909155825190815291517f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d9281900390910190a25050565b6000826115b357506000610744565b828202828482816115c057fe5b04146115fd5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c4b6021913960400191505060405180910390fd5b9392505050565b60006115fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b4e565b60008161165285610f97565b101561165d57600080fd5b6001600160a01b038416600090815260036020526040902060010154611683818461186c565b6001600160a01b0386166000908152600360205260408120600101919091556116b26064610e4e8660026115a4565b90506116cf6064610e4e6a02fa54641bae8aaa000000600a6115a4565b6116e1826116db61092e565b9061186c565b10806116f157506116f186610b99565b156116fa575060005b6000611706858361186c565b6001600160a01b03871660009081526003602052604090206001015490915061172f81836119f2565b6001600160a01b0380891660008181526003602090815260409182902060010194909455805186815290519193928c1692600080516020611c6c83398151915292918290030190a3821561186157600254156117ee57611790836002611604565b6002549093506000906117ab90610e4e86600160401b6115a4565b6004549091506117bb90826119f2565b60045560408051858152905130916001600160a01b038c1691600080516020611c6c8339815191529181900360200190a3505b6001546117fb908461186c565b6001556040805184815290516000916001600160a01b038b1691600080516020611c6c8339815191529181900360200190a36040805184815290517fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9181900360200190a15b509695505050505050565b60006115fd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bf0565b806118b8336112f0565b10156118c357600080fd5b60006118d56064610e4e8460026115a4565b6002549091506118fa906118f190610e4e84600160401b6115a4565b600454906119f2565b60045560025461190a908361186c565b6002553360009081526003602052604090206001015461192a818361186c565b33600090815260036020526040902060018101919091556002015461194f818561186c565b336000908152600360205260409020600201556004546119709085906115a4565b33600081815260036020526040902060040180549290920390915530600080516020611c6c8339815191526119a5878761186c565b60408051918252519081900360200190a360408051858152905133917f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd919081900360200190a250505050565b6000828201838110156115fd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b80611a5633610f97565b1015611a6157600080fd5b683635c9adc5dea00000611a7e82611a78336112f0565b906119f2565b1015611a8957600080fd5b600254611a9690826119f2565b60029081553360009081526003602052604090200154611ab681836119f2565b33600090815260036020526040902060020155600454611ad79083906115a4565b336000818152600360209081526040918290206004018054909401909355805185815290513093600080516020611c6c833981519152928290030190a360408051838152905133917febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a919081900360200190a25050565b60008183611bda5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b9f578181015183820152602001611b87565b50505050905090810190601f168015611bcc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611be657fe5b0495945050505050565b60008184841115611c425760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611b9f578181015183820152602001611b87565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205a1a4213c9904258f99713ae5c5bf12368500c0bb558b3aa1b3d7fd19d936bd264736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101e45760003560e01c806357f6b8121161010f57806395d89b41116100a2578063dd62ed3e11610071578063dd62ed3e14610678578063e5225381146106a6578063f2fde38b146106ae578063f59c3708146106d4576101e4565b806395d89b4114610601578063a694fc3a14610609578063a9059cbb14610626578063af500ba314610652576101e4565b8063817b1cd2116100de578063817b1cd2146105b05780638456cb59146105b85780638da5cb5b146105c057806391c05b0b146105e4576101e4565b806357f6b812146105295780635c975abb1461057a57806370a0823114610582578063715018a6146105a8576101e4565b80632e17de78116101875780633f4ba83a116101565780633f4ba83a146104775780634000aea01461047f57806342966c68146105045780634be8b05e14610521576101e4565b80632e17de781461040e578063313ce5671461042b578063323be1c5146104495780633af32abf14610451576101e4565b8063153a1f3e116101c3578063153a1f3e146102de57806318160ddd146103a257806323b872dd146103aa578063279f7176146103e0576101e4565b806265318b146101e957806306fdde0314610221578063095ea7b31461029e575b600080fd5b61020f600480360360208110156101ff57600080fd5b50356001600160a01b0316610702565b60408051918252519081900360200190f35b61022961074a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026357818101518382015260200161024b565b50505050905090810190601f1680156102905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ca600480360360408110156102b457600080fd5b506001600160a01b038135169060200135610776565b604080519115158252519081900360200190f35b6103a0600480360360408110156102f457600080fd5b81019060208101813564010000000081111561030f57600080fd5b82018360208201111561032157600080fd5b8035906020019184602083028401116401000000008311171561034357600080fd5b91939092909160208101903564010000000081111561036157600080fd5b82018360208201111561037357600080fd5b8035906020019184602083028401116401000000008311171561039557600080fd5b509092509050610858565b005b61020f61092e565b6102ca600480360360608110156103c057600080fd5b506001600160a01b03813581169160208101359091169060400135610934565b6103a0600480360360408110156103f657600080fd5b506001600160a01b0381351690602001351515610a4d565b6103a06004803603602081101561042457600080fd5b5035610b03565b610433610b86565b6040805160ff9092168252519081900360200190f35b6102ca610b8b565b6102ca6004803603602081101561046757600080fd5b50356001600160a01b0316610b99565b6103a0610bb7565b6102ca6004803603606081101561049557600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104c557600080fd5b8201836020820111156104d757600080fd5b803590602001918460018302840111640100000000831117156104f957600080fd5b509092509050610c5d565b6103a06004803603602081101561051a57600080fd5b5035610dc1565b6103a0610efc565b61054f6004803603602081101561053f57600080fd5b50356001600160a01b0316610f49565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6102ca610f8e565b61020f6004803603602081101561059857600080fd5b50356001600160a01b0316610f97565b6103a0610fc7565b61020f611026565b6103a061102c565b6105c861110c565b604080516001600160a01b039092168252519081900360200190f35b6103a0600480360360208110156105fa57600080fd5b503561111b565b6102296111c1565b6103a06004803603602081101561061f57600080fd5b50356111e1565b6102ca6004803603604081101561063c57600080fd5b506001600160a01b038135169060200135611261565b61020f6004803603602081101561066857600080fd5b50356001600160a01b03166112f0565b61020f6004803603604081101561068e57600080fd5b506001600160a01b038135811691602001351661130e565b61020f61133a565b6103a0600480360360208110156106c457600080fd5b50356001600160a01b0316611471565b6103a0600480360360408110156106ea57600080fd5b506001600160a01b03813516906020013515156114f6565b6001600160a01b0381166000908152600360205260408120600480820154600290920154905461074492600160401b92909161073d916115a4565b0390611604565b92915050565b6040518060400160405280601081526020016f088caccd2c2dcc6ca40a0d0decadcd2f60831b81525081565b60065460009060ff16158061079557506000546001600160a01b031633145b806107b4575033600090815260036020526040902054610100900460ff165b6107f0576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b3360008181526003602081815260408084206001600160a01b0389168086529301825292839020869055825186815292519193927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60065460ff16158061087457506000546001600160a01b031633145b80610893575033600090815260036020526040902054610100900460ff165b6108cf576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b8281146108db57600080fd5b60005b838110156109275761091e338686848181106108f657fe5b905060200201356001600160a01b031685858581811061091257fe5b90506020020135611646565b506001016108de565b5050505050565b60015490565b60065460009060ff16158061095357506000546001600160a01b031633145b80610972575033600090815260036020526040902054610100900460ff165b6109ae576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b6001600160a01b038416600090815260036020818152604080842033855290920190529020548211156109e057600080fd5b6001600160a01b03841660009081526003602081815260408084203385529092019052902054610a10818461186c565b6001600160a01b03861660009081526003602081815260408084203385529092019052902055610a41858585611646565b50600195945050505050565b6005546001600160a01b03163314610a9b576040805162461bcd60e51b815260206004820152600c60248201526b6f6e6c792061646d696e2e2160a01b604482015290519081900360640190fd5b6001600160a01b038216600081815260036020908152604091829020805461ff00191661010086151590810291909117909155825190815291517f98970095ca49ea76125d950289e4accb06720056271360a2168f6c2aba273cae9281900390910190a25050565b60065460ff161580610b1f57506000546001600160a01b031633145b80610b3e575033600090815260036020526040902054610100900460ff165b610b7a576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b610b83816118ae565b50565b601281565b600654610100900460ff1681565b6001600160a01b031660009081526003602052604090205460ff1690565b6000546001600160a01b03163314610bce57600080fd5b60065460ff16610c14576040805162461bcd60e51b815260206004820152600c60248201526b6e6f74207061757365642e2160a01b604482015290519081900360640190fd5b60065460ff161515600114610c2857600080fd5b6006805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60065460009060ff161580610c7c57506000546001600160a01b031633145b80610c9b575033600090815260036020526040902054610100900460ff165b610cd7576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b6000610ce4338787611646565b9050853b63ffffffff811615610db457866001600160a01b0316636be32e73338488886040518563ffffffff1660e01b815260040180856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b158015610d7f57600080fd5b505af1158015610d93573d6000803e3d6000fd5b505050506040513d6020811015610da957600080fd5b5051610db457600080fd5b5060019695505050505050565b6005546001600160a01b0316331415610dd957600080fd5b80610de333610f97565b1015610dee57600080fd5b33600090815260036020526040902060010154610e0b818361186c565b33600090815260036020526040902060010155600254829015610e8e57610e33816002611604565b600254909150600090610e5490610e4e84600160401b6115a4565b90611604565b600454909150610e6490826119f2565b60045560408051838152905130913391600080516020611c6c8339815191529181900360200190a3505b600154610e9b908261186c565b6001556040805182815290516000913391600080516020611c6c8339815191529181900360200190a36040805182815290517fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9181900360200190a1505050565b6000546001600160a01b03163314610f1357600080fd5b6006805461ffff191690556040517faff39f66825d4448497d384dee3f4a3adf00a622960add00806503ae4ccee01c90600090a1565b6000806000806000610f5961092e565b610f61611026565b610f6a88610f97565b610f73896112f0565b610f7c8a610702565b939a9299509097509550909350915050565b60065460ff1681565b6000610744610fa5836112f0565b6001600160a01b0384166000908152600360205260409020600101549061186c565b6000546001600160a01b03163314610fde57600080fd5b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b60025490565b6000546001600160a01b0316331461104357600080fd5b60065460ff16158061105f57506000546001600160a01b031633145b8061107e575033600090815260036020526040902054610100900460ff165b6110ba576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b60065460ff6101009091041615156001146110d457600080fd5b6006805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6000546001600160a01b031681565b60025461112757600080fd5b8061113133610f97565b101561113c57600080fd5b33600090815260036020526040902060010154611159818361186c565b3360009081526003602052604081206001019190915560025461118490610e4e85600160401b6115a4565b60045490915061119490826119f2565b60045560408051848152905130913391600080516020611c6c8339815191529181900360200190a3505050565b604051806040016040528060048152602001630888aa0960e31b81525081565b60065460ff1615806111fd57506000546001600160a01b031633145b8061121c575033600090815260036020526040902054610100900460ff165b611258576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b610b8381611a4c565b60065460009060ff16158061128057506000546001600160a01b031633145b8061129f575033600090815260036020526040902054610100900460ff165b6112db576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b6112e6338484611646565b5060019392505050565b6001600160a01b031660009081526003602052604090206002015490565b6001600160a01b0391821660009081526003602081815260408084209490951683529201909152205490565b60065460009060ff16158061135957506000546001600160a01b031633145b80611378575033600090815260036020526040902054610100900460ff165b6113b4576040805162461bcd60e51b81526020600482015260086024820152677061757365642e2160c01b604482015290519081900360640190fd5b60006113bf33610702565b90506113cf81600160401b6115a4565b336000908152600360205260409020600481018054909201909155600101546113f881836119f2565b33600081815260036020908152604091829020600101939093558051858152905191923092600080516020611c6c8339815191529281900390910190a360408051838152905133917f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999919081900360200190a250905090565b6000546001600160a01b0316331461148857600080fd5b6001600160a01b03811661149b57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611544576040805162461bcd60e51b815260206004820152600c60248201526b6f6e6c792061646d696e2e2160a01b604482015290519081900360640190fd5b6001600160a01b038216600081815260036020908152604091829020805460ff1916851515908117909155825190815291517f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d9281900390910190a25050565b6000826115b357506000610744565b828202828482816115c057fe5b04146115fd5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c4b6021913960400191505060405180910390fd5b9392505050565b60006115fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b4e565b60008161165285610f97565b101561165d57600080fd5b6001600160a01b038416600090815260036020526040902060010154611683818461186c565b6001600160a01b0386166000908152600360205260408120600101919091556116b26064610e4e8660026115a4565b90506116cf6064610e4e6a02fa54641bae8aaa000000600a6115a4565b6116e1826116db61092e565b9061186c565b10806116f157506116f186610b99565b156116fa575060005b6000611706858361186c565b6001600160a01b03871660009081526003602052604090206001015490915061172f81836119f2565b6001600160a01b0380891660008181526003602090815260409182902060010194909455805186815290519193928c1692600080516020611c6c83398151915292918290030190a3821561186157600254156117ee57611790836002611604565b6002549093506000906117ab90610e4e86600160401b6115a4565b6004549091506117bb90826119f2565b60045560408051858152905130916001600160a01b038c1691600080516020611c6c8339815191529181900360200190a3505b6001546117fb908461186c565b6001556040805184815290516000916001600160a01b038b1691600080516020611c6c8339815191529181900360200190a36040805184815290517fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9181900360200190a15b509695505050505050565b60006115fd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bf0565b806118b8336112f0565b10156118c357600080fd5b60006118d56064610e4e8460026115a4565b6002549091506118fa906118f190610e4e84600160401b6115a4565b600454906119f2565b60045560025461190a908361186c565b6002553360009081526003602052604090206001015461192a818361186c565b33600090815260036020526040902060018101919091556002015461194f818561186c565b336000908152600360205260409020600201556004546119709085906115a4565b33600081815260036020526040902060040180549290920390915530600080516020611c6c8339815191526119a5878761186c565b60408051918252519081900360200190a360408051858152905133917f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd919081900360200190a250505050565b6000828201838110156115fd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b80611a5633610f97565b1015611a6157600080fd5b683635c9adc5dea00000611a7e82611a78336112f0565b906119f2565b1015611a8957600080fd5b600254611a9690826119f2565b60029081553360009081526003602052604090200154611ab681836119f2565b33600090815260036020526040902060020155600454611ad79083906115a4565b336000818152600360209081526040918290206004018054909401909355805185815290513093600080516020611c6c833981519152928290030190a360408051838152905133917febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a919081900360200190a25050565b60008183611bda5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b9f578181015183820152602001611b87565b50505050905090810190601f168015611bcc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611be657fe5b0495945050505050565b60008184841115611c425760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611b9f578181015183820152602001611b87565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205a1a4213c9904258f99713ae5c5bf12368500c0bb558b3aa1b3d7fd19d936bd264736f6c634300060c0033
Deployed Bytecode Sourcemap
6752:10090:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13638:206;;;;;;;;;;;;;;;;-1:-1:-1;13638:206:0;-1:-1:-1;;;;;13638:206:0;;:::i;:::-;;;;;;;;;;;;;;;;7109:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11583:217;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11583:217:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12536:273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12536:273:0;;-1:-1:-1;12536:273:0;-1:-1:-1;12536:273:0;:::i;:::-;;13215:86;;;:::i;11805:355::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11805:355:0;;;;;;;;;;;;;;;;;:::i;13006:204::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13006:204:0;;;;;;;;;;:::i;9701:84::-;;;;;;;;;;;;;;;;-1:-1:-1;9701:84:0;;:::i;7203:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8155:27;;;:::i;13990:111::-;;;;;;;;;;;;;;;;-1:-1:-1;13990:111:0;-1:-1:-1;;;;;13990:111:0;;:::i;9013:125::-;;;:::i;12165:366::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12165:366:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12165:366:0;;-1:-1:-1;12165:366:0;-1:-1:-1;12165:366:0;:::i;10251:721::-;;;;;;;;;;;;;;;;-1:-1:-1;10251:721:0;;:::i;9223:128::-;;;:::i;14106:275::-;;;;;;;;;;;;;;;;-1:-1:-1;14106:275:0;-1:-1:-1;;;;;14106:275:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8125:26;;;:::i;13397:127::-;;;;;;;;;;;;;;;;-1:-1:-1;13397:127:0;-1:-1:-1;;;;;13397:127:0;;:::i;1194:114::-;;;:::i;13306:86::-;;;:::i;8787:139::-;;;:::i;246:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;246:20:0;;;;;;;;;;;;;;10977:449;;;;;;;;;;;;;;;;-1:-1:-1;10977:449:0;;:::i;7161:38::-;;;:::i;9615:81::-;;;;;;;;;;;;;;;;-1:-1:-1;9615:81:0;;:::i;11431:147::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11431:147:0;;;;;;;;:::i;13529:104::-;;;;;;;;;;;;;;;;-1:-1:-1;13529:104:0;-1:-1:-1;;;;;13529:104:0;;:::i;13849:136::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13849:136:0;;;;;;;;;;:::i;9790:456::-;;;:::i;921:178::-;;;;;;;;;;;;;;;;-1:-1:-1;921:178:0;-1:-1:-1;;;;;921:178:0;;:::i;12814:189::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12814:189:0;;;;;;;;;;:::i;13638:206::-;-1:-1:-1;;;;;13790:17:0;;13695:7;13790:17;;;:10;:17;;;;;:30;;;;;:10;13761:24;;;;13731:25;;13716:123;;-1:-1:-1;;;6856:5:0;13790:30;;13731:55;;:29;:55::i;:::-;13724:96;;13716:109;:123::i;:::-;13709:130;13638:206;-1:-1:-1;;13638:206:0:o;7109:48::-;;;;;;;;;;;;;;-1:-1:-1;;;7109:48:0;;;;:::o;11583:217::-;8330:6;;11667:4;;8330:6;;8329:7;;:30;;-1:-1:-1;8354:5:0;;-1:-1:-1;;;;;8354:5:0;8340:10;:19;8329:30;:73;;;-1:-1:-1;8374:10:0;8363:22;;;;:10;:22;;;;;:39;;;;;;8329:73;8321:94;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;;;;11689:10:::1;11678:22;::::0;;;:10;:22:::1;::::0;;;;;;;-1:-1:-1;;;;;11678:42:0;::::1;::::0;;;:32;::::1;:42:::0;;;;;;:52;;;11740:39;;;;;;;11678:42;;11689:10;11740:39:::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;11791:4:0::1;11583:217:::0;;;;:::o;12536:273::-;8330:6;;;;8329:7;;:30;;-1:-1:-1;8354:5:0;;-1:-1:-1;;;;;8354:5:0;8340:10;:19;8329:30;:73;;;-1:-1:-1;8374:10:0;8363:22;;;;:10;:22;;;;;:39;;;;;;8329:73;8321:94;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;;;;12654:36;;::::1;12646:45;;;::::0;::::1;;12701:9;12696:109;12716:21:::0;;::::1;12696:109;;;12750:49;12760:10;12772;;12783:1;12772:13;;;;;;;;;;;;;-1:-1:-1::0;;;;;12772:13:0::1;12787:8;;12796:1;12787:11;;;;;;;;;;;;;12750:9;:49::i;:::-;-1:-1:-1::0;12739:3:0::1;;12696:109;;;;12536:273:::0;;;;:::o;13215:86::-;13280:4;:16;13215:86;:::o;11805:355::-;8330:6;;11904:4;;8330:6;;8329:7;;:30;;-1:-1:-1;8354:5:0;;-1:-1:-1;;;;;8354:5:0;8340:10;:19;8329:30;:73;;;-1:-1:-1;8374:10:0;8363:22;;;;:10;:22;;;;;:39;;;;;;8329:73;8321:94;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11923:17:0;::::1;;::::0;;;:10;:17:::1;::::0;;;;;;;11951:10:::1;11923:39:::0;;:27;;::::1;:39:::0;;;;;:50;-1:-1:-1;11923:50:0::1;11915:59;;;::::0;::::1;;-1:-1:-1::0;;;;;11997:17:0;::::1;11981:13;11997:17:::0;;;:10;:17:::1;::::0;;;;;;;12025:10:::1;11997:39:::0;;:27;;::::1;:39:::0;;;;;12083:21:::1;11997:39:::0;12096:7;12083:12:::1;:21::i;:::-;-1:-1:-1::0;;;;;12041:17:0;::::1;;::::0;;;:10;:17:::1;::::0;;;;;;;12069:10:::1;12041:39:::0;;:27;;::::1;:39:::0;;;;:63;12109:30:::1;12052:5:::0;12126:3;12131:7;12109:9:::1;:30::i;:::-;-1:-1:-1::0;12151:4:0::1;::::0;11805:355;-1:-1:-1;;;;;11805:355:0:o;13006:204::-;8658:10;;-1:-1:-1;;;;;8658:10:0;8644;:24;8636:48;;;;;-1:-1:-1;;;8636:48:0;;;;;;;;;;;;-1:-1:-1;;;8636:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13121:17:0;::::1;;::::0;;;:10;:17:::1;::::0;;;;;;;;:44;;-1:-1:-1;;13121:44:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;13175:30;;;;;;;::::1;::::0;;;;;;;;::::1;13006:204:::0;;:::o;9701:84::-;8330:6;;;;8329:7;;:30;;-1:-1:-1;8354:5:0;;-1:-1:-1;;;;;8354:5:0;8340:10;:19;8329:30;:73;;;-1:-1:-1;8374:10:0;8363:22;;;;:10;:22;;;;;:39;;;;;;8329:73;8321:94;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;;;;9763:17:::1;9772:7;9763:8;:17::i;:::-;9701:84:::0;:::o;7203:35::-;7236:2;7203:35;:::o;8155:27::-;;;;;;;;;:::o;13990:111::-;-1:-1:-1;;;;;14067:17:0;14049:4;14067:17;;;:10;:17;;;;;:29;;;;13990:111::o;9013:125::-;734:5;;-1:-1:-1;;;;;734:5:0;720:10;:19;712:28;;;;;;8567:6:::1;::::0;::::1;;8559:31;;;::::0;;-1:-1:-1;;;8559:31:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;8559:31:0;;;;;;;;;;;;;::::1;;9075:6:::2;::::0;::::2;;:14;;:6:::0;:14:::2;9067:23;;;::::0;::::2;;9097:6;:14:::0;;-1:-1:-1;;9097:14:0::2;::::0;;9123:9:::2;::::0;::::2;::::0;9106:5:::2;::::0;9123:9:::2;9013:125::o:0;12165:366::-;8330:6;;12274:4;;8330:6;;8329:7;;:30;;-1:-1:-1;8354:5:0;;-1:-1:-1;;;;;8354:5:0;8340:10;:19;8329:30;:73;;;-1:-1:-1;8374:10:0;8363:22;;;;:10;:22;;;;;:39;;;;;;8329:73;8321:94;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;;;;12285:20:::1;12308:35;12318:10;12330:3;12335:7;12308:9;:35::i;:::-;12285:58:::0;-1:-1:-1;12389:16:0;::::1;12418:9;::::0;::::1;::::0;12414:97:::1;;12453:3;-1:-1:-1::0;;;;;12443:28:0::1;;12472:10;12484:12;12498:5;;12443:61;;;;;;;;;;;;;-1:-1:-1::0;;;;;12443:61:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12443:61:0;12435:70:::1;;;::::0;::::1;;-1:-1:-1::0;12522:4:0::1;::::0;12165:366;-1:-1:-1;;;;;;12165:366:0:o;10251:721::-;10318:10;;-1:-1:-1;;;;;10318:10:0;10304;:24;;10296:33;;;;;;10367:7;10342:21;10352:10;10342:9;:21::i;:::-;:32;;10334:41;;;;;;10409:10;10382:13;10398:22;;;:10;:22;;;;;:4;:30;;10466:21;10398:30;10479:7;10466:12;:21::i;:::-;10444:10;10433:22;;;;:10;:22;;;;;:4;:30;:54;:10;10532:16;10516:7;;10532:20;10528:293;;10576:20;:13;10594:1;10576:17;:20::i;:::-;10659:16;;10560:36;;-1:-1:-1;10602:18:0;;10623:53;;:31;10560:36;-1:-1:-1;;;10623:17:0;:31::i;:::-;:35;;:53::i;:::-;10710:25;;10602:74;;-1:-1:-1;10710:44:0;;10602:74;10710:29;:44::i;:::-;10682:25;:72;10765:50;;;;;;;;10794:4;;10774:10;;-1:-1:-1;;;;;;;;;;;10765:50:0;;;;;;;;10528:293;;10844:4;:16;:35;;10865:13;10844:20;:35::i;:::-;10825:4;:54;10889:49;;;;;;;;10825:16;;10898:10;;-1:-1:-1;;;;;;;;;;;10889:49:0;;;;;;;;10948:19;;;;;;;;;;;;;;;;;10251:721;;;:::o;9223:128::-;734:5;;-1:-1:-1;;;;;734:5:0;720:10;:19;712:28;;;;;;9273:6:::1;:14:::0;;-1:-1:-1;;9298:16:0;;;9330:13:::1;::::0;::::1;::::0;9282:5:::1;::::0;9330:13:::1;9223:128::o:0;14106:275::-;14162:24;14188:25;14215:19;14236:18;14256:21;14292:13;:11;:13::i;:::-;14307;:11;:13::i;:::-;14322:16;14332:5;14322:9;:16::i;:::-;14340:15;14349:5;14340:8;:15::i;:::-;14357:18;14369:5;14357:11;:18::i;:::-;14284:92;;;;-1:-1:-1;14284:92:0;;-1:-1:-1;14284:92:0;-1:-1:-1;14284:92:0;;-1:-1:-1;14106:275:0;-1:-1:-1;;14106:275:0:o;8125:26::-;;;;;;:::o;13397:127::-;13452:7;13473:46;13503:15;13512:5;13503:8;:15::i;:::-;-1:-1:-1;;;;;13473:17:0;;;;;;:10;:17;;;;;:4;:25;;;:29;:46::i;1194:114::-;734:5;;-1:-1:-1;;;;;734:5:0;720:10;:19;712:28;;;;;;1271:5:::1;::::0;;1252:25:::1;::::0;-1:-1:-1;;;;;1271:5:0;;::::1;::::0;1252:25:::1;::::0;::::1;1300:1;1284:18:::0;;-1:-1:-1;;;;;;1284:18:0::1;::::0;;1194:114::o;13306:86::-;13371:16;;13306:86;:::o;8787:139::-;734:5;;-1:-1:-1;;;;;734:5:0;720:10;:19;712:28;;;;;;8330:6:::1;::::0;::::1;;8329:7;::::0;:30:::1;;-1:-1:-1::0;8354:5:0::1;::::0;-1:-1:-1;;;;;8354:5:0::1;8340:10;:19;8329:30;:73;;;-1:-1:-1::0;8374:10:0::1;8363:22;::::0;;;:10;:22:::1;::::0;;;;:39;::::1;::::0;::::1;;;8329:73;8321:94;;;::::0;;-1:-1:-1;;;8321:94:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;;::::1;;8854:8:::2;::::0;::::2;;::::0;;::::2;;:16;;:8;:16;8846:25;;;::::0;::::2;;8882:6;:13:::0;;-1:-1:-1;;8882:13:0::2;8891:4;8882:13;::::0;;8911:7:::2;::::0;::::2;::::0;8882:6:::2;::::0;8911:7:::2;8787:139::o:0;246:20::-;;;-1:-1:-1;;;;;246:20:0;;:::o;10977:449::-;11036:16;;11028:29;;;;;;11095:7;11070:21;11080:10;11070:9;:21::i;:::-;:32;;11062:41;;;;;;11135:10;11108:13;11124:22;;;:10;:22;;;;;:4;:30;;11192:21;11124:30;11205:7;11192:12;:21::i;:::-;11170:10;11159:22;;;;:10;:22;;;;;:4;:30;:54;;;;:10;11273:16;11243:47;;:25;:7;-1:-1:-1;;;11243:11:0;:25::i;:47::-;11323:25;;11222:68;;-1:-1:-1;11323:44:0;;11222:68;11323:29;:44::i;:::-;11295:25;:72;11377:44;;;;;;;;11406:4;;11386:10;;-1:-1:-1;;;;;;;;;;;11377:44:0;;;;;;;;10977:449;;;:::o;7161:38::-;;;;;;;;;;;;;;-1:-1:-1;;;7161:38:0;;;;:::o;9615:81::-;8330:6;;;;8329:7;;:30;;-1:-1:-1;8354:5:0;;-1:-1:-1;;;;;8354:5:0;8340:10;:19;8329:30;:73;;;-1:-1:-1;8374:10:0;8363:22;;;;:10;:22;;;;;:39;;;;;;8329:73;8321:94;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;;;;9676:15:::1;9683:7;9676:6;:15::i;11431:147::-:0;8330:6;;11511:4;;8330:6;;8329:7;;:30;;-1:-1:-1;8354:5:0;;-1:-1:-1;;;;;8354:5:0;8340:10;:19;8329:30;:73;;;-1:-1:-1;8374:10:0;8363:22;;;;:10;:22;;;;;:39;;;;;;8329:73;8321:94;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;;;;11522:35:::1;11532:10;11544:3;11549:7;11522:9;:35::i;:::-;-1:-1:-1::0;11569:4:0::1;::::0;11431:147;-1:-1:-1;;;11431:147:0:o;13529:104::-;-1:-1:-1;;;;;13604:17:0;13583:7;13604:17;;;:10;:17;;;;;:10;:24;;;13529:104::o;13849:136::-;-1:-1:-1;;;;;13943:17:0;;;13922:7;13943:17;;;:10;:17;;;;;;;;:37;;;;;;:27;;:37;;;;;;13849:136::o;9790:456::-;8330:6;;9841:7;;8330:6;;8329:7;;:30;;-1:-1:-1;8354:5:0;;-1:-1:-1;;;;;8354:5:0;8340:10;:19;8329:30;:73;;;-1:-1:-1;8374:10:0;8363:22;;;;:10;:22;;;;;:39;;;;;;8329:73;8321:94;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;-1:-1:-1;;;8321:94:0;;;;;;;;;;;;;;;9855:18:::1;9876:23;9888:10;9876:11;:23::i;:::-;9855:44:::0;-1:-1:-1;9979:28:0::1;:10:::0;-1:-1:-1;;;9979:14:0::1;:28::i;:::-;9944:10;9933:22;::::0;;;:10;:22:::1;::::0;;;;:35:::1;::::0;::::1;:75:::0;;;;::::1;::::0;;;:4:::1;10029:30;::::0;10097:24:::1;10029:30:::0;10110:10;10097:12:::1;:24::i;:::-;10075:10;10064:22;::::0;;;:10;:22:::1;::::0;;;;;;;;:4:::1;:30;:57:::0;;;;10131:47;;;;;;;10075:10;;10148:4:::1;::::0;-1:-1:-1;;;;;;;;;;;10131:47:0;;;;;;;;::::1;10188:31;::::0;;;;;;;10196:10:::1;::::0;10188:31:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;10231:10:0;-1:-1:-1;9790:456:0;:::o;921:178::-;734:5;;-1:-1:-1;;;;;734:5:0;720:10;:19;712:28;;;;;;-1:-1:-1;;;;;998:22:0;::::1;990:31;;;::::0;::::1;;1054:5;::::0;;1033:37:::1;::::0;-1:-1:-1;;;;;1033:37:0;;::::1;::::0;1054:5;::::1;::::0;1033:37:::1;::::0;::::1;1077:5;:16:::0;;-1:-1:-1;;;;;;1077:16:0::1;-1:-1:-1::0;;;;;1077:16:0;;;::::1;::::0;;;::::1;::::0;;921:178::o;12814:189::-;8658:10;;-1:-1:-1;;;;;8658:10:0;8644;:24;8636:48;;;;;-1:-1:-1;;;8636:48:0;;;;;;;;;;;;-1:-1:-1;;;8636:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12924:17:0;::::1;;::::0;;;:10;:17:::1;::::0;;;;;;;;:39;;-1:-1:-1;;12924:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12973:25;;;;;;;::::1;::::0;;;;;;;;::::1;12814:189:::0;;:::o;3646:471::-;3704:7;3949:6;3945:47;;-1:-1:-1;3979:1:0;3972:8;;3945:47;4016:5;;;4020:1;4016;:5;:1;4040:5;;;;;:10;4032:56;;;;-1:-1:-1;;;4032:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4108:1;3646:471;-1:-1:-1;;;3646:471:0:o;4593:132::-;4651:7;4678:39;4682:1;4685;4678:39;;;;;;;;;;;;;;;;;:3;:39::i;14388:1165::-;14470:7;14512;14492:16;14502:5;14492:9;:16::i;:::-;:27;;14484:36;;;;;;-1:-1:-1;;;;;14545:17:0;;14525;14545;;;:10;:17;;;;;:4;:25;;14603;14545;14620:7;14603:16;:25::i;:::-;-1:-1:-1;;;;;14575:17:0;;;;;;:10;:17;;;;;:4;:25;:53;;;;14661:31;14688:3;14661:22;:7;14575:10;14661:11;:22::i;:31::-;14637:55;-1:-1:-1;14736:41:0;14773:3;14736:32;6907:5;7019:2;14736:18;:32::i;:41::-;14701:32;14719:13;14701;:11;:13::i;:::-;:17;;:32::i;:::-;:76;:100;;;;14781:20;14795:5;14781:13;:20::i;:::-;14697:135;;;-1:-1:-1;14825:1:0;14697:135;14836:20;14859:26;:7;14871:13;14859:11;:26::i;:::-;-1:-1:-1;;;;;14912:15:0;;14894;14912;;;:10;:15;;;;;:4;:23;;14836:49;;-1:-1:-1;14968:28:0;14912:23;14836:49;14968:14;:28::i;:::-;-1:-1:-1;;;;;14942:15:0;;;;;;;:10;:15;;;;;;;;;:4;:23;:54;;;;15006:34;;;;;;;14942:15;;15006:34;;;;-1:-1:-1;;;;;;;;;;;15006:34:0;;;;;;;;15049:17;;15045:480;;15078:16;;:20;15074:301;;15123:20;:13;15141:1;15123:17;:20::i;:::-;15213:16;;15107:36;;-1:-1:-1;15156:18:0;;15177:53;;:31;15107:36;-1:-1:-1;;;15177:17:0;:31::i;:53::-;15267:25;;15156:74;;-1:-1:-1;15267:44:0;;15156:74;15267:29;:44::i;:::-;15239:25;:72;15323:45;;;;;;;;15347:4;;-1:-1:-1;;;;;15323:45:0;;;-1:-1:-1;;;;;;;;;;;15323:45:0;;;;;;;;15074:301;;15399:4;:16;:35;;15420:13;15399:20;:35::i;:::-;15380:4;:54;15445:44;;;;;;;;15380:16;;-1:-1:-1;;;;;15445:44:0;;;-1:-1:-1;;;;;;;;;;;15445:44:0;;;;;;;;15500:19;;;;;;;;;;;;;;;;;15045:480;-1:-1:-1;15536:12:0;14388:1165;-1:-1:-1;;;;;;14388:1165:0:o;2756:136::-;2814:7;2841:43;2845:1;2848;2841:43;;;;;;;;;;;;;;;;;:3;:43::i;16070:769::-;16151:7;16127:20;16136:10;16127:8;:20::i;:::-;:31;;16119:40;;;;;;16164:21;16188:31;16215:3;16188:22;:7;6961:1;16188:11;:22::i;:31::-;16318:16;;16164:55;;-1:-1:-1;16252:84:0;;16282:53;;:31;16164:55;-1:-1:-1;;;16282:17:0;:31::i;:53::-;16252:25;;;:29;:84::i;:::-;16224:25;:112;16360:16;;:29;;16381:7;16360:20;:29::i;:::-;16341:16;:48;16427:10;16396:17;16416:22;;;:10;:22;;;;;16341:4;16416:30;;16484:31;16416:30;16501:13;16484:16;:31::i;:::-;16462:10;16451:22;;;;:10;:22;;;;;:4;:30;;:64;;;;:10;16541:29;;16607:24;16541:29;16623:7;16607:15;:24::i;:::-;16586:10;16575:22;;;;:10;:22;;;;;:10;:29;:56;16696:25;;16684:38;;:7;;:11;:38::i;:::-;16649:10;16638:22;;;;:10;:22;;;;;:35;;:85;;;;;;;;;16750:4;-1:-1:-1;;;;;;;;;;;16769:26:0;:7;16781:13;16769:11;:26::i;:::-;16733:63;;;;;;;;;;;;;;;16806:28;;;;;;;;16814:10;;16806:28;;;;;;;;;;16070:769;;;;:::o;2292:181::-;2350:7;2382:5;;;2406:6;;;;2398:46;;;;;-1:-1:-1;;;2398:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15558:509;15638:7;15613:21;15623:10;15613:9;:21::i;:::-;:32;;15605:41;;;;;;7090:4;15659:33;15684:7;15659:20;15668:10;15659:8;:20::i;:::-;:24;;:33::i;:::-;:53;;15651:62;;;;;;15737:16;;:29;;15758:7;15737:20;:29::i;:::-;15718:16;:48;;;15803:10;15773:16;15792:22;;;:10;:22;;;;;:29;;15858:24;15792:29;15874:7;15858:15;:24::i;:::-;15837:10;15826:22;;;;:10;:22;;;;;:10;:29;:56;15945:25;;15933:38;;:7;;:11;:38::i;:::-;15898:10;15887:22;;;;:10;:22;;;;;;;;;:35;;:85;;;;;;;;15982:44;;;;;;;16011:4;;-1:-1:-1;;;;;;;;;;;15982:44:0;;;;;;;16036:26;;;;;;;;16042:10;;16036:26;;;;;;;;;;15558:509;;:::o;5221:278::-;5307:7;5342:12;5335:5;5327:28;;;;-1:-1:-1;;;5327:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5366:9;5382:1;5378;:5;;;;;;;5221:278;-1:-1:-1;;;;;5221:278:0:o;3195:192::-;3281:7;3317:12;3309:6;;;;3301:29;;;;-1:-1:-1;;;3301:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3353:5:0;;;3195:192::o
Swarm Source
ipfs://5a1a4213c9904258f99713ae5c5bf12368500c0bb558b3aa1b3d7fd19d936bd2
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.