ERC-20
Overview
Max Total Supply
21,000,000 SETH
Holders
1,664
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SETH
Compiler Version
v0.4.26+commit.4563c3fc
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-03-20 */ /** * SETH Token */ pragma solidity ^0.4.23; /** * @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 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; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint); function balanceOf(address who) public view returns (uint); function transfer(address to, uint value) public returns (bool); event Transfer(address indexed from, address indexed to, uint value); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public constant returns (uint); function transferFrom(address from, address to, uint value) public returns (bool); function approve(address spender, uint value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint value); } /** * Upgrade agent interface inspired by Lunyr. * * Upgrade agent transfers tokens to a new contract. * Upgrade agent itself can be the token contract, or just a middle man contract doing the heavy lifting. */ contract UpgradeAgent { uint public originalSupply; /** Interface marker */ function isUpgradeAgent() public pure returns (bool) { return true; } function upgradeFrom(address _from, uint256 _value) public; } /** * Define interface for releasing the token transfer after a successful crowdsale. */ contract ReleasableToken is ERC20, Ownable { /* The finalizer contract that allows unlift the transfer limits on this token */ address public releaseAgent; /** A crowdsale contract can release us to the wild if ICO success. If false we are are in transfer lock up period.*/ bool public released = false; /** Map of agents that are allowed to transfer tokens regardless of the lock down period. These are crowdsale contracts and possible the team multisig itself. */ mapping (address => bool) public transferAgents; /** * Limit token transfer until the crowdsale is over. * */ modifier canTransfer(address _sender) { if(!released) { if(!transferAgents[_sender]) { revert(); } } _; } /** * Set the contract that can call release and make the token transferable. * * Design choice. Allow reset the release agent to fix fat finger mistakes. */ function setReleaseAgent(address addr) onlyOwner inReleaseState(false) public { // We don't do interface check here as we might want to a normal wallet address to act as a release agent releaseAgent = addr; } /** * Owner can allow a particular address (a crowdsale contract) to transfer tokens despite the lock up period. */ function setTransferAgent(address addr, bool state) onlyOwner inReleaseState(false) public { transferAgents[addr] = state; } /** * Release the tokens to the wild. * * Can be called only from the release agent that is the final ICO contract. It is only called if the crowdsale has been success (first milestone reached). */ function releaseTokenTransfer() public onlyReleaseAgent { released = true; } /** * Unrelease the tokens to the wild. * */ function unReleaseTokenTransfer() public onlyReleaseAgent { released = false; } /** The function can be called only before or after the tokens have been releasesd */ modifier inReleaseState(bool releaseState) { if(releaseState != released) { revert(); } _; } /** The function can be called only by a whitelisted release agent. */ modifier onlyReleaseAgent() { if(msg.sender != releaseAgent) { revert(); } _; } function transfer(address _to, uint _value) canTransfer(msg.sender) public returns (bool success) { // Call StandardToken.transfer() return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint _value) canTransfer(_from) public returns (bool success) { // Call StandardToken.transferForm() return super.transferFrom(_from, _to, _value); } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; emit Unpause(); } } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint; mapping(address => uint) balances; uint totalSupply_; /** * @dev total number of tokens in existence */ function totalSupply() public view returns (uint) { return totalSupply_; } /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); // SafeMath.sub will throw if there is not enough balance. balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint balance) { return balances[_owner]; } } /** * @title Freezable Token * @dev Token that can be freezed. */ contract FreezableToken is BasicToken, Ownable { using SafeMath for uint; uint public unfreezeProcessTime = 3 days; uint public freezeTotal; uint public curId; uint public minFreeze = 100000000; mapping (address => uint) public freezes; mapping (address => uint) public unfreezes; mapping (address => uint) public lastUnfreezeTime; mapping (uint => address) public freezerAddress; mapping (address => uint) public freezerIds; /* This notifies clients about the amount frozen */ event Freeze(address indexed from, uint value); /* This notifies clients about the amount unfrozen */ event Unfreeze(address indexed from, uint value); event WithdrawUnfreeze(address indexed sender, uint unfreezeAmount); event SettleUnfreeze(address indexed freezer, uint value); function freezeOf(address _tokenOwner) public view returns (uint balance) { return freezes[_tokenOwner]; } function unfreezeOf(address _tokenOwner) public view returns (uint balance) { return unfreezes[_tokenOwner]; } function freeze(uint _value) public returns (bool success) { if (freezerIds[msg.sender] == 0) { curId = curId.add(1); freezerIds[msg.sender] = curId; freezerAddress[curId] = msg.sender; } require(_value <= balances[msg.sender]); //0 not allowed require (_value >= minFreeze); address sender = msg.sender; balances[sender] = balances[sender].sub(_value); freezeTotal = freezeTotal.add(_value); freezes[sender] = freezes[sender].add(_value); emit Freeze(sender, _value); return true; } function unfreeze(uint _value) public returns (bool success) { require(_value <= freezes[msg.sender]); //0 not allowed require (_value > 0); address sender = msg.sender; freezes[sender] = freezes[sender].sub(_value); lastUnfreezeTime[sender] = block.timestamp; freezeTotal = freezeTotal.sub(_value); unfreezes[sender] = unfreezes[sender].add(_value); emit Unfreeze(sender, _value); return true; } function withdrawUnfreeze() public returns (bool success) { address sender = msg.sender; uint unfreezeAmount = unfreezes[sender]; uint unfreezeTime = lastUnfreezeTime[sender].add(unfreezeProcessTime); require(unfreezeAmount > 0); require(block.timestamp > unfreezeTime); unfreezes[sender] = 0; balances[sender] = balances[sender].add(unfreezeAmount); emit WithdrawUnfreeze(sender, unfreezeAmount); return true; } function ownerSettleUnfreeze(address _freezer) onlyOwner public returns (bool success) { uint unfreezeAmount = unfreezes[_freezer]; uint unfreezeTime = lastUnfreezeTime[_freezer].add(unfreezeProcessTime); require(unfreezeAmount > 0); require(block.timestamp > unfreezeTime); unfreezes[_freezer] = 0; balances[_freezer] = balances[_freezer].add(unfreezeAmount); emit SettleUnfreeze(_freezer, unfreezeAmount); return true; } function ownerSetProcessTime(uint _newTime) onlyOwner public returns (bool success) { unfreezeProcessTime = _newTime; return true; } function ownerSetMinFreeze(uint _newMinFreeze) public returns (bool success) { minFreeze = _newMinFreeze; return true; } } /** * Standard ERC20 token with Short Hand Attack and approve() race condition mitigation. * * Based on code by FirstBlood: * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is BasicToken, ERC20 { using SafeMath for uint; /* approve() allowances */ mapping (address => mapping (address => uint)) allowed; /* Interface declaration */ function isToken() public pure returns (bool weAre) { return true; } /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint _value) public returns (bool success) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); uint _allowance = allowed[_from][msg.sender]; balances[_to] = balances[_to].add(_value); balances[_from] = balances[_from].sub(_value); allowed[_from][msg.sender] = _allowance.sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint _value) public returns (bool success) { // To change the approve amount you first have to reduce the addresses` // allowance to zero by calling `approve(_spender, 0)` if it is not // already 0 to mitigate the race condition described here: // https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) revert(); allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public view returns (uint remaining) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } /** * Pausable token * * Simple ERC20 Token example, with pausable token creation **/ contract PausableToken is StandardToken, Pausable { function transfer(address _to, uint _value) whenNotPaused public returns (bool) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint _value) whenNotPaused public returns (bool) { return super.transferFrom(_from, _to, _value); } } /** * A token upgrade mechanism where users can opt-in amount of tokens to the next smart contract revision. * * First envisioned by Golem and Lunyr projects. */ contract UpgradeableToken is StandardToken { using SafeMath for uint; /** Contract / person who can set the upgrade path. This can be the same as team multisig wallet, as what it is with its default value. */ address public upgradeMaster; /** The next contract where the tokens will be migrated. */ UpgradeAgent public upgradeAgent; /** How many tokens we have upgraded by now. */ uint public totalUpgraded; /** * Upgrade states. * * - NotAllowed: The child contract has not reached a condition where the upgrade can bgun * - WaitingForAgent: Token allows upgrade, but we don't have a new agent yet * - ReadyToUpgrade: The agent is set, but not a single token has been upgraded yet * - Upgrading: Upgrade agent is set and the balance holders can upgrade their tokens * */ enum UpgradeState {Unknown, NotAllowed, WaitingForAgent, ReadyToUpgrade, Upgrading} /** * Somebody has upgraded some of his tokens. */ event Upgrade(address indexed _from, address indexed _to, uint _value); /** * New upgrade agent available. */ event UpgradeAgentSet(address agent); /** * Do not allow construction without upgrade master set. */ constructor(address _upgradeMaster) public { upgradeMaster = _upgradeMaster; } /** * Allow the token holder to upgrade some of their tokens to a new contract. */ function upgrade(uint value) public { UpgradeState state = getUpgradeState(); if (!(state == UpgradeState.ReadyToUpgrade || state == UpgradeState.Upgrading)) { // Called in a bad state revert(); } // Validate input value. if (value == 0) revert(); balances[msg.sender] = balances[msg.sender].sub(value); // Take tokens out from circulation totalSupply_ = totalSupply_.sub(value); totalUpgraded = totalUpgraded.add(value); // Upgrade agent reissues the tokens upgradeAgent.upgradeFrom(msg.sender, value); emit Upgrade(msg.sender, upgradeAgent, value); } /** * Set an upgrade agent that handles */ function setUpgradeAgent(address agent) external { if(!canUpgrade()) { // The token is not yet in a state that we could think upgrading revert(); } if (agent == 0x0) revert(); // Only a master can designate the next agent if (msg.sender != upgradeMaster) revert(); // Upgrade has already begun for an agent if (getUpgradeState() == UpgradeState.Upgrading) revert(); upgradeAgent = UpgradeAgent(agent); // Bad interface if(!upgradeAgent.isUpgradeAgent()) revert(); // Make sure that token supplies match in source and target if (upgradeAgent.originalSupply() != totalSupply_) revert(); emit UpgradeAgentSet(upgradeAgent); } /** * Get the state of the token upgrade. */ function getUpgradeState() public constant returns(UpgradeState) { if(!canUpgrade()) return UpgradeState.NotAllowed; else if(address(upgradeAgent) == 0x00) return UpgradeState.WaitingForAgent; else if(totalUpgraded == 0) return UpgradeState.ReadyToUpgrade; else return UpgradeState.Upgrading; } /** * Change the upgrade master. * * This allows us to set a new owner for the upgrade mechanism. */ function setUpgradeMaster(address master) public { if (master == 0x0) revert(); if (msg.sender != upgradeMaster) revert(); upgradeMaster = master; } /** * Child contract can enable to provide the condition when the upgrade can begun. */ function canUpgrade() public pure returns(bool) { return true; } } /** * @title Burnable Token * @dev Token that can be irreversibly burned (destroyed). */ contract BurnableToken is BasicToken { event Burn(address indexed burner, uint value); /** * @dev Burns a specific amount of tokens. * @param _value The amount of token to be burned. */ function burn(uint _value) public { require(_value <= balances[msg.sender]); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure address burner = msg.sender; balances[burner] = balances[burner].sub(_value); totalSupply_ = totalSupply_.sub(_value); emit Burn(burner, _value); emit Transfer(burner, address(0), _value); } } /** * Blacklist token * * Simple ERC20 Token example, with Blacklist token creation **/ contract BlacklistToken is BasicToken, ERC20, Ownable { event DestroyedBlackFunds(address _blackListedUser, uint _balance); event AddedBlackList(address _user); event RemovedBlackList(address _user); mapping (address => bool) public isBlackListed; modifier whenNotBlacklisted(address _sender) { require(!isBlackListed[_sender]); _; } function getBlackListStatus(address _maker) external constant returns (bool) { return isBlackListed[_maker]; } function addBlackList (address _evilUser) public onlyOwner { isBlackListed[_evilUser] = true; emit AddedBlackList(_evilUser); //event emmiting } function removeBlackList (address _clearedUser) public onlyOwner { isBlackListed[_clearedUser] = false; emit RemovedBlackList(_clearedUser); } function destroyBlackFunds (address _blackListedUser) public onlyOwner { require(isBlackListed[_blackListedUser]); uint dirtyFunds = balanceOf(_blackListedUser); balances[_blackListedUser] = 0; totalSupply_ -= dirtyFunds; emit DestroyedBlackFunds(_blackListedUser, dirtyFunds); } function transfer(address _to, uint _value) whenNotBlacklisted(msg.sender) public returns (bool) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint _value) whenNotBlacklisted(msg.sender) public returns (bool) { return super.transferFrom(_from, _to, _value); } } /** * @title Approvable Token * @dev Token that can be approve and call. */ interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) external; } contract ApprovableToken is StandardToken, Ownable { using SafeMath for uint; /** * Set allowance for other address and notify * * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it * * @param _spender The address authorized to spend * @param _value the max amount they can spend * @param _extraData some extra information to send to the approved contract */ function approveAndCall(address _spender, uint256 _value, bytes memory _extraData) public returns (bool success) { tokenRecipient spender = tokenRecipient(_spender); if (approve(_spender, _value)) { spender.receiveApproval(msg.sender, _value, address(this), _extraData); return true; } } } /** * * Token supply is created in the token contract creation and allocated to owner. * The owner can then transfer from its supply to crowdsale participants. * */ contract SETH is UpgradeableToken, ReleasableToken, PausableToken, BurnableToken, FreezableToken, ApprovableToken, BlacklistToken { string public name; string public symbol; uint8 public decimals; constructor(address _owner) UpgradeableToken(_owner) public { name = "SUPER ETH"; symbol = "SETH"; totalSupply_ = 21000000000000; decimals = 6; // Allocate initial balance to the owner balances[_owner] = totalSupply_; } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"state","type":"bool"}],"name":"setTransferAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unReleaseTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawUnfreeze","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_evilUser","type":"address"}],"name":"addBlackList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"freezes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_freezer","type":"address"}],"name":"ownerSettleUnfreeze","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setReleaseAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"freezerIds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newTime","type":"uint256"}],"name":"ownerSetProcessTime","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"unfreezeProcessTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"unfreezes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenOwner","type":"address"}],"name":"unfreezeOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_maker","type":"address"}],"name":"getBlackListStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"curId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgradeMaster","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"unfreeze","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getUpgradeState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"transferAgents","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"released","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"canUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"freezeTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minFreeze","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalUpgraded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenOwner","type":"address"}],"name":"freezeOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"releaseAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"freeze","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"agent","type":"address"}],"name":"setUpgradeAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isBlackListed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_clearedUser","type":"address"}],"name":"removeBlackList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"freezerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isToken","outputs":[{"name":"weAre","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_blackListedUser","type":"address"}],"name":"destroyBlackFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastUnfreezeTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newMinFreeze","type":"uint256"}],"name":"ownerSetMinFreeze","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"master","type":"address"}],"name":"setUpgradeMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_blackListedUser","type":"address"},{"indexed":false,"name":"_balance","type":"uint256"}],"name":"DestroyedBlackFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_user","type":"address"}],"name":"AddedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_user","type":"address"}],"name":"RemovedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"unfreezeAmount","type":"uint256"}],"name":"WithdrawUnfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"freezer","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"SettleUnfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Upgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"agent","type":"address"}],"name":"UpgradeAgentSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
60806040526000600760146101000a81548160ff0219169083151502179055506000600960006101000a81548160ff0219169083151502179055506203f480600a556305f5e100600d553480156200005657600080fd5b5060405160208062004667833981018060405281019080805190602001909291905050508080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040805190810160405280600981526020017f5355504552204554480000000000000000000000000000000000000000000000815250601490805190602001906200014b9291906200020f565b506040805190810160405280600481526020017f534554480000000000000000000000000000000000000000000000000000000081525060159080519060200190620001999291906200020f565b50651319718a50006001819055506006601660006101000a81548160ff021916908360ff1602179055506001546000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050620002be565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025257805160ff191683800117855562000283565b8280016001018555821562000283579182015b828111156200028257825182559160200191906001019062000265565b5b50905062000292919062000296565b5090565b620002bb91905b80821115620002b75760008160009055506001016200029d565b5090565b90565b61439980620002ce6000396000f30060806040526004361061029e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302f652a3146102a357806306fdde03146102f2578063094140f314610382578063095ea7b3146103995780630e1ca00e146103fe5780630ecb93c01461042d578063120426821461047057806316da746f146104c757806318160ddd1461052257806323b872dd1461054d57806329ff4f53146105d2578063313ce5671461061557806331c3a07b146106465780633f4ba83a1461069d57806342966c68146106b457806343b61bf9146106e157806345977d0314610726578063484b7b401461075357806353ec897b1461077e5780635772437f146107d557806359bf1abe1461082c5780635b40a584146108875780635c975abb146108b25780635de4ccb0146108e15780635f412d4f14610938578063600440cb1461094f57806366188463146109a65780636623fc4614610a0b57806370a0823114610a505780638444b39114610aa75780638456cb5914610ae0578063867c285714610af75780638da5cb5b14610b5257806395d89b4114610ba95780639613252114610c395780639738968c14610c68578063a14c1d8c14610c97578063a9059cbb14610cc2578063c1ff320814610d27578063c752ff6214610d52578063cae9ca5114610d7d578063cd4217c114610e28578063d1f276d314610e7f578063d73dd62314610ed6578063d7a78db814610f3b578063d7e7088a14610f80578063dd62ed3e14610fc3578063e47d60601461103a578063e4997dc514611095578063ee7f4378146110d8578063eefa597b14611145578063f2fde38b14611174578063f3bdc228146111b7578063fe43808e146111fa578063fe855e6914611251578063ffeb7d7514611296575b600080fd5b3480156102af57600080fd5b506102f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506112d9565b005b3480156102fe57600080fd5b506103076113b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561034757808201518184015260208101905061032c565b50505050905090810190601f1680156103745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038e57600080fd5b50610397611452565b005b3480156103a557600080fd5b506103e4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114cb565b604051808215151515815260200191505060405180910390f35b34801561040a57600080fd5b50610413611654565b604051808215151515815260200191505060405180910390f35b34801561043957600080fd5b5061046e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611842565b005b34801561047c57600080fd5b506104b1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061195c565b6040518082815260200191505060405180910390f35b3480156104d357600080fd5b50610508600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611974565b604051808215151515815260200191505060405180910390f35b34801561052e57600080fd5b50610537611bbb565b6040518082815260200191505060405180910390f35b34801561055957600080fd5b506105b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bc5565b604051808215151515815260200191505060405180910390f35b3480156105de57600080fd5b50610613600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c36565b005b34801561062157600080fd5b5061062a611cfa565b604051808260ff1660ff16815260200191505060405180910390f35b34801561065257600080fd5b50610687600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d0d565b6040518082815260200191505060405180910390f35b3480156106a957600080fd5b506106b2611d25565b005b3480156106c057600080fd5b506106df60048036038101908080359060200190929190505050611de5565b005b3480156106ed57600080fd5b5061070c60048036038101908080359060200190929190505050611f9d565b604051808215151515815260200191505060405180910390f35b34801561073257600080fd5b506107516004803603810190808035906020019092919050505061200b565b005b34801561075f57600080fd5b5061076861229b565b6040518082815260200191505060405180910390f35b34801561078a57600080fd5b506107bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122a1565b6040518082815260200191505060405180910390f35b3480156107e157600080fd5b50610816600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122b9565b6040518082815260200191505060405180910390f35b34801561083857600080fd5b5061086d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612302565b604051808215151515815260200191505060405180910390f35b34801561089357600080fd5b5061089c612358565b6040518082815260200191505060405180910390f35b3480156108be57600080fd5b506108c761235e565b604051808215151515815260200191505060405180910390f35b3480156108ed57600080fd5b506108f6612371565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561094457600080fd5b5061094d612397565b005b34801561095b57600080fd5b50610964612410565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109b257600080fd5b506109f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612436565b604051808215151515815260200191505060405180910390f35b348015610a1757600080fd5b50610a36600480360381019080803590602001909291905050506126c7565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a91600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061290b565b6040518082815260200191505060405180910390f35b348015610ab357600080fd5b50610abc612953565b60405180826004811115610acc57fe5b60ff16815260200191505060405180910390f35b348015610aec57600080fd5b50610af56129d2565b005b348015610b0357600080fd5b50610b38600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a93565b604051808215151515815260200191505060405180910390f35b348015610b5e57600080fd5b50610b67612ab3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bb557600080fd5b50610bbe612ad9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bfe578082015181840152602081019050610be3565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c4557600080fd5b50610c4e612b77565b604051808215151515815260200191505060405180910390f35b348015610c7457600080fd5b50610c7d612b8a565b604051808215151515815260200191505060405180910390f35b348015610ca357600080fd5b50610cac612b93565b6040518082815260200191505060405180910390f35b348015610cce57600080fd5b50610d0d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b99565b604051808215151515815260200191505060405180910390f35b348015610d3357600080fd5b50610d3c612c08565b6040518082815260200191505060405180910390f35b348015610d5e57600080fd5b50610d67612c0e565b6040518082815260200191505060405180910390f35b348015610d8957600080fd5b50610e0e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612c14565b604051808215151515815260200191505060405180910390f35b348015610e3457600080fd5b50610e69600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d97565b6040518082815260200191505060405180910390f35b348015610e8b57600080fd5b50610e94612de0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ee257600080fd5b50610f21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e06565b604051808215151515815260200191505060405180910390f35b348015610f4757600080fd5b50610f6660048036038101908080359060200190929190505050613002565b604051808215151515815260200191505060405180910390f35b348015610f8c57600080fd5b50610fc1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613300565b005b348015610fcf57600080fd5b50611024600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613622565b6040518082815260200191505060405180910390f35b34801561104657600080fd5b5061107b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136a9565b604051808215151515815260200191505060405180910390f35b3480156110a157600080fd5b506110d6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136c9565b005b3480156110e457600080fd5b50611103600480360381019080803590602001909291905050506137e3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561115157600080fd5b5061115a613816565b604051808215151515815260200191505060405180910390f35b34801561118057600080fd5b506111b5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061381f565b005b3480156111c357600080fd5b506111f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613977565b005b34801561120657600080fd5b5061123b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613afb565b6040518082815260200191505060405180910390f35b34801561125d57600080fd5b5061127c60048036038101908080359060200190929190505050613b13565b604051808215151515815260200191505060405180910390f35b3480156112a257600080fd5b506112d7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b25565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b6000600760149054906101000a900460ff16151581151514151561135857600080fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60148054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561144a5780601f1061141f5761010080835404028352916020019161144a565b820191906000526020600020905b81548152906001019060200180831161142d57829003601f168201915b505050505081565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114ae57600080fd5b6000600760146101000a81548160ff021916908315150217905550565b600080821415801561155a57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1561156457600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080600080339250600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491506116f3600a54601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b905060008211151561170457600080fd5b804211151561171257600080fd5b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117a8826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f8e116b8e0792b6bff100e3cd86c569b3cda6933ec3f3a4490f014c20a39f20ab836040518082815260200191505060405180910390a26001935050505090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189e57600080fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600e6020528060005260406000206000915090505481565b6000806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119d557600080fd5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150611a6b600a54601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b9050600082111515611a7c57600080fd5b8042111515611a8a57600080fd5b6000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b20826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167fe6f7a261c4bb689059588a0af6441e2817de16475a3a9a2ca76a3787c995c550836040518082815260200191505060405180910390a2600192505050919050565b6000600154905090565b600033601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c2157600080fd5b611c2c858585613c07565b9150509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c9257600080fd5b6000600760149054906101000a900460ff161515811515141515611cb557600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601660009054906101000a900460ff1681565b60126020528060005260406000206000915090505481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d8157600080fd5b600960009054906101000a900460ff161515611d9c57600080fd5b6000600960006101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611e3457600080fd5b339050611e88826000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611edf82600154613c3990919063ffffffff16565b6001819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ffb57600080fd5b81600a8190555060019050919050565b6000612015612953565b90506003600481111561202457fe5b81600481111561203057fe5b1480612051575060048081111561204357fe5b81600481111561204f57fe5b145b151561205c57600080fd5b600082141561206a57600080fd5b6120bb826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061211282600154613c3990919063ffffffff16565b60018190555061212d82600554613be990919063ffffffff16565b600581905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663753e88e533846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156121f857600080fd5b505af115801561220c573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac846040518082815260200191505060405180910390a35050565b600a5481565b600f6020528060005260406000206000915090505481565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c5481565b600960009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123f357600080fd5b6001600760146101000a81548160ff021916908315150217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612547576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125db565b61255a8382613c3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115151561271857600080fd5b60008311151561272757600080fd5b33905061277c83600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061281883600b54613c3990919063ffffffff16565b600b8190555061287083600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f846040518082815260200191505060405180910390a26001915050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061295d612b8a565b151561296c57600190506129cf565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156129b657600290506129cf565b600060055414156129ca57600390506129cf565b600490505b90565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a2e57600080fd5b600960009054906101000a900460ff16151515612a4a57600080fd5b6001600960006101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60086020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b6f5780601f10612b4457610100808354040283529160200191612b6f565b820191906000526020600020905b815481529060010190602001808311612b5257829003601f168201915b505050505081565b600760149054906101000a900460ff1681565b60006001905090565b600b5481565b600033601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515612bf557600080fd5b612bff8484613c52565b91505092915050565b600d5481565b60055481565b600080849050612c2485856114cb565b15612d8e578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612d1e578082015181840152602081019050612d03565b50505050905090810190601f168015612d4b5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612d6d57600080fd5b505af1158015612d81573d6000803e3d6000fd5b5050505060019150612d8f565b5b509392505050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612e9782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000806000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415613104576130636001600c54613be990919063ffffffff16565b600c81905550600c54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503360116000600c54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115151561315157600080fd5b600d54831015151561316257600080fd5b3390506131b6836000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320d83600b54613be990919063ffffffff16565b600b8190555061326583600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0846040518082815260200191505060405180910390a26001915050919050565b613308612b8a565b151561331357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141561333757600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561339357600080fd5b60048081111561339f57fe5b6133a7612953565b60048111156133b257fe5b14156133bd57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361d3d7a66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b505050506040513d60208110156134ae57600080fd5b810190808051906020019092919050505015156134ca57600080fd5b600154600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2ba0dd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561355357600080fd5b505af1158015613567573d6000803e3d6000fd5b505050506040513d602081101561357d57600080fd5b810190808051906020019092919050505014151561359a57600080fd5b7f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561372557600080fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60116020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561387b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156138b757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156139d557600080fd5b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613a2d57600080fd5b613a368261290b565b905060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806001600082825403925050819055507f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c68282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b60106020528060005260406000206000915090505481565b600081600d8190555060019050919050565b60008173ffffffffffffffffffffffffffffffffffffffff161415613b4957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613ba557600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284019050838110151515613bfd57fe5b8091505092915050565b6000600960009054906101000a900460ff16151515613c2557600080fd5b613c30848484613c82565b90509392505050565b6000828211151515613c4757fe5b818303905092915050565b6000600960009054906101000a900460ff16151515613c7057600080fd5b613c7a8383613d09565b905092915050565b600083600760149054906101000a900460ff161515613cf457600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613cf357600080fd5b5b613cff858585613d8e565b9150509392505050565b600033600760149054906101000a900460ff161515613d7b57600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613d7a57600080fd5b5b613d85848461414e565b91505092915050565b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613dcd57600080fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515613e1a57600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515613ea557600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050613f75836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614008836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061405d8382613c3990919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561418b57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156141d857600080fd5b614229826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142bc826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a723058200663db9e6b059a5c86f66f0e589499c97752c183f5c2fb4afa03abf0613001da00290000000000000000000000005fe17d0fa46d52f70be4be1184b8060bab6c507f
Deployed Bytecode
0x60806040526004361061029e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302f652a3146102a357806306fdde03146102f2578063094140f314610382578063095ea7b3146103995780630e1ca00e146103fe5780630ecb93c01461042d578063120426821461047057806316da746f146104c757806318160ddd1461052257806323b872dd1461054d57806329ff4f53146105d2578063313ce5671461061557806331c3a07b146106465780633f4ba83a1461069d57806342966c68146106b457806343b61bf9146106e157806345977d0314610726578063484b7b401461075357806353ec897b1461077e5780635772437f146107d557806359bf1abe1461082c5780635b40a584146108875780635c975abb146108b25780635de4ccb0146108e15780635f412d4f14610938578063600440cb1461094f57806366188463146109a65780636623fc4614610a0b57806370a0823114610a505780638444b39114610aa75780638456cb5914610ae0578063867c285714610af75780638da5cb5b14610b5257806395d89b4114610ba95780639613252114610c395780639738968c14610c68578063a14c1d8c14610c97578063a9059cbb14610cc2578063c1ff320814610d27578063c752ff6214610d52578063cae9ca5114610d7d578063cd4217c114610e28578063d1f276d314610e7f578063d73dd62314610ed6578063d7a78db814610f3b578063d7e7088a14610f80578063dd62ed3e14610fc3578063e47d60601461103a578063e4997dc514611095578063ee7f4378146110d8578063eefa597b14611145578063f2fde38b14611174578063f3bdc228146111b7578063fe43808e146111fa578063fe855e6914611251578063ffeb7d7514611296575b600080fd5b3480156102af57600080fd5b506102f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506112d9565b005b3480156102fe57600080fd5b506103076113b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561034757808201518184015260208101905061032c565b50505050905090810190601f1680156103745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038e57600080fd5b50610397611452565b005b3480156103a557600080fd5b506103e4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114cb565b604051808215151515815260200191505060405180910390f35b34801561040a57600080fd5b50610413611654565b604051808215151515815260200191505060405180910390f35b34801561043957600080fd5b5061046e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611842565b005b34801561047c57600080fd5b506104b1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061195c565b6040518082815260200191505060405180910390f35b3480156104d357600080fd5b50610508600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611974565b604051808215151515815260200191505060405180910390f35b34801561052e57600080fd5b50610537611bbb565b6040518082815260200191505060405180910390f35b34801561055957600080fd5b506105b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bc5565b604051808215151515815260200191505060405180910390f35b3480156105de57600080fd5b50610613600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c36565b005b34801561062157600080fd5b5061062a611cfa565b604051808260ff1660ff16815260200191505060405180910390f35b34801561065257600080fd5b50610687600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d0d565b6040518082815260200191505060405180910390f35b3480156106a957600080fd5b506106b2611d25565b005b3480156106c057600080fd5b506106df60048036038101908080359060200190929190505050611de5565b005b3480156106ed57600080fd5b5061070c60048036038101908080359060200190929190505050611f9d565b604051808215151515815260200191505060405180910390f35b34801561073257600080fd5b506107516004803603810190808035906020019092919050505061200b565b005b34801561075f57600080fd5b5061076861229b565b6040518082815260200191505060405180910390f35b34801561078a57600080fd5b506107bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122a1565b6040518082815260200191505060405180910390f35b3480156107e157600080fd5b50610816600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122b9565b6040518082815260200191505060405180910390f35b34801561083857600080fd5b5061086d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612302565b604051808215151515815260200191505060405180910390f35b34801561089357600080fd5b5061089c612358565b6040518082815260200191505060405180910390f35b3480156108be57600080fd5b506108c761235e565b604051808215151515815260200191505060405180910390f35b3480156108ed57600080fd5b506108f6612371565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561094457600080fd5b5061094d612397565b005b34801561095b57600080fd5b50610964612410565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109b257600080fd5b506109f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612436565b604051808215151515815260200191505060405180910390f35b348015610a1757600080fd5b50610a36600480360381019080803590602001909291905050506126c7565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a91600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061290b565b6040518082815260200191505060405180910390f35b348015610ab357600080fd5b50610abc612953565b60405180826004811115610acc57fe5b60ff16815260200191505060405180910390f35b348015610aec57600080fd5b50610af56129d2565b005b348015610b0357600080fd5b50610b38600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a93565b604051808215151515815260200191505060405180910390f35b348015610b5e57600080fd5b50610b67612ab3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bb557600080fd5b50610bbe612ad9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bfe578082015181840152602081019050610be3565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c4557600080fd5b50610c4e612b77565b604051808215151515815260200191505060405180910390f35b348015610c7457600080fd5b50610c7d612b8a565b604051808215151515815260200191505060405180910390f35b348015610ca357600080fd5b50610cac612b93565b6040518082815260200191505060405180910390f35b348015610cce57600080fd5b50610d0d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b99565b604051808215151515815260200191505060405180910390f35b348015610d3357600080fd5b50610d3c612c08565b6040518082815260200191505060405180910390f35b348015610d5e57600080fd5b50610d67612c0e565b6040518082815260200191505060405180910390f35b348015610d8957600080fd5b50610e0e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612c14565b604051808215151515815260200191505060405180910390f35b348015610e3457600080fd5b50610e69600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d97565b6040518082815260200191505060405180910390f35b348015610e8b57600080fd5b50610e94612de0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ee257600080fd5b50610f21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e06565b604051808215151515815260200191505060405180910390f35b348015610f4757600080fd5b50610f6660048036038101908080359060200190929190505050613002565b604051808215151515815260200191505060405180910390f35b348015610f8c57600080fd5b50610fc1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613300565b005b348015610fcf57600080fd5b50611024600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613622565b6040518082815260200191505060405180910390f35b34801561104657600080fd5b5061107b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136a9565b604051808215151515815260200191505060405180910390f35b3480156110a157600080fd5b506110d6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136c9565b005b3480156110e457600080fd5b50611103600480360381019080803590602001909291905050506137e3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561115157600080fd5b5061115a613816565b604051808215151515815260200191505060405180910390f35b34801561118057600080fd5b506111b5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061381f565b005b3480156111c357600080fd5b506111f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613977565b005b34801561120657600080fd5b5061123b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613afb565b6040518082815260200191505060405180910390f35b34801561125d57600080fd5b5061127c60048036038101908080359060200190929190505050613b13565b604051808215151515815260200191505060405180910390f35b3480156112a257600080fd5b506112d7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b25565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b6000600760149054906101000a900460ff16151581151514151561135857600080fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60148054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561144a5780601f1061141f5761010080835404028352916020019161144a565b820191906000526020600020905b81548152906001019060200180831161142d57829003601f168201915b505050505081565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114ae57600080fd5b6000600760146101000a81548160ff021916908315150217905550565b600080821415801561155a57506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1561156457600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080600080339250600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491506116f3600a54601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b905060008211151561170457600080fd5b804211151561171257600080fd5b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117a8826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f8e116b8e0792b6bff100e3cd86c569b3cda6933ec3f3a4490f014c20a39f20ab836040518082815260200191505060405180910390a26001935050505090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189e57600080fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600e6020528060005260406000206000915090505481565b6000806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119d557600080fd5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150611a6b600a54601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b9050600082111515611a7c57600080fd5b8042111515611a8a57600080fd5b6000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b20826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167fe6f7a261c4bb689059588a0af6441e2817de16475a3a9a2ca76a3787c995c550836040518082815260200191505060405180910390a2600192505050919050565b6000600154905090565b600033601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c2157600080fd5b611c2c858585613c07565b9150509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c9257600080fd5b6000600760149054906101000a900460ff161515811515141515611cb557600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601660009054906101000a900460ff1681565b60126020528060005260406000206000915090505481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d8157600080fd5b600960009054906101000a900460ff161515611d9c57600080fd5b6000600960006101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611e3457600080fd5b339050611e88826000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611edf82600154613c3990919063ffffffff16565b6001819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ffb57600080fd5b81600a8190555060019050919050565b6000612015612953565b90506003600481111561202457fe5b81600481111561203057fe5b1480612051575060048081111561204357fe5b81600481111561204f57fe5b145b151561205c57600080fd5b600082141561206a57600080fd5b6120bb826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061211282600154613c3990919063ffffffff16565b60018190555061212d82600554613be990919063ffffffff16565b600581905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663753e88e533846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156121f857600080fd5b505af115801561220c573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac846040518082815260200191505060405180910390a35050565b600a5481565b600f6020528060005260406000206000915090505481565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c5481565b600960009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123f357600080fd5b6001600760146101000a81548160ff021916908315150217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612547576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125db565b61255a8382613c3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115151561271857600080fd5b60008311151561272757600080fd5b33905061277c83600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061281883600b54613c3990919063ffffffff16565b600b8190555061287083600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f846040518082815260200191505060405180910390a26001915050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061295d612b8a565b151561296c57600190506129cf565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156129b657600290506129cf565b600060055414156129ca57600390506129cf565b600490505b90565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a2e57600080fd5b600960009054906101000a900460ff16151515612a4a57600080fd5b6001600960006101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60086020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b6f5780601f10612b4457610100808354040283529160200191612b6f565b820191906000526020600020905b815481529060010190602001808311612b5257829003601f168201915b505050505081565b600760149054906101000a900460ff1681565b60006001905090565b600b5481565b600033601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515612bf557600080fd5b612bff8484613c52565b91505092915050565b600d5481565b60055481565b600080849050612c2485856114cb565b15612d8e578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612d1e578082015181840152602081019050612d03565b50505050905090810190601f168015612d4b5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612d6d57600080fd5b505af1158015612d81573d6000803e3d6000fd5b5050505060019150612d8f565b5b509392505050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612e9782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000806000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415613104576130636001600c54613be990919063ffffffff16565b600c81905550600c54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503360116000600c54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115151561315157600080fd5b600d54831015151561316257600080fd5b3390506131b6836000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320d83600b54613be990919063ffffffff16565b600b8190555061326583600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0846040518082815260200191505060405180910390a26001915050919050565b613308612b8a565b151561331357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141561333757600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561339357600080fd5b60048081111561339f57fe5b6133a7612953565b60048111156133b257fe5b14156133bd57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361d3d7a66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b505050506040513d60208110156134ae57600080fd5b810190808051906020019092919050505015156134ca57600080fd5b600154600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2ba0dd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561355357600080fd5b505af1158015613567573d6000803e3d6000fd5b505050506040513d602081101561357d57600080fd5b810190808051906020019092919050505014151561359a57600080fd5b7f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561372557600080fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60116020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561387b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156138b757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156139d557600080fd5b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613a2d57600080fd5b613a368261290b565b905060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806001600082825403925050819055507f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c68282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b60106020528060005260406000206000915090505481565b600081600d8190555060019050919050565b60008173ffffffffffffffffffffffffffffffffffffffff161415613b4957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613ba557600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284019050838110151515613bfd57fe5b8091505092915050565b6000600960009054906101000a900460ff16151515613c2557600080fd5b613c30848484613c82565b90509392505050565b6000828211151515613c4757fe5b818303905092915050565b6000600960009054906101000a900460ff16151515613c7057600080fd5b613c7a8383613d09565b905092915050565b600083600760149054906101000a900460ff161515613cf457600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613cf357600080fd5b5b613cff858585613d8e565b9150509392505050565b600033600760149054906101000a900460ff161515613d7b57600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613d7a57600080fd5b5b613d85848461414e565b91505092915050565b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613dcd57600080fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515613e1a57600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515613ea557600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050613f75836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614008836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061405d8382613c3990919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561418b57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156141d857600080fd5b614229826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142bc826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a723058200663db9e6b059a5c86f66f0e589499c97752c183f5c2fb4afa03abf0613001da0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005fe17d0fa46d52f70be4be1184b8060bab6c507f
-----Decoded View---------------
Arg [0] : _owner (address): 0x5Fe17D0Fa46d52F70BE4be1184b8060baB6C507f
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005fe17d0fa46d52f70be4be1184b8060bab6c507f
Deployed Bytecode Sourcemap
23307:471:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3827:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3827:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23444:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23444:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;23444:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4332:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4332:87:0;;;;;;12700:574;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12700:574:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9555:462;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9555:462:0;;;;;;;;;;;;;;;;;;;;;;;;;;;21111:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21111:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7686:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7686:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10023:467;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10023:467:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6440:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6440:82:0;;;;;;;;;;;;;;;;;;;;;;;21897:171;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21897:171:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3471:223;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3471:223:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23492:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23492:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7884:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7884:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6050:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6050:95:0;;;;;;20045:475;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20045:475:0;;;;;;;;;;;;;;;;;;;;;;;;;;10496:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10496:145:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17401:667;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17401:667:0;;;;;;;;;;;;;;;;;;;;;;;;;;7551:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7551:40:0;;;;;;;;;;;;;;;;;;;;;;;7731:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7731:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8406:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8406:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20988;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20988:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7624:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7624:17:0;;;;;;;;;;;;;;;;;;;;;;;5429:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5429:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;16302:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16302:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4182:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4182:84:0;;;;;;16204:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16204:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14943:412;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14943:412:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9100:449;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9100:449:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7279:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7279:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18934:317;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18934:317:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5870:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5870:93:0;;;;;;3000:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3000:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;272:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;23467;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23467:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;23467:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2800:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2800:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19654:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19654:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7596:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7596:23:0;;;;;;;;;;;;;;;;;;;;;;;21751:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21751:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7646:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7646:33:0;;;;;;;;;;;;;;;;;;;;;;;16392:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16392:25:0;;;;;;;;;;;;;;;;;;;;;;;22775:347;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22775:347:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8286:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8286:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2645:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2645:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14203:266;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14203:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8530:564;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8530:564:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18128:744;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18128:744:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13599:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13599:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20838:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20838:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21274:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21274:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7832:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7832:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11213:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11213:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;887:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;887:178:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21435:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21435:311:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7778:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7778:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10647:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10647:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19377:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19377:172:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3827:132;700:5;;;;;;;;;;;686:19;;:10;:19;;;678:28;;;;;;;;3904:5;4583:8;;;;;;;;;;;4567:24;;:12;:24;;;;4564:56;;;4604:8;;;4564:56;3948:5;3925:14;:20;3940:4;3925:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;713:1;3827:132;;:::o;23444:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4332:87::-;4765:12;;;;;;;;;;;4751:26;;:10;:26;;;;4748:58;;;4790:8;;;4748:58;4408:5;4397:8;;:16;;;;;;;;;;;;;;;;;;4332:87::o;12700:574::-;12764:12;13094:1;13084:6;:11;;13083:53;;;;;13134:1;13101:7;:19;13109:10;13101:19;;;;;;;;;;;;;;;:29;13121:8;13101:29;;;;;;;;;;;;;;;;:34;;13083:53;13079:74;;;13145:8;;;13079:74;13194:6;13162:7;:19;13170:10;13162:19;;;;;;;;;;;;;;;:29;13182:8;13162:29;;;;;;;;;;;;;;;:38;;;;13233:8;13212:38;;13221:10;13212:38;;;13243:6;13212:38;;;;;;;;;;;;;;;;;;13264:4;13257:11;;12700:574;;;;:::o;9555:462::-;9599:12;9620:14;9654:19;9700:17;9637:10;9620:27;;9676:9;:17;9686:6;9676:17;;;;;;;;;;;;;;;;9654:39;;9720:49;9749:19;;9720:16;:24;9737:6;9720:24;;;;;;;;;;;;;;;;:28;;:49;;;;:::i;:::-;9700:69;;9801:1;9784:14;:18;9776:27;;;;;;;;9836:12;9818:15;:30;9810:39;;;;;;;;9878:1;9858:9;:17;9868:6;9858:17;;;;;;;;;;;;;;;:21;;;;9905:36;9926:14;9905:8;:16;9914:6;9905:16;;;;;;;;;;;;;;;;:20;;:36;;;;:::i;:::-;9886:8;:16;9895:6;9886:16;;;;;;;;;;;;;;;:55;;;;9970:6;9953:40;;;9978:14;9953:40;;;;;;;;;;;;;;;;;;10007:4;10000:11;;9555:462;;;;:::o;21111:158::-;700:5;;;;;;;;;;;686:19;;:10;:19;;;678:28;;;;;;;;21205:4;21178:13;:24;21192:9;21178:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;21222:25;21237:9;21222:25;;;;;;;;;;;;;;;;;;;;;;21111:158;:::o;7686:40::-;;;;;;;;;;;;;;;;;:::o;10023:467::-;10096:12;10117:19;10165:17;700:5;;;;;;;;;;;686:19;;:10;:19;;;678:28;;;;;;;;10139:9;:19;10149:8;10139:19;;;;;;;;;;;;;;;;10117:41;;10185:51;10216:19;;10185:16;:26;10202:8;10185:26;;;;;;;;;;;;;;;;:30;;:51;;;;:::i;:::-;10165:71;;10268:1;10251:14;:18;10243:27;;;;;;;;10303:12;10285:15;:30;10277:39;;;;;;;;10347:1;10325:9;:19;10335:8;10325:19;;;;;;;;;;;;;;;:23;;;;10376:38;10399:14;10376:8;:18;10385:8;10376:18;;;;;;;;;;;;;;;;:22;;:38;;;;:::i;:::-;10355:8;:18;10364:8;10355:18;;;;;;;;;;;;;;;:59;;;;10441:8;10426:40;;;10451:14;10426:40;;;;;;;;;;;;;;;;;;10480:4;10473:11;;10023:467;;;;;:::o;6440:82::-;6484:4;6504:12;;6497:19;;6440:82;:::o;21897:171::-;22007:4;21979:10;20949:13;:22;20963:7;20949:22;;;;;;;;;;;;;;;;;;;;;;;;;20948:23;20940:32;;;;;;;;22025:38;22044:5;22051:3;22056:6;22025:18;:38::i;:::-;22018:45;;21897:171;;;;;;:::o;3471:223::-;700:5;;;;;;;;;;;686:19;;:10;:19;;;678:28;;;;;;;;3535:5;4583:8;;;;;;;;;;;4567:24;;:12;:24;;;;4564:56;;;4604:8;;;4564:56;3684:4;3669:12;;:19;;;;;;;;;;;;;;;;;;713:1;3471:223;:::o;23492:21::-;;;;;;;;;;;;;:::o;7884:43::-;;;;;;;;;;;;;;;;;:::o;6050:95::-;700:5;;;;;;;;;;;686:19;;:10;:19;;;678:28;;;;;;;;5765:6;;;;;;;;;;;5757:15;;;;;;;;6113:5;6104:6;;:14;;;;;;;;;;;;;;;;;;6130:9;;;;;;;;;;6050:95::o;20045:475::-;20307:14;20104:8;:20;20113:10;20104:20;;;;;;;;;;;;;;;;20094:6;:30;;20086:39;;;;;;;;20324:10;20307:27;;20360:28;20381:6;20360:8;:16;20369:6;20360:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;20341:8;:16;20350:6;20341:16;;;;;;;;;;;;;;;:47;;;;20410:24;20427:6;20410:12;;:16;;:24;;;;:::i;:::-;20395:12;:39;;;;20451:6;20446:20;;;20459:6;20446:20;;;;;;;;;;;;;;;;;;20503:1;20478:36;;20487:6;20478:36;;;20507:6;20478:36;;;;;;;;;;;;;;;;;;20045:475;;:::o;10496:145::-;10566:12;700:5;;;;;;;;;;;686:19;;:10;:19;;;678:28;;;;;;;;10609:8;10587:19;:30;;;;10631:4;10624:11;;10496:145;;;:::o;17401:667::-;17448:18;17469:17;:15;:17::i;:::-;17448:38;;17510:27;17501:36;;;;;;;;:5;:36;;;;;;;;;:71;;;;17550:22;17541:31;;;;;;;;:5;:31;;;;;;;;;17501:71;17499:74;17495:143;;;17620:8;;;17495:143;17693:1;17684:5;:10;17680:24;;;17696:8;;;17680:24;17738:31;17763:5;17738:8;:20;17747:10;17738:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;17715:8;:20;17724:10;17715:20;;;;;;;;;;;;;;;:54;;;;17838:23;17855:5;17838:12;;:16;;:23;;;;:::i;:::-;17823:12;:38;;;;17886:24;17904:5;17886:13;;:17;;:24;;;;:::i;:::-;17870:13;:40;;;;17965:12;;;;;;;;;;;:24;;;17990:10;18002:5;17965:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17965:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17965:43:0;;;;18042:12;;;;;;;;;;;18022:40;;18030:10;18022:40;;;18056:5;18022:40;;;;;;;;;;;;;;;;;;17401:667;;:::o;7551:40::-;;;;:::o;7731:42::-;;;;;;;;;;;;;;;;;:::o;8406:118::-;8468:12;8496:9;:22;8506:11;8496:22;;;;;;;;;;;;;;;;8489:29;;8406:118;;;:::o;20988:::-;21059:4;21080:13;:21;21094:6;21080:21;;;;;;;;;;;;;;;;;;;;;;;;;21073:28;;20988:118;;;:::o;7624:17::-;;;;:::o;5429:26::-;;;;;;;;;;;;;:::o;16302:32::-;;;;;;;;;;;;;:::o;4182:84::-;4765:12;;;;;;;;;;;4751:26;;:10;:26;;;;4748:58;;;4790:8;;;4748:58;4256:4;4245:8;;:15;;;;;;;;;;;;;;;;;;4182:84::o;16204:28::-;;;;;;;;;;;;;:::o;14943:412::-;15026:4;15039:13;15055:7;:19;15063:10;15055:19;;;;;;;;;;;;;;;:29;15075:8;15055:29;;;;;;;;;;;;;;;;15039:45;;15114:8;15095:16;:27;15091:168;;;15165:1;15133:7;:19;15141:10;15133:19;;;;;;;;;;;;;;;:29;15153:8;15133:29;;;;;;;;;;;;;;;:33;;;;15091:168;;;15221:30;15234:16;15221:8;:12;;:30;;;;:::i;:::-;15189:7;:19;15197:10;15189:19;;;;;;;;;;;;;;;:29;15209:8;15189:29;;;;;;;;;;;;;;;:62;;;;15091:168;15291:8;15270:61;;15279:10;15270:61;;;15301:7;:19;15309:10;15301:19;;;;;;;;;;;;;;;:29;15321:8;15301:29;;;;;;;;;;;;;;;;15270:61;;;;;;;;;;;;;;;;;;15345:4;15338:11;;14943:412;;;;;:::o;9100:449::-;9147:12;9261:14;9186:7;:19;9194:10;9186:19;;;;;;;;;;;;;;;;9176:6;:29;;9168:38;;;;;;;;9252:1;9243:6;:10;9234:20;;;;;;;;9278:10;9261:27;;9313;9333:6;9313:7;:15;9321:6;9313:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9295:7;:15;9303:6;9295:15;;;;;;;;;;;;;;;:45;;;;9374:15;9347:16;:24;9364:6;9347:24;;;;;;;;;;;;;;;:42;;;;9410:23;9426:6;9410:11;;:15;;:23;;;;:::i;:::-;9396:11;:37;;;;9460:29;9482:6;9460:9;:17;9470:6;9460:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9440:9;:17;9450:6;9440:17;;;;;;;;;;;;;;;:49;;;;9510:6;9501:24;;;9518:6;9501:24;;;;;;;;;;;;;;;;;;9539:4;9532:11;;9100:449;;;;:::o;7279:106::-;7335:12;7363:8;:16;7372:6;7363:16;;;;;;;;;;;;;;;;7356:23;;7279:106;;;:::o;18934:317::-;18985:12;19010;:10;:12::i;:::-;19009:13;19006:239;;;19031:23;19024:30;;;;19006:239;19094:4;19077:12;;;;;;;;;;;19069:29;;;19066:179;;;19107:28;19100:35;;;;19066:179;19167:1;19150:13;;:18;19147:98;;;19177:27;19170:34;;;;19147:98;19223:22;19216:29;;18934:317;;:::o;5870:93::-;700:5;;;;;;;;;;;686:19;;:10;:19;;;678:28;;;;;;;;5605:6;;;;;;;;;;;5604:7;5596:16;;;;;;;;5934:4;5925:6;;:13;;;;;;;;;;;;;;;;;;5950:7;;;;;;;;;;5870:93::o;3000:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;272:20::-;;;;;;;;;;;;;:::o;23467:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2800:28::-;;;;;;;;;;;;;:::o;19654:73::-;19696:4;19717;19710:11;;19654:73;:::o;7596:23::-;;;;:::o;21751:141::-;21842:4;21814:10;20949:13;:22;20963:7;20949:22;;;;;;;;;;;;;;;;;;;;;;;;;20948:23;20940:32;;;;;;;;21860:27;21875:3;21880:6;21860:14;:27::i;:::-;21853:34;;21751:141;;;;;:::o;7646:33::-;;;;:::o;16392:25::-;;;;:::o;22775:347::-;22888:12;22911:22;22951:8;22911:49;;22973:25;22981:8;22991:6;22973:7;:25::i;:::-;22969:148;;;23013:7;:23;;;23037:10;23049:6;23065:4;23072:10;23013:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;23013:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23013:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23013:70:0;;;;23103:4;23096:11;;;;22969:148;22775:347;;;;;;;:::o;8286:114::-;8346:12;8374:7;:20;8382:11;8374:20;;;;;;;;;;;;;;;;8367:27;;8286:114;;;:::o;2645:27::-;;;;;;;;;;;;;:::o;14203:266::-;14281:4;14326:46;14360:11;14326:7;:19;14334:10;14326:19;;;;;;;;;;;;;;;:29;14346:8;14326:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;14294:7;:19;14302:10;14294:19;;;;;;;;;;;;;;;:29;14314:8;14294:29;;;;;;;;;;;;;;;:78;;;;14405:8;14384:61;;14393:10;14384:61;;;14415:7;:19;14423:10;14415:19;;;;;;;;;;;;;;;:29;14435:8;14415:29;;;;;;;;;;;;;;;;14384:61;;;;;;;;;;;;;;;;;;14459:4;14452:11;;14203:266;;;;:::o;8530:564::-;8575:12;8859:14;8626:1;8600:10;:22;8611:10;8600:22;;;;;;;;;;;;;;;;:27;8596:152;;;8646:12;8656:1;8646:5;;:9;;:12;;;;:::i;:::-;8638:5;:20;;;;8692:5;;8667:10;:22;8678:10;8667:22;;;;;;;;;;;;;;;:30;;;;8730:10;8706:14;:21;8721:5;;8706:21;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8596:152;8774:8;:20;8783:10;8774:20;;;;;;;;;;;;;;;;8764:6;:30;;8756:39;;;;;;;;8842:9;;8832:6;:19;;8823:29;;;;;;;;8876:10;8859:27;;8912:28;8933:6;8912:8;:16;8921:6;8912:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;8893:8;:16;8902:6;8893:16;;;;;;;;;;;;;;;:47;;;;8961:23;8977:6;8961:11;;:15;;:23;;;;:::i;:::-;8947:11;:37;;;;9009:27;9029:6;9009:7;:15;9017:6;9009:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;8991:7;:15;8999:6;8991:15;;;;;;;;;;;;;;;:45;;;;9055:6;9048:22;;;9063:6;9048:22;;;;;;;;;;;;;;;;;;9084:4;9077:11;;8530:564;;;;:::o;18128:744::-;18192:12;:10;:12::i;:::-;18191:13;18188:121;;;18291:8;;;18188:121;18332:3;18323:5;:12;;;18319:26;;;18337:8;;;18319:26;18425:13;;;;;;;;;;;18411:27;;:10;:27;;;;18407:41;;;18440:8;;;18407:41;18531:22;18510:43;;;;;;;;:17;:15;:17::i;:::-;:43;;;;;;;;;18506:57;;;18555:8;;;18506:57;18602:5;18574:12;;:34;;;;;;;;;;;;;;;;;;18647:12;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18647:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18647:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18647:29:0;;;;;;;;;;;;;;;;18646:30;18643:43;;;18678:8;;;18643:43;18799:12;;18766;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18766:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18766:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18766:29:0;;;;;;;;;;;;;;;;:45;;18762:59;;;18813:8;;;18762:59;18837:29;18853:12;;;;;;;;;;;18837:29;;;;;;;;;;;;;;;;;;;;;;18128:744;:::o;13599:135::-;13673:14;13703:7;:15;13711:6;13703:15;;;;;;;;;;;;;;;:25;13719:8;13703:25;;;;;;;;;;;;;;;;13696:32;;13599:135;;;;:::o;20838:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;21274:156::-;700:5;;;;;;;;;;;686:19;;:10;:19;;;678:28;;;;;;;;21377:5;21347:13;:27;21361:12;21347:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;21395:30;21412:12;21395:30;;;;;;;;;;;;;;;;;;;;;;21274:156;:::o;7832:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;11213:76::-;11253:10;11279:4;11272:11;;11213:76;:::o;887:178::-;700:5;;;;;;;;;;;686:19;;:10;:19;;;678:28;;;;;;;;984:1;964:22;;:8;:22;;;;956:31;;;;;;;;1027:8;999:37;;1020:5;;;;;;;;;;;999:37;;;;;;;;;;;;1051:8;1043:5;;:16;;;;;;;;;;;;;;;;;;887:178;:::o;21435:311::-;21562:15;700:5;;;;;;;;;;;686:19;;:10;:19;;;678:28;;;;;;;;21522:13;:31;21536:16;21522:31;;;;;;;;;;;;;;;;;;;;;;;;;21514:40;;;;;;;;21580:27;21590:16;21580:9;:27::i;:::-;21562:45;;21644:1;21615:8;:26;21624:16;21615:26;;;;;;;;;;;;;;;:30;;;;21669:10;21653:12;;:26;;;;;;;;;;;21692:49;21712:16;21730:10;21692:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;21435:311;;:::o;7778:49::-;;;;;;;;;;;;;;;;;:::o;10647:133::-;10710:12;10743:13;10731:9;:25;;;;10770:4;10763:11;;10647:133;;;:::o;19377:172::-;19449:3;19439:6;:13;;;19435:27;;;19454:8;;;19435:27;19489:13;;;;;;;;;;;19475:27;;:10;:27;;;;19471:41;;;19504:8;;;19471:41;19537:6;19521:13;;:22;;;;;;;;;;;;;;;;;;19377:172;:::o;24803:133::-;24861:7;24877:9;24893:1;24889;:5;24877:17;;24913:1;24908;:6;;24901:14;;;;;;24929:1;24922:8;;24803:133;;;;;:::o;15651:157::-;15744:4;5605:6;;;;;;;;;;;5604:7;5596:16;;;;;;;;15764:38;15783:5;15790:3;15795:6;15764:18;:38::i;:::-;15757:45;;15651:157;;;;;:::o;24623:113::-;24681:7;24709:1;24704;:6;;24697:14;;;;;;24729:1;24725;:5;24718:12;;24623:113;;;;:::o;15518:127::-;15592:4;5605:6;;;;;;;;;;;5604:7;5596:16;;;;;;;;15612:27;15627:3;15632:6;15612:14;:27::i;:::-;15605:34;;15518:127;;;;:::o;5013:212::-;5111:12;5088:5;3181:8;;;;;;;;;;;3180:9;3177:96;;;3206:14;:23;3221:7;3206:23;;;;;;;;;;;;;;;;;;;;;;;;;3205:24;3202:64;;;3246:8;;;3202:64;3177:96;5181:38;5200:5;5207:3;5212:6;5181:18;:38::i;:::-;5174:45;;5013:212;;;;;;:::o;4825:182::-;4909:12;4881:10;3181:8;;;;;;;;;;;3180:9;3177:96;;;3206:14;:23;3221:7;3206:23;;;;;;;;;;;;;;;;;;;;;;;;;3205:24;3202:64;;;3246:8;;;3202:64;3177:96;4974:27;4989:3;4994:6;4974:14;:27::i;:::-;4967:34;;4825:182;;;;;:::o;11569:496::-;11648:12;11797:15;11692:1;11677:17;;:3;:17;;;;11669:26;;;;;;;;11720:8;:15;11729:5;11720:15;;;;;;;;;;;;;;;;11710:6;:25;;11702:34;;;;;;;;11761:7;:14;11769:5;11761:14;;;;;;;;;;;;;;;:26;11776:10;11761:26;;;;;;;;;;;;;;;;11751:6;:36;;11743:45;;;;;;;;11815:7;:14;11823:5;11815:14;;;;;;;;;;;;;;;:26;11830:10;11815:26;;;;;;;;;;;;;;;;11797:44;;11866:25;11884:6;11866:8;:13;11875:3;11866:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;11850:8;:13;11859:3;11850:13;;;;;;;;;;;;;;;:41;;;;11916:27;11936:6;11916:8;:15;11925:5;11916:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11898:8;:15;11907:5;11898:15;;;;;;;;;;;;;;;:45;;;;11979:22;11994:6;11979:10;:14;;:22;;;;:::i;:::-;11950:7;:14;11958:5;11950:14;;;;;;;;;;;;;;;:26;11965:10;11950:26;;;;;;;;;;;;;;;:51;;;;12029:3;12013:28;;12022:5;12013:28;;;12034:6;12013:28;;;;;;;;;;;;;;;;;;12055:4;12048:11;;11569:496;;;;;;:::o;6683:390::-;6743:4;6779:1;6764:17;;:3;:17;;;;6756:26;;;;;;;;6807:8;:20;6816:10;6807:20;;;;;;;;;;;;;;;;6797:6;:30;;6789:39;;;;;;;;6924:32;6949:6;6924:8;:20;6933:10;6924:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6901:8;:20;6910:10;6901:20;;;;;;;;;;;;;;;:55;;;;6979:25;6997:6;6979:8;:13;6988:3;6979:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;6963:8;:13;6972:3;6963:13;;;;;;;;;;;;;;;:41;;;;7037:3;7016:33;;7025:10;7016:33;;;7042:6;7016:33;;;;;;;;;;;;;;;;;;7063:4;7056:11;;6683:390;;;;:::o
Swarm Source
bzzr://0663db9e6b059a5c86f66f0e589499c97752c183f5c2fb4afa03abf0613001da
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.