ERC-20
Overview
Max Total Supply
85,105,190.561525582111104511 CHR
Holders
1,946
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
95 CHRValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Cherrio
Compiler Version
v0.4.23+commit.124ca40d
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-05-15 */ pragma solidity ^0.4.22; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns(uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } 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; } function sub(uint256 a, uint256 b) internal pure returns(uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns(uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title Ownable * @dev The Ownable contract has an owner address and * provides basic authorization control functions */ contract Ownable { // Public properties address public owner; // Log if ownership has been changed event ChangeOwnership(address indexed _owner, address indexed _newOwner); // Checks if address is an owner modifier OnlyOwner() { require(msg.sender == owner); _; } // The Ownable constructor sets the owner address function Ownable() public { owner = msg.sender; } // Transfer current ownership to the new account function transferOwnership(address _newOwner) public OnlyOwner { require(_newOwner != address(0x0)); owner = _newOwner; emit ChangeOwnership(owner, _newOwner); } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { /* * @dev Event to notify listeners about pause. * @param pauseReason string Reason the token was paused for. */ event Pause(string pauseReason); /* * @dev Event to notify listeners about pause. * @param unpauseReason string Reason the token was unpaused for. */ event Unpause(string unpauseReason); bool public isPaused; string public pauseNotice; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier IsNotPaused() { require(!isPaused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier IsPaused() { require(isPaused); _; } /** * @dev called by the owner to pause, triggers stopped state * @param _reason string The reason for the pause. */ function pause(string _reason) OnlyOwner IsNotPaused public { isPaused = true; pauseNotice = _reason; emit Pause(_reason); } /** * @dev called by the owner to unpause, returns to normal state * @param _reason string Reason for the un pause. */ function unpause(string _reason) OnlyOwner IsPaused public { isPaused = false; pauseNotice = _reason; emit Unpause(_reason); } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public view returns(uint256 theBalance); function transfer(address to, uint256 value) public returns(bool success); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns(uint256 theAllowance); function transferFrom(address from, address to, uint256 value) public returns(bool success); function approve(address spender, uint256 value) public returns(bool success); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title Basic token * @dev Basic version of StandardToken without allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; // Balances for each account mapping(address => uint256) balances; /** * @dev Get the token balance for account * @param _address The address to query the balance of._address * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _address) public constant returns(uint256 theBalance){ return balances[_address]; } /** * @dev Transfer the balance from owner's account to another account * @param _to The address to transfer to. * @param _value The amount to be transferred. * @return Returns true if transfer has been successful */ function transfer(address _to, uint256 _value) public returns(bool success){ require(_to != address(0x0) && _value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * @dev https://github.com/ethereum/EIPs/issues/20 */ contract StandardToken is BasicToken, ERC20 { // Owner of account approves the transfer of an amount to another account mapping (address => mapping (address => uint256)) allowed; /** * @dev Returns the amount of tokens approved by the owner that can be transferred to the spender's account * @param _owner The address which owns the funds. * @param _spender The address which will spend the funds. * @return An uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public constant returns(uint256 theAllowance){ return allowed[_owner][_spender]; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * 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 * * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns(bool success){ require(allowed[msg.sender][_spender] == 0 || _value == 0); allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * Transfer from `from` account to `to` account using allowance in `from` account to the sender * * @param _from Origin address * @param _to Destination address * @param _value Amount of CHR tokens to send */ function transferFrom(address _from, address _to, uint256 _value) public returns(bool success) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } } /** * @title Burnable Token * @dev Token that can be irreversibly burned (destroyed). */ contract BurnableToken is BasicToken { event Burn(address indexed burner, uint256 value); /** * @dev Burns a specific amount of tokens. * @param _value The amount of token to be burned. */ function burn(uint256 _value) public { require(_value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); totalSupply = totalSupply.sub(_value); emit Burn(msg.sender, _value); } } /** * CHERR.IO is a standard ERC20 token with some additional functionalities: * - Transfers are only enabled after contract owner enables it (after the ICO) * - Contract sets 60% of the total supply as allowance for ICO contract */ contract Cherrio is StandardToken, BurnableToken, Ownable, Pausable { using SafeMath for uint256; // Metadata string public constant name = "CHERR.IO"; string public constant symbol = "CHR"; uint8 public constant decimals = 18; // Token supplies uint256 public constant INITIAL_SUPPLY = 200000000 * (10 ** uint256(decimals)); uint256 public constant ADMIN_ALLOWANCE = 80000000 * (10 ** uint256(decimals)); uint256 public constant CONTRACT_ALLOWANCE = INITIAL_SUPPLY - ADMIN_ALLOWANCE; // Funding cap in ETH. Change to equal $12M at time of token offering uint256 public constant FUNDING_ETH_HARD_CAP = 15000 ether; // Minimum cap in ETH. Change to equal $3M at time of token offering uint256 public constant MINIMUM_ETH_SOFT_CAP = 3750 ether; // Min contribution is 0.1 ether uint256 public constant MINIMUM_CONTRIBUTION = 100 finney; // Price of the tokens as in tokens per ether uint256 public constant RATE = 5333; // Price of the tokens in tier 1 uint256 public constant RATE_TIER1 = 8743; // Price of the tokens in tier 2 uint256 public constant RATE_TIER2 = 7306; // Price of the tokens in tier 3 uint256 public constant RATE_TIER3 = 6584; // Price of the tokens in public sale for limited timeline uint256 public constant RATE_PUBLIC_SALE = 5926; // Maximum cap for tier 1 (60M CHR tokens) uint256 public constant TIER1_CAP = 60000000 * (10 ** uint256(decimals)); // Maximum cap for tier 2 (36M CHR tokens) uint256 public constant TIER2_CAP = 36000000 * (10 ** uint256(decimals)); // Maximum cap for each contributor in tier 1 uint256 public participantCapTier1; // Maximum cap for each contributor in tier 2 uint256 public participantCapTier2; // ETH cap for pool addres only in tier 1 uint256 public poolAddressCapTier1; // ETH cap for pool addres only in tier 2 uint256 public poolAddressCapTier2; // The address of the token admin address public adminAddress; // The address where ETH funds are collected address public beneficiaryAddress; // The address of the contract address public contractAddress; // The address of the pool who can send unlimited ETH to the contract address public poolAddress; // Enable transfers after conclusion of the token offering bool public transferIsEnabled; // Amount of raised in Wei uint256 public weiRaised; // Amount of CHR tokens sent to participant for presale and public sale uint256[4] public tokensSent; // Start of public pre-sale in timestamp uint256 startTimePresale; // Start and end time of public sale in timestamp uint256 startTime; uint256 endTime; // Discount period for public sale uint256 publicSaleDiscountEndTime; // End time limits in timestamp for each tier bonus uint256[3] public tierEndTime; //Check if contract address is already set bool contractAddressIsSet; struct Contributor { bool canContribute; uint8 tier; uint256 contributionInWeiTier1; uint256 contributionInWeiTier2; uint256 contributionInWeiTier3; uint256 contributionInWeiPublicSale; } struct Pool { uint256 contributionInWei; } enum Stages { Pending, PreSale, PublicSale, Ended } // The current stage of the offering Stages public stage; mapping(address => Contributor) public contributors; mapping(address => mapping(uint8 => Pool)) public pool; // Check if transfer is enabled modifier TransferIsEnabled { require(transferIsEnabled || msg.sender == adminAddress || msg.sender == contractAddress); _; } /** * @dev Check if address is a valid destination to transfer tokens to * - must not be zero address * - must not be the token address * - must not be the owner's address * - must not be the admin's address * - must not be the token offering contract address * - must not be the beneficiary address */ modifier ValidDestination(address _to) { require(_to != address(0x0)); require(_to != address(this)); require(_to != owner); require(_to != address(adminAddress)); require(_to != address(contractAddress)); require(_to != address(beneficiaryAddress)); _; } /** * Modifier that requires certain stage before executing the main function body * * @param _expectedStage Value that the current stage is required to match */ modifier AtStage(Stages _expectedStage) { require(stage == _expectedStage); _; } // Check if ICO is live modifier CheckIfICOIsLive() { require(stage != Stages.Pending && stage != Stages.Ended); if(stage == Stages.PreSale) { require( startTimePresale > 0 && now >= startTimePresale && now <= tierEndTime[2] ); } else { require( startTime > 0 && now >= startTime && now <= endTime ); } _; } // Check if participant sent more then miniminum required contribution modifier CheckPurchase() { require(msg.value >= MINIMUM_CONTRIBUTION); _; } /** * Event for token purchase logging * * @param _purchaser Participant who paid for CHR tokens * @param _value Amount in WEI paid for token * @param _tokens Amount of tokens purchased */ event TokenPurchase(address indexed _purchaser, uint256 _value, uint256 _tokens); /** * Event when token offering started * * @param _msg Message * @param _startTime Start time in timestamp * @param _endTime End time in timestamp */ event OfferingOpens(string _msg, uint256 _startTime, uint256 _endTime); /** * Event when token offering ended and how much has been raised in wei * * @param _endTime End time in timestamp * @param _totalWeiRaised Total raised funds in wei */ event OfferingCloses(uint256 _endTime, uint256 _totalWeiRaised); /** * Cherrio constructor */ function Cherrio() public { totalSupply = INITIAL_SUPPLY; // Mint tokens balances[msg.sender] = totalSupply; emit Transfer(address(0x0), msg.sender, totalSupply); // Aprove an allowance for admin account adminAddress = 0xe0509bB3921aacc433108D403f020a7c2f92e936; approve(adminAddress, ADMIN_ALLOWANCE); participantCapTier1 = 100 ether; participantCapTier2 = 100 ether; poolAddressCapTier1 = 2000 ether; poolAddressCapTier2 = 2000 ether; weiRaised = 0; startTimePresale = 0; startTime = 0; endTime = 0; publicSaleDiscountEndTime = 0; transferIsEnabled = false; contractAddressIsSet = false; } /** * Add approved addresses * * @param _addresses Array of approved addresses * @param _tier Tier */ function addApprovedAddresses(address[] _addresses, uint8 _tier) external OnlyOwner { uint256 length = _addresses.length; for(uint256 i = 0; i < length; i++) { if(!contributors[_addresses[i]].canContribute) { contributors[_addresses[i]].canContribute = true; contributors[_addresses[i]].tier = _tier; contributors[_addresses[i]].contributionInWeiTier1 = 0; contributors[_addresses[i]].contributionInWeiTier2 = 0; contributors[_addresses[i]].contributionInWeiTier3 = 0; contributors[_addresses[i]].contributionInWeiPublicSale = 0; } } } /** * Add approved address * * @param _address Approved address * @param _tier Tier */ function addSingleApprovedAddress(address _address, uint8 _tier) external OnlyOwner { if(!contributors[_address].canContribute) { contributors[_address].canContribute = true; contributors[_address].tier = _tier; contributors[_address].contributionInWeiTier1 = 0; contributors[_address].contributionInWeiTier2 = 0; contributors[_address].contributionInWeiTier3 = 0; contributors[_address].contributionInWeiPublicSale = 0; } } /** * Set token offering address to approve allowance for offering contract to distribute tokens */ function setTokenOffering() external OnlyOwner{ require(!contractAddressIsSet); require(!transferIsEnabled); contractAddress = address(this); approve(contractAddress, CONTRACT_ALLOWANCE); beneficiaryAddress = 0xAec8c4242c8c2E532c6D6478A7de380263234845; poolAddress = 0x1A2C916B640520E1e93A78fEa04A49D8345a5aa9; pool[poolAddress][0].contributionInWei = 0; pool[poolAddress][1].contributionInWei = 0; pool[poolAddress][2].contributionInWei = 0; pool[poolAddress][3].contributionInWei = 0; tokensSent[0] = 0; tokensSent[1] = 0; tokensSent[2] = 0; tokensSent[3] = 0; stage = Stages.Pending; contractAddressIsSet = true; } /** * Set when presale starts * * @param _startTimePresale Start time of presale in timestamp */ function startPresale(uint256 _startTimePresale) external OnlyOwner AtStage(Stages.Pending) { if(_startTimePresale == 0) { startTimePresale = now; } else { startTimePresale = _startTimePresale; } setTierEndTime(); stage = Stages.PreSale; } /** * Set when public sale starts * * @param _startTime Start time of public sale in timestamp */ function startPublicSale(uint256 _startTime) external OnlyOwner AtStage(Stages.PreSale) { if(_startTime == 0) { startTime = now; } else { startTime = _startTime; } endTime = startTime + 15 days; publicSaleDiscountEndTime = startTime + 3 days; stage = Stages.PublicSale; } // Fallback function can be used to buy CHR tokens function () public payable { buy(); } function buy() public payable IsNotPaused CheckIfICOIsLive returns(bool _success) { uint8 currentTier = getCurrentTier(); if(currentTier > 3) { revert(); } if(!buyTokens(currentTier)) { revert(); } return true; } /** * @param _tier Current Token Sale tier */ function buyTokens(uint8 _tier) internal ValidDestination(msg.sender) CheckPurchase returns(bool _success) { if(weiRaised.add(msg.value) > FUNDING_ETH_HARD_CAP) { revert(); } uint256 contributionInWei = msg.value; if(!checkTierCap(_tier, contributionInWei)) { revert(); } uint256 rate = getTierTokens(_tier); uint256 tokens = contributionInWei.mul(rate); if(msg.sender != poolAddress) { if(stage == Stages.PreSale) { if(!checkAllowedTier(msg.sender, _tier)) { revert(); } } if(!checkAllowedContribution(msg.sender, contributionInWei, _tier)) { revert(); } if(!this.transferFrom(owner, msg.sender, tokens)) { revert(); } if(stage == Stages.PreSale) { if(_tier == 0) { contributors[msg.sender].contributionInWeiTier1 = contributors[msg.sender].contributionInWeiTier1.add(contributionInWei); } else if(_tier == 1) { contributors[msg.sender].contributionInWeiTier2 = contributors[msg.sender].contributionInWeiTier2.add(contributionInWei); } else if(_tier == 2) { contributors[msg.sender].contributionInWeiTier3 = contributors[msg.sender].contributionInWeiTier3.add(contributionInWei); } } else { contributors[msg.sender].contributionInWeiPublicSale = contributors[msg.sender].contributionInWeiPublicSale.add(contributionInWei); } } else { if(!checkPoolAddressTierCap(_tier, contributionInWei)) { revert(); } if(!this.transferFrom(owner, msg.sender, tokens)) { revert(); } pool[poolAddress][_tier].contributionInWei = pool[poolAddress][_tier].contributionInWei.add(contributionInWei); } weiRaised = weiRaised.add(contributionInWei); tokensSent[_tier] = tokensSent[_tier].add(tokens); if(weiRaised >= FUNDING_ETH_HARD_CAP) { offeringEnded(); } beneficiaryAddress.transfer(address(this).balance); emit TokenPurchase(msg.sender, contributionInWei, tokens); return true; } /** * Manually withdraw tokens to private investors * * @param _to Address of private investor * @param _value The number of tokens to send to private investor */ function withdrawCrowdsaleTokens(address _to, uint256 _value) external OnlyOwner ValidDestination(_to) returns (bool _success) { if(!this.transferFrom(owner, _to, _value)) { revert(); } return true; } /** * Transfer from sender to another account * * @param _to Destination address * @param _value Amount of CHR tokens to send */ function transfer(address _to, uint256 _value) public ValidDestination(_to) TransferIsEnabled IsNotPaused returns(bool _success){ return super.transfer(_to, _value); } /** * Transfer from `from` account to `to` account using allowance in `from` account to the sender * * @param _from Origin address * @param _to Destination address * @param _value Amount of CHR tokens to send */ function transferFrom(address _from, address _to, uint256 _value) public ValidDestination(_to) TransferIsEnabled IsNotPaused returns(bool _success){ return super.transferFrom(_from, _to, _value); } /** * Check if participant is allowed to contribute in current tier * * @param _address Participant address * @param _tier Current tier */ function checkAllowedTier(address _address, uint8 _tier) internal view returns (bool _allowed) { if(contributors[_address].tier <= _tier) { return true; } else{ return false; } } /** * Check contribution cap for only tier 1 and 2 * * @param _tier Current tier * @param _value Participant contribution */ function checkTierCap(uint8 _tier, uint256 _value) internal view returns (bool _success) { uint256 currentlyTokensSent = tokensSent[_tier]; bool status = true; if(_tier == 0) { if(TIER1_CAP < currentlyTokensSent.add(_value)) { status = false; } } else if(_tier == 1) { if(TIER2_CAP < currentlyTokensSent.add(_value)) { status = false; } } return status; } /** * Check cap for pool address in tier 1 and 2 * * @param _tier Current tier * @param _value Pool contribution */ function checkPoolAddressTierCap(uint8 _tier, uint256 _value) internal view returns (bool _success) { uint256 currentContribution = pool[poolAddress][_tier].contributionInWei; if((_tier == 0 && (poolAddressCapTier1 < currentContribution.add(_value))) || (_tier == 1 && (poolAddressCapTier2 < currentContribution.add(_value)))) { return false; } return true; } /** * Check cap for pool address in tier 1 and 2 * * @param _address Participant address * @param _value Participant contribution * @param _tier Current tier */ function checkAllowedContribution(address _address, uint256 _value, uint8 _tier) internal view returns (bool _success) { bool status = false; if(contributors[_address].canContribute) { if(_tier == 0) { if(participantCapTier1 >= contributors[_address].contributionInWeiTier1.add(_value)) { status = true; } } else if(_tier == 1) { if(participantCapTier2 >= contributors[_address].contributionInWeiTier2.add(_value)) { status = true; } } else if(_tier == 2) { status = true; } else { status = true; } } return status; } /** * Get current tier tokens rate * * @param _tier Current tier */ function getTierTokens(uint8 _tier) internal view returns(uint256 _tokens) { uint256 tokens = RATE_TIER1; if(_tier == 1) { tokens = RATE_TIER2; } else if(_tier == 2) { tokens = RATE_TIER3; } else if(_tier == 3) { if(now <= publicSaleDiscountEndTime) { tokens = RATE_PUBLIC_SALE; } else { tokens = RATE; } } return tokens; } // Get current tier function getCurrentTier() public view returns(uint8 _tier) { uint8 currentTier = 3; // 3 is public sale if(stage == Stages.PreSale) { if(now <= tierEndTime[0]) { currentTier = 0; } else if(now <= tierEndTime[1]) { currentTier = 1; } else if(now <= tierEndTime[2]) { currentTier = 2; } } else { if(now > endTime) { currentTier = 4; // Token offering ended } } return currentTier; } // Set end time for each tier function setTierEndTime() internal AtStage(Stages.Pending) { tierEndTime[0] = startTimePresale + 1 days; tierEndTime[1] = tierEndTime[0] + 2 days; tierEndTime[2] = tierEndTime[1] + 6 days; } // End the token offering function endOffering() public OnlyOwner { offeringEnded(); } // Token offering is ended function offeringEnded() internal { endTime = now; stage = Stages.Ended; emit OfferingCloses(endTime, weiRaised); } // Enable transfers, burn unsold tokens & set tokenOfferingAddress to 0 function enableTransfer() public OnlyOwner returns(bool _success){ transferIsEnabled = true; uint256 tokensToBurn = allowed[msg.sender][contractAddress]; if(tokensToBurn != 0){ burn(tokensToBurn); approve(contractAddress, 0); } return true; } /** * Extend end time * * @param _addedTime Addtional time in secods */ function extendEndTime(uint256 _addedTime) external OnlyOwner { endTime = endTime + _addedTime; } /** * Extend public sale discount time * * @param _addedPublicSaleDiscountEndTime Addtional time in secods */ function extendPublicSaleDiscountEndTime(uint256 _addedPublicSaleDiscountEndTime) external OnlyOwner { publicSaleDiscountEndTime = publicSaleDiscountEndTime + _addedPublicSaleDiscountEndTime; } /** * Update pool cap for tier 1 * * @param _poolAddressCapTier1 Tier cap */ function updatePoolAddressCapTier1(uint256 _poolAddressCapTier1) external OnlyOwner { poolAddressCapTier1 = _poolAddressCapTier1; } /** * Update pool cap for tier 2 * * @param _poolAddressCapTier2 Tier cap */ function updatePoolAddressCapTier2(uint256 _poolAddressCapTier2) external OnlyOwner { poolAddressCapTier2 = _poolAddressCapTier2; } // /** * Update participant cap for tier 1 * * @param _participantCapTier1 Tier cap */ function updateParticipantCapTier1(uint256 _participantCapTier1) external OnlyOwner { participantCapTier1 = _participantCapTier1; } /** * Update participant cap for tier 2 * * @param _participantCapTier2 Tier cap */ function updateParticipantCapTier2(uint256 _participantCapTier2) external OnlyOwner { participantCapTier2 = _participantCapTier2; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"CONTRACT_ALLOWANCE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_participantCapTier1","type":"uint256"}],"name":"updateParticipantCapTier1","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":true,"inputs":[],"name":"poolAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contributors","outputs":[{"name":"canContribute","type":"bool"},{"name":"tier","type":"uint8"},{"name":"contributionInWeiTier1","type":"uint256"},{"name":"contributionInWeiTier2","type":"uint256"},{"name":"contributionInWeiTier3","type":"uint256"},{"name":"contributionInWeiPublicSale","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolAddressCapTier1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferIsEnabled","outputs":[{"name":"","type":"bool"}],"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":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tierEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pauseNotice","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint8"}],"name":"pool","outputs":[{"name":"contributionInWei","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"RATE_TIER3","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"},{"name":"_tier","type":"uint8"}],"name":"addApprovedAddresses","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"participantCapTier2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"string"}],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"balanceOf","outputs":[{"name":"theBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokensSent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setTokenOffering","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentTier","outputs":[{"name":"_tier","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startTime","type":"uint256"}],"name":"startPublicSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"RATE_TIER1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_participantCapTier2","type":"uint256"}],"name":"updateParticipantCapTier2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addedTime","type":"uint256"}],"name":"extendEndTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_CONTRIBUTION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_tier","type":"uint8"}],"name":"addSingleApprovedAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TIER1_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolAddressCapTier2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"endOffering","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_startTimePresale","type":"uint256"}],"name":"startPresale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[{"name":"_success","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_poolAddressCapTier2","type":"uint256"}],"name":"updatePoolAddressCapTier2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TIER2_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"participantCapTier1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_poolAddressCapTier1","type":"uint256"}],"name":"updatePoolAddressCapTier1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"beneficiaryAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"theAllowance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FUNDING_ETH_HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE_PUBLIC_SALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"withdrawCrowdsaleTokens","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"string"}],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"RATE_TIER2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableTransfer","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_ETH_SOFT_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ADMIN_ALLOWANCE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addedPublicSaleDiscountEndTime","type":"uint256"}],"name":"extendPublicSaleDiscountEndTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_purchaser","type":"address"},{"indexed":false,"name":"_value","type":"uint256"},{"indexed":false,"name":"_tokens","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_msg","type":"string"},{"indexed":false,"name":"_startTime","type":"uint256"},{"indexed":false,"name":"_endTime","type":"uint256"}],"name":"OfferingOpens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_endTime","type":"uint256"},{"indexed":false,"name":"_totalWeiRaised","type":"uint256"}],"name":"OfferingCloses","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"pauseReason","type":"string"}],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"unpauseReason","type":"string"}],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_newOwner","type":"address"}],"name":"ChangeOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","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
60806040523480156200001157600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff16600a0a630bebc20002600081905550600054600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000546040518082815260200191505060405180910390a373e0509bb3921aacc433108d403f020a7c2f92e936600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001b4600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260ff16600a0a6304c4b4000262000259640100000000026401000000009004565b5068056bc75e2d6310000060058190555068056bc75e2d63100000600681905550686c6b935b8bbd400000600781905550686c6b935b8bbd4000006008819055506000600d8190555060006012819055506000601381905550600060148190555060006015819055506000600c60146101000a81548160ff0219169083151502179055506000601960006101000a81548160ff021916908315150217905550620003e2565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480620002e65750600082145b1515620002f257600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b61506d80620003f26000396000f3006080604052600436106102ca576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063021e7f85146102d557806306fdde0314610300578063090d993a14610390578063095ea7b3146103bd5780631755ff211461042257806318160ddd146104795780631f6d4942146104a4578063205dc0ee146105285780632282d9f21461055357806323b872dd1461058257806328a647ee146106075780632ad0a4e9146106485780632f1c167c146106d85780632ff2e9dc1461073c578063313ce567146107675780634042b66f1461079857806342966c68146107c35780634f961a6b146107f05780635659856c1461081b578063664e970414610863578063672acef01461088e5780636da66355146108b957806370a0823114610922578063716b01ce1461097957806372dd236a146109ba5780637412c223146109d157806374817d9b14610a025780637b283b7114610a2f578063842bfad214610a5a57806388770cb014610a875780638d0bba0314610ab45780638da5cb5b14610adf57806395c3239114610b3657806395d89b4114610b86578063964ad43414610c16578063999dd03e14610c415780639be3b28614610c6c578063a132aad114610c83578063a6f2ae3a14610cb0578063a9059cbb14610cd2578063b187bd2614610d37578063bf2b752414610d66578063c040e6b814610d93578063c7f43b5714610dcc578063d458c52214610df7578063d4ed899014610e22578063d9c4870e14610e4f578063dd62ed3e14610ea6578063e072830c14610f1d578063e2c3f9a814610f48578063e5c6258d14610f73578063e79faa5814610fd8578063ee2127c814611041578063f1b50c1d1461106c578063f206cf741461109b578063f2fde38b146110c6578063f6b4dfb414611109578063fc53f95814611160578063fc6f94681461118b578063fe1829b6146111e2575b6102d261120f565b50005b3480156102e157600080fd5b506102ea611368565b6040518082815260200191505060405180910390f35b34801561030c57600080fd5b50610315611388565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035557808201518184015260208101905061033a565b50505050905090810190601f1680156103825780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039c57600080fd5b506103bb600480360381019080803590602001909291905050506113c1565b005b3480156103c957600080fd5b50610408600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611427565b604051808215151515815260200191505060405180910390f35b34801561042e57600080fd5b506104376115ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048557600080fd5b5061048e6115d4565b6040518082815260200191505060405180910390f35b3480156104b057600080fd5b506104e5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115da565b60405180871515151581526020018660ff1660ff168152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b34801561053457600080fd5b5061053d611630565b6040518082815260200191505060405180910390f35b34801561055f57600080fd5b50610568611636565b604051808215151515815260200191505060405180910390f35b34801561058e57600080fd5b506105ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611649565b604051808215151515815260200191505060405180910390f35b34801561061357600080fd5b5061063260048036038101908080359060200190929190505050611933565b6040518082815260200191505060405180910390f35b34801561065457600080fd5b5061065d61194d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561069d578082015181840152602081019050610682565b50505050905090810190601f1680156106ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106e457600080fd5b50610726600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506119eb565b6040518082815260200191505060405180910390f35b34801561074857600080fd5b50610751611a16565b6040518082815260200191505060405180910390f35b34801561077357600080fd5b5061077c611a27565b604051808260ff1660ff16815260200191505060405180910390f35b3480156107a457600080fd5b506107ad611a2c565b6040518082815260200191505060405180910390f35b3480156107cf57600080fd5b506107ee60048036038101908080359060200190929190505050611a32565b005b3480156107fc57600080fd5b50610805611b81565b6040518082815260200191505060405180910390f35b34801561082757600080fd5b50610861600480360381019080803590602001908201803590602001919091929391929390803560ff169060200190929190505050611b87565b005b34801561086f57600080fd5b50610878611f60565b6040518082815260200191505060405180910390f35b34801561089a57600080fd5b506108a3611f66565b6040518082815260200191505060405180910390f35b3480156108c557600080fd5b50610920600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611f6c565b005b34801561092e57600080fd5b50610963600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120b5565b6040518082815260200191505060405180910390f35b34801561098557600080fd5b506109a4600480360381019080803590602001909291905050506120fe565b6040518082815260200191505060405180910390f35b3480156109c657600080fd5b506109cf612118565b005b3480156109dd57600080fd5b506109e6612578565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a0e57600080fd5b50610a2d60048036038101908080359060200190929190505050612630565b005b348015610a3b57600080fd5b50610a44612722565b6040518082815260200191505060405180910390f35b348015610a6657600080fd5b50610a8560048036038101908080359060200190929190505050612728565b005b348015610a9357600080fd5b50610ab26004803603810190808035906020019092919050505061278e565b005b348015610ac057600080fd5b50610ac96127f8565b6040518082815260200191505060405180910390f35b348015610aeb57600080fd5b50610af4612804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b4257600080fd5b50610b84600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061282a565b005b348015610b9257600080fd5b50610b9b612ab7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bdb578082015181840152602081019050610bc0565b50505050905090810190601f168015610c085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c2257600080fd5b50610c2b612af0565b6040518082815260200191505060405180910390f35b348015610c4d57600080fd5b50610c56612b01565b6040518082815260200191505060405180910390f35b348015610c7857600080fd5b50610c81612b07565b005b348015610c8f57600080fd5b50610cae60048036038101908080359060200190929190505050612b6d565b005b610cb861120f565b604051808215151515815260200191505060405180910390f35b348015610cde57600080fd5b50610d1d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c4b565b604051808215151515815260200191505060405180910390f35b348015610d4357600080fd5b50610d4c612f33565b604051808215151515815260200191505060405180910390f35b348015610d7257600080fd5b50610d9160048036038101908080359060200190929190505050612f46565b005b348015610d9f57600080fd5b50610da8612fac565b60405180826003811115610db857fe5b60ff16815260200191505060405180910390f35b348015610dd857600080fd5b50610de1612fbf565b6040518082815260200191505060405180910390f35b348015610e0357600080fd5b50610e0c612fd0565b6040518082815260200191505060405180910390f35b348015610e2e57600080fd5b50610e4d60048036038101908080359060200190929190505050612fd6565b005b348015610e5b57600080fd5b50610e6461303c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610eb257600080fd5b50610f07600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613062565b6040518082815260200191505060405180910390f35b348015610f2957600080fd5b50610f326130e9565b6040518082815260200191505060405180910390f35b348015610f5457600080fd5b50610f5d6130f7565b6040518082815260200191505060405180910390f35b348015610f7f57600080fd5b50610fbe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506130fd565b604051808215151515815260200191505060405180910390f35b348015610fe457600080fd5b5061103f600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050613491565b005b34801561104d57600080fd5b506110566135d9565b6040518082815260200191505060405180910390f35b34801561107857600080fd5b506110816135df565b604051808215151515815260200191505060405180910390f35b3480156110a757600080fd5b506110b0613744565b6040518082815260200191505060405180910390f35b3480156110d257600080fd5b50611107600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613751565b005b34801561111557600080fd5b5061111e6138a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561116c57600080fd5b506111756138cf565b6040518082815260200191505060405180910390f35b34801561119757600080fd5b506111a06138e0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156111ee57600080fd5b5061120d60048036038101908080359060200190929190505050613906565b005b600080600360149054906101000a900460ff1615151561122e57600080fd5b6000600381111561123b57fe5b601960019054906101000a900460ff16600381111561125657fe5b14158015611289575060038081111561126b57fe5b601960019054906101000a900460ff16600381111561128657fe5b14155b151561129457600080fd5b600160038111156112a157fe5b601960019054906101000a900460ff1660038111156112bc57fe5b14156113035760006012541180156112d657506012544210155b80156112f35750601660026003811015156112ed57fe5b01544211155b15156112fe57600080fd5b611331565b600060135411801561131757506013544210155b801561132557506014544211155b151561133057600080fd5b5b611339612578565b905060038160ff16111561134c57600080fd5b61135581613970565b151561136057600080fd5b600191505090565b601260ff16600a0a6304c4b40002601260ff16600a0a630bebc200020381565b6040805190810160405280600881526020017f43484552522e494f00000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561141d57600080fd5b8060058190555050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806114b35750600082145b15156114be57600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b601a6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154908060030154908060040154905086565b60075481565b600c60149054906101000a900460ff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561168857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156116c357600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561172057600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561177d57600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156117da57600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561183757600080fd5b600c60149054906101000a900460ff168061189f5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806118f75750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561190257600080fd5b600360149054906101000a900460ff1615151561191e57600080fd5b61192985858561445d565b9150509392505050565b60168160038110151561194257fe5b016000915090505481565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119e35780601f106119b8576101008083540402835291602001916119e3565b820191906000526020600020905b8154815290600101906020018083116119c657829003601f168201915b505050505081565b601b602052816000526040600020602052806000526040600020600091509150508060000154905081565b601260ff16600a0a630bebc2000281565b601281565b600d5481565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111151515611a8057600080fd5b611ad281600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461481c90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b2a8160005461481c90919063ffffffff16565b6000819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a250565b6119b881565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611be657600080fd5b848490509150600090505b81811015611f5957601a60008686848181101515611c0b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515611f4c576001601a60008787858181101515611c8d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555082601a60008787858181101515611d1157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff021916908360ff1602179055506000601a60008787858181101515611d9757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601a60008787858181101515611e0957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000601a60008787858181101515611e7b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000601a60008787858181101515611eed57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b8080600101915050611bf1565b5050505050565b6114d581565b60065481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fc857600080fd5b600360149054906101000a900460ff16151515611fe457600080fd5b6001600360146101000a81548160ff0219169083151502179055508060049080519060200190612015929190614f9c565b507f46f81aedb227deef794d5c737014a5414db3c678220a521b747734688cc6a9fe816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561207857808201518184015260208101905061205d565b50505050905090810190601f1680156120a55780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e8160048110151561210d57fe5b016000915090505481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561217457600080fd5b601960009054906101000a900460ff1615151561219057600080fd5b600c60149054906101000a900460ff161515156121ac57600080fd5b30600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612235600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260ff16600a0a6304c4b40002601260ff16600a0a630bebc2000203611427565b5073aec8c4242c8c2e532c6d6478a7de380263234845600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731a2c916b640520e1e93a78fea04a49d8345a5aa9600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008060ff168152602001908152602001600020600001819055506000601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160ff168152602001908152602001600020600001819055506000601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260ff168152602001908152602001600020600001819055506000601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600360ff168152602001908152602001600020600001819055506000600e60006004811015156124ed57fe5b01819055506000600e600160048110151561250457fe5b01819055506000600e600260048110151561251b57fe5b01819055506000600e600360048110151561253257fe5b01819055506000601960016101000a81548160ff0219169083600381111561255657fe5b02179055506001601960006101000a81548160ff021916908315150217905550565b600080600390506001600381111561258c57fe5b601960019054906101000a900460ff1660038111156125a757fe5b141561261957601660006003811015156125bd57fe5b0154421115156125d05760009050612614565b601660016003811015156125e057fe5b0154421115156125f35760019050612613565b6016600260038110151561260357fe5b01544211151561261257600290505b5b5b612629565b60145442111561262857600490505b5b8091505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561268c57600080fd5b600180600381111561269a57fe5b601960019054906101000a900460ff1660038111156126b557fe5b1415156126c157600080fd5b60008214156126d657426013819055506126de565b816013819055505b6213c680601354016014819055506203f480601354016015819055506002601960016101000a81548160ff0219169083600381111561271957fe5b02179055505050565b61222781565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561278457600080fd5b8060068190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127ea57600080fd5b806014540160148190555050565b67016345785d8a000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561288657600080fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515612ab3576001601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555080601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff021916908360ff1602179055506000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b5050565b6040805190810160405280600381526020017f434852000000000000000000000000000000000000000000000000000000000081525081565b601260ff16600a0a63039387000281565b60085481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b6357600080fd5b612b6b614835565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612bc957600080fd5b6000806003811115612bd757fe5b601960019054906101000a900460ff166003811115612bf257fe5b141515612bfe57600080fd5b6000821415612c135742601281905550612c1b565b816012819055505b612c236148a5565b6001601960016101000a81548160ff02191690836003811115612c4257fe5b02179055505050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c8a57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612cc557600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d2257600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d7f57600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612ddc57600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612e3957600080fd5b600c60149054906101000a900460ff1680612ea15750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612ef95750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612f0457600080fd5b600360149054906101000a900460ff16151515612f2057600080fd5b612f2a8484614952565b91505092915050565b600360149054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612fa257600080fd5b8060088190555050565b601960019054906101000a900460ff1681565b601260ff16600a0a63022551000281565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561303257600080fd5b8060078190555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b69032d26d12e980b60000081565b61172681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561315b57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561319857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156131d357600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561323057600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561328d57600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156132ea57600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561334757600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b505050506040513d602081101561346a57600080fd5b8101908080519060200190929190505050151561348657600080fd5b600191505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156134ed57600080fd5b600360149054906101000a900460ff16151561350857600080fd5b6000600360146101000a81548160ff0219169083151502179055508060049080519060200190613539929190614f9c565b507fab8f771d320c36af1f739e78861e82b4a21f97b123153ce1657e6904c8645da1816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561359c578082015181840152602081019050613581565b50505050905090810190601f1680156135c95780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b611c8a81565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561363e57600080fd5b6001600c60146101000a81548160ff021916908315150217905550600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114151561373c5761370d81611a32565b61373a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611427565b505b600191505090565b68cb49b44ba602d8000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156137ad57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156137e957600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdf73496bb06edd4685dc2027b9d115504a7130d57f4f33dfd66679517060f45760405160405180910390a350565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260ff16600a0a6304c4b4000281565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561396257600080fd5b806015540160158190555050565b60008060008033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156139b357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156139ee57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613a4b57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613aa857600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613b0557600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613b6257600080fd5b67016345785d8a00003410151515613b7957600080fd5b69032d26d12e980b600000613b9934600d54614b7390919063ffffffff16565b1115613ba457600080fd5b349350613bb18685614b91565b1515613bbc57600080fd5b613bc586614c32565b9250613bda8385614c9990919063ffffffff16565b9150600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156140a25760016003811115613c4057fe5b601960019054906101000a900460ff166003811115613c5b57fe5b1415613c7757613c6b3387614ccc565b1515613c7657600080fd5b5b613c82338588614d40565b1515613c8d57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015613d8657600080fd5b505af1158015613d9a573d6000803e3d6000fd5b505050506040513d6020811015613db057600080fd5b81019080805190602001909291905050501515613dcc57600080fd5b60016003811115613dd957fe5b601960019054906101000a900460ff166003811115613df457fe5b14156140015760008660ff161415613ea657613e5b84601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154614b7390919063ffffffff16565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550613ffc565b60018660ff161415613f5257613f0784601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154614b7390919063ffffffff16565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550613ffb565b60028660ff161415613ffa57613fb384601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154614b7390919063ffffffff16565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055505b5b5b61409d565b61405684601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154614b7390919063ffffffff16565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b614304565b6140ac8685614eae565b15156140b757600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156141b057600080fd5b505af11580156141c4573d6000803e3d6000fd5b505050506040513d60208110156141da57600080fd5b810190808051906020019092919050505015156141f657600080fd5b61428484601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008960ff1660ff16815260200190815260200160002060000154614b7390919063ffffffff16565b601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860ff1660ff168152602001908152602001600020600001819055505b61431984600d54614b7390919063ffffffff16565b600d8190555061434582600e8860ff1660048110151561433557fe5b0154614b7390919063ffffffff16565b600e8760ff1660048110151561435757fe5b018190555069032d26d12e980b600000600d5410151561437a57614379614835565b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156143f9573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f8584604051808381526020018281526020019250505060405180910390a26001945050505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561449a57600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156144e857600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561457357600080fd5b6145c582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461481c90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061465a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614b7390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061472c82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461481c90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600082821115151561482a57fe5b818303905092915050565b426014819055506003601960016101000a81548160ff0219169083600381111561485b57fe5b02179055507f02359fdde4491e11fa0985b799db1f730257a9715a67fd4b9ed9956e194025f0601454600d54604051808381526020018281526020019250505060405180910390a1565b60008060038111156148b357fe5b601960019054906101000a900460ff1660038111156148ce57fe5b1415156148da57600080fd5b6201518060125401601660006003811015156148f257fe5b01819055506202a3006016600060038110151561490b57fe5b0154016016600160038110151561491e57fe5b01819055506207e9006016600160038110151561493757fe5b0154016016600260038110151561494a57fe5b018190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156149cf5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211155b15156149da57600080fd5b614a2c82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461481c90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ac182600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614b7390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000808284019050838110151515614b8757fe5b8091505092915050565b6000806000600e8560ff16600481101515614ba857fe5b015491506001905060008560ff161415614bed57614bcf8483614b7390919063ffffffff16565b601260ff16600a0a6303938700021015614be857600090505b614c27565b60018560ff161415614c2657614c0c8483614b7390919063ffffffff16565b601260ff16600a0a6302255100021015614c2557600090505b5b5b809250505092915050565b600080612227905060018360ff161415614c5057611c8a9050614c90565b60028360ff161415614c66576119b89050614c8f565b60038360ff161415614c8e5760155442111515614c87576117269050614c8d565b6114d590505b5b5b5b80915050919050565b60008082840290506000841480614cba5750828482811515614cb757fe5b04145b1515614cc257fe5b8091505092915050565b60008160ff16601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff1660ff16111515614d355760019050614d3a565b600090505b92915050565b60008060009050601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615614ea35760008360ff161415614e1157614dfd84601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154614b7390919063ffffffff16565b600554101515614e0c57600190505b614ea2565b60018360ff161415614e8657614e7284601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154614b7390919063ffffffff16565b600654101515614e8157600190505b614ea1565b60028360ff161415614e9b5760019050614ea0565b600190505b5b5b5b809150509392505050565b600080601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff16815260200190815260200160002060000154905060008460ff16148015614f555750614f508382614b7390919063ffffffff16565b600754105b80614f82575060018460ff16148015614f815750614f7c8382614b7390919063ffffffff16565b600854105b5b15614f905760009150614f95565b600191505b5092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614fdd57805160ff191683800117855561500b565b8280016001018555821561500b579182015b8281111561500a578251825591602001919060010190614fef565b5b509050615018919061501c565b5090565b61503e91905b8082111561503a576000816000905550600101615022565b5090565b905600a165627a7a7230582022e215f661d78eb641dd83534c19cb916ddbcf51dac40cf0707cdc08cd5ec7db0029
Deployed Bytecode
0x6080604052600436106102ca576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063021e7f85146102d557806306fdde0314610300578063090d993a14610390578063095ea7b3146103bd5780631755ff211461042257806318160ddd146104795780631f6d4942146104a4578063205dc0ee146105285780632282d9f21461055357806323b872dd1461058257806328a647ee146106075780632ad0a4e9146106485780632f1c167c146106d85780632ff2e9dc1461073c578063313ce567146107675780634042b66f1461079857806342966c68146107c35780634f961a6b146107f05780635659856c1461081b578063664e970414610863578063672acef01461088e5780636da66355146108b957806370a0823114610922578063716b01ce1461097957806372dd236a146109ba5780637412c223146109d157806374817d9b14610a025780637b283b7114610a2f578063842bfad214610a5a57806388770cb014610a875780638d0bba0314610ab45780638da5cb5b14610adf57806395c3239114610b3657806395d89b4114610b86578063964ad43414610c16578063999dd03e14610c415780639be3b28614610c6c578063a132aad114610c83578063a6f2ae3a14610cb0578063a9059cbb14610cd2578063b187bd2614610d37578063bf2b752414610d66578063c040e6b814610d93578063c7f43b5714610dcc578063d458c52214610df7578063d4ed899014610e22578063d9c4870e14610e4f578063dd62ed3e14610ea6578063e072830c14610f1d578063e2c3f9a814610f48578063e5c6258d14610f73578063e79faa5814610fd8578063ee2127c814611041578063f1b50c1d1461106c578063f206cf741461109b578063f2fde38b146110c6578063f6b4dfb414611109578063fc53f95814611160578063fc6f94681461118b578063fe1829b6146111e2575b6102d261120f565b50005b3480156102e157600080fd5b506102ea611368565b6040518082815260200191505060405180910390f35b34801561030c57600080fd5b50610315611388565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035557808201518184015260208101905061033a565b50505050905090810190601f1680156103825780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039c57600080fd5b506103bb600480360381019080803590602001909291905050506113c1565b005b3480156103c957600080fd5b50610408600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611427565b604051808215151515815260200191505060405180910390f35b34801561042e57600080fd5b506104376115ae565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048557600080fd5b5061048e6115d4565b6040518082815260200191505060405180910390f35b3480156104b057600080fd5b506104e5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115da565b60405180871515151581526020018660ff1660ff168152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b34801561053457600080fd5b5061053d611630565b6040518082815260200191505060405180910390f35b34801561055f57600080fd5b50610568611636565b604051808215151515815260200191505060405180910390f35b34801561058e57600080fd5b506105ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611649565b604051808215151515815260200191505060405180910390f35b34801561061357600080fd5b5061063260048036038101908080359060200190929190505050611933565b6040518082815260200191505060405180910390f35b34801561065457600080fd5b5061065d61194d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561069d578082015181840152602081019050610682565b50505050905090810190601f1680156106ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106e457600080fd5b50610726600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506119eb565b6040518082815260200191505060405180910390f35b34801561074857600080fd5b50610751611a16565b6040518082815260200191505060405180910390f35b34801561077357600080fd5b5061077c611a27565b604051808260ff1660ff16815260200191505060405180910390f35b3480156107a457600080fd5b506107ad611a2c565b6040518082815260200191505060405180910390f35b3480156107cf57600080fd5b506107ee60048036038101908080359060200190929190505050611a32565b005b3480156107fc57600080fd5b50610805611b81565b6040518082815260200191505060405180910390f35b34801561082757600080fd5b50610861600480360381019080803590602001908201803590602001919091929391929390803560ff169060200190929190505050611b87565b005b34801561086f57600080fd5b50610878611f60565b6040518082815260200191505060405180910390f35b34801561089a57600080fd5b506108a3611f66565b6040518082815260200191505060405180910390f35b3480156108c557600080fd5b50610920600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611f6c565b005b34801561092e57600080fd5b50610963600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120b5565b6040518082815260200191505060405180910390f35b34801561098557600080fd5b506109a4600480360381019080803590602001909291905050506120fe565b6040518082815260200191505060405180910390f35b3480156109c657600080fd5b506109cf612118565b005b3480156109dd57600080fd5b506109e6612578565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a0e57600080fd5b50610a2d60048036038101908080359060200190929190505050612630565b005b348015610a3b57600080fd5b50610a44612722565b6040518082815260200191505060405180910390f35b348015610a6657600080fd5b50610a8560048036038101908080359060200190929190505050612728565b005b348015610a9357600080fd5b50610ab26004803603810190808035906020019092919050505061278e565b005b348015610ac057600080fd5b50610ac96127f8565b6040518082815260200191505060405180910390f35b348015610aeb57600080fd5b50610af4612804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b4257600080fd5b50610b84600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061282a565b005b348015610b9257600080fd5b50610b9b612ab7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bdb578082015181840152602081019050610bc0565b50505050905090810190601f168015610c085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c2257600080fd5b50610c2b612af0565b6040518082815260200191505060405180910390f35b348015610c4d57600080fd5b50610c56612b01565b6040518082815260200191505060405180910390f35b348015610c7857600080fd5b50610c81612b07565b005b348015610c8f57600080fd5b50610cae60048036038101908080359060200190929190505050612b6d565b005b610cb861120f565b604051808215151515815260200191505060405180910390f35b348015610cde57600080fd5b50610d1d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c4b565b604051808215151515815260200191505060405180910390f35b348015610d4357600080fd5b50610d4c612f33565b604051808215151515815260200191505060405180910390f35b348015610d7257600080fd5b50610d9160048036038101908080359060200190929190505050612f46565b005b348015610d9f57600080fd5b50610da8612fac565b60405180826003811115610db857fe5b60ff16815260200191505060405180910390f35b348015610dd857600080fd5b50610de1612fbf565b6040518082815260200191505060405180910390f35b348015610e0357600080fd5b50610e0c612fd0565b6040518082815260200191505060405180910390f35b348015610e2e57600080fd5b50610e4d60048036038101908080359060200190929190505050612fd6565b005b348015610e5b57600080fd5b50610e6461303c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610eb257600080fd5b50610f07600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613062565b6040518082815260200191505060405180910390f35b348015610f2957600080fd5b50610f326130e9565b6040518082815260200191505060405180910390f35b348015610f5457600080fd5b50610f5d6130f7565b6040518082815260200191505060405180910390f35b348015610f7f57600080fd5b50610fbe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506130fd565b604051808215151515815260200191505060405180910390f35b348015610fe457600080fd5b5061103f600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050613491565b005b34801561104d57600080fd5b506110566135d9565b6040518082815260200191505060405180910390f35b34801561107857600080fd5b506110816135df565b604051808215151515815260200191505060405180910390f35b3480156110a757600080fd5b506110b0613744565b6040518082815260200191505060405180910390f35b3480156110d257600080fd5b50611107600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613751565b005b34801561111557600080fd5b5061111e6138a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561116c57600080fd5b506111756138cf565b6040518082815260200191505060405180910390f35b34801561119757600080fd5b506111a06138e0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156111ee57600080fd5b5061120d60048036038101908080359060200190929190505050613906565b005b600080600360149054906101000a900460ff1615151561122e57600080fd5b6000600381111561123b57fe5b601960019054906101000a900460ff16600381111561125657fe5b14158015611289575060038081111561126b57fe5b601960019054906101000a900460ff16600381111561128657fe5b14155b151561129457600080fd5b600160038111156112a157fe5b601960019054906101000a900460ff1660038111156112bc57fe5b14156113035760006012541180156112d657506012544210155b80156112f35750601660026003811015156112ed57fe5b01544211155b15156112fe57600080fd5b611331565b600060135411801561131757506013544210155b801561132557506014544211155b151561133057600080fd5b5b611339612578565b905060038160ff16111561134c57600080fd5b61135581613970565b151561136057600080fd5b600191505090565b601260ff16600a0a6304c4b40002601260ff16600a0a630bebc200020381565b6040805190810160405280600881526020017f43484552522e494f00000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561141d57600080fd5b8060058190555050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806114b35750600082145b15156114be57600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b601a6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154908060030154908060040154905086565b60075481565b600c60149054906101000a900460ff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561168857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156116c357600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561172057600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561177d57600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156117da57600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561183757600080fd5b600c60149054906101000a900460ff168061189f5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806118f75750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561190257600080fd5b600360149054906101000a900460ff1615151561191e57600080fd5b61192985858561445d565b9150509392505050565b60168160038110151561194257fe5b016000915090505481565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119e35780601f106119b8576101008083540402835291602001916119e3565b820191906000526020600020905b8154815290600101906020018083116119c657829003601f168201915b505050505081565b601b602052816000526040600020602052806000526040600020600091509150508060000154905081565b601260ff16600a0a630bebc2000281565b601281565b600d5481565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111151515611a8057600080fd5b611ad281600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461481c90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b2a8160005461481c90919063ffffffff16565b6000819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a250565b6119b881565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611be657600080fd5b848490509150600090505b81811015611f5957601a60008686848181101515611c0b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515611f4c576001601a60008787858181101515611c8d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555082601a60008787858181101515611d1157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff021916908360ff1602179055506000601a60008787858181101515611d9757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601a60008787858181101515611e0957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000601a60008787858181101515611e7b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000601a60008787858181101515611eed57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b8080600101915050611bf1565b5050505050565b6114d581565b60065481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fc857600080fd5b600360149054906101000a900460ff16151515611fe457600080fd5b6001600360146101000a81548160ff0219169083151502179055508060049080519060200190612015929190614f9c565b507f46f81aedb227deef794d5c737014a5414db3c678220a521b747734688cc6a9fe816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561207857808201518184015260208101905061205d565b50505050905090810190601f1680156120a55780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e8160048110151561210d57fe5b016000915090505481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561217457600080fd5b601960009054906101000a900460ff1615151561219057600080fd5b600c60149054906101000a900460ff161515156121ac57600080fd5b30600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612235600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260ff16600a0a6304c4b40002601260ff16600a0a630bebc2000203611427565b5073aec8c4242c8c2e532c6d6478a7de380263234845600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731a2c916b640520e1e93a78fea04a49d8345a5aa9600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008060ff168152602001908152602001600020600001819055506000601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160ff168152602001908152602001600020600001819055506000601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260ff168152602001908152602001600020600001819055506000601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600360ff168152602001908152602001600020600001819055506000600e60006004811015156124ed57fe5b01819055506000600e600160048110151561250457fe5b01819055506000600e600260048110151561251b57fe5b01819055506000600e600360048110151561253257fe5b01819055506000601960016101000a81548160ff0219169083600381111561255657fe5b02179055506001601960006101000a81548160ff021916908315150217905550565b600080600390506001600381111561258c57fe5b601960019054906101000a900460ff1660038111156125a757fe5b141561261957601660006003811015156125bd57fe5b0154421115156125d05760009050612614565b601660016003811015156125e057fe5b0154421115156125f35760019050612613565b6016600260038110151561260357fe5b01544211151561261257600290505b5b5b612629565b60145442111561262857600490505b5b8091505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561268c57600080fd5b600180600381111561269a57fe5b601960019054906101000a900460ff1660038111156126b557fe5b1415156126c157600080fd5b60008214156126d657426013819055506126de565b816013819055505b6213c680601354016014819055506203f480601354016015819055506002601960016101000a81548160ff0219169083600381111561271957fe5b02179055505050565b61222781565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561278457600080fd5b8060068190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127ea57600080fd5b806014540160148190555050565b67016345785d8a000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561288657600080fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515612ab3576001601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555080601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff021916908360ff1602179055506000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b5050565b6040805190810160405280600381526020017f434852000000000000000000000000000000000000000000000000000000000081525081565b601260ff16600a0a63039387000281565b60085481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b6357600080fd5b612b6b614835565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612bc957600080fd5b6000806003811115612bd757fe5b601960019054906101000a900460ff166003811115612bf257fe5b141515612bfe57600080fd5b6000821415612c135742601281905550612c1b565b816012819055505b612c236148a5565b6001601960016101000a81548160ff02191690836003811115612c4257fe5b02179055505050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c8a57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612cc557600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d2257600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612d7f57600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612ddc57600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612e3957600080fd5b600c60149054906101000a900460ff1680612ea15750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612ef95750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612f0457600080fd5b600360149054906101000a900460ff16151515612f2057600080fd5b612f2a8484614952565b91505092915050565b600360149054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612fa257600080fd5b8060088190555050565b601960019054906101000a900460ff1681565b601260ff16600a0a63022551000281565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561303257600080fd5b8060078190555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b69032d26d12e980b60000081565b61172681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561315b57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561319857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156131d357600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561323057600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561328d57600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156132ea57600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561334757600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561344057600080fd5b505af1158015613454573d6000803e3d6000fd5b505050506040513d602081101561346a57600080fd5b8101908080519060200190929190505050151561348657600080fd5b600191505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156134ed57600080fd5b600360149054906101000a900460ff16151561350857600080fd5b6000600360146101000a81548160ff0219169083151502179055508060049080519060200190613539929190614f9c565b507fab8f771d320c36af1f739e78861e82b4a21f97b123153ce1657e6904c8645da1816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561359c578082015181840152602081019050613581565b50505050905090810190601f1680156135c95780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b611c8a81565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561363e57600080fd5b6001600c60146101000a81548160ff021916908315150217905550600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114151561373c5761370d81611a32565b61373a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611427565b505b600191505090565b68cb49b44ba602d8000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156137ad57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156137e957600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdf73496bb06edd4685dc2027b9d115504a7130d57f4f33dfd66679517060f45760405160405180910390a350565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260ff16600a0a6304c4b4000281565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561396257600080fd5b806015540160158190555050565b60008060008033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156139b357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156139ee57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613a4b57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613aa857600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613b0557600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613b6257600080fd5b67016345785d8a00003410151515613b7957600080fd5b69032d26d12e980b600000613b9934600d54614b7390919063ffffffff16565b1115613ba457600080fd5b349350613bb18685614b91565b1515613bbc57600080fd5b613bc586614c32565b9250613bda8385614c9990919063ffffffff16565b9150600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156140a25760016003811115613c4057fe5b601960019054906101000a900460ff166003811115613c5b57fe5b1415613c7757613c6b3387614ccc565b1515613c7657600080fd5b5b613c82338588614d40565b1515613c8d57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015613d8657600080fd5b505af1158015613d9a573d6000803e3d6000fd5b505050506040513d6020811015613db057600080fd5b81019080805190602001909291905050501515613dcc57600080fd5b60016003811115613dd957fe5b601960019054906101000a900460ff166003811115613df457fe5b14156140015760008660ff161415613ea657613e5b84601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154614b7390919063ffffffff16565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550613ffc565b60018660ff161415613f5257613f0784601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154614b7390919063ffffffff16565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550613ffb565b60028660ff161415613ffa57613fb384601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154614b7390919063ffffffff16565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055505b5b5b61409d565b61405684601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154614b7390919063ffffffff16565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b614304565b6140ac8685614eae565b15156140b757600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156141b057600080fd5b505af11580156141c4573d6000803e3d6000fd5b505050506040513d60208110156141da57600080fd5b810190808051906020019092919050505015156141f657600080fd5b61428484601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008960ff1660ff16815260200190815260200160002060000154614b7390919063ffffffff16565b601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860ff1660ff168152602001908152602001600020600001819055505b61431984600d54614b7390919063ffffffff16565b600d8190555061434582600e8860ff1660048110151561433557fe5b0154614b7390919063ffffffff16565b600e8760ff1660048110151561435757fe5b018190555069032d26d12e980b600000600d5410151561437a57614379614835565b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156143f9573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f8584604051808381526020018281526020019250505060405180910390a26001945050505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561449a57600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156144e857600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561457357600080fd5b6145c582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461481c90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061465a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614b7390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061472c82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461481c90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600082821115151561482a57fe5b818303905092915050565b426014819055506003601960016101000a81548160ff0219169083600381111561485b57fe5b02179055507f02359fdde4491e11fa0985b799db1f730257a9715a67fd4b9ed9956e194025f0601454600d54604051808381526020018281526020019250505060405180910390a1565b60008060038111156148b357fe5b601960019054906101000a900460ff1660038111156148ce57fe5b1415156148da57600080fd5b6201518060125401601660006003811015156148f257fe5b01819055506202a3006016600060038110151561490b57fe5b0154016016600160038110151561491e57fe5b01819055506207e9006016600160038110151561493757fe5b0154016016600260038110151561494a57fe5b018190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156149cf5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211155b15156149da57600080fd5b614a2c82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461481c90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ac182600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614b7390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000808284019050838110151515614b8757fe5b8091505092915050565b6000806000600e8560ff16600481101515614ba857fe5b015491506001905060008560ff161415614bed57614bcf8483614b7390919063ffffffff16565b601260ff16600a0a6303938700021015614be857600090505b614c27565b60018560ff161415614c2657614c0c8483614b7390919063ffffffff16565b601260ff16600a0a6302255100021015614c2557600090505b5b5b809250505092915050565b600080612227905060018360ff161415614c5057611c8a9050614c90565b60028360ff161415614c66576119b89050614c8f565b60038360ff161415614c8e5760155442111515614c87576117269050614c8d565b6114d590505b5b5b5b80915050919050565b60008082840290506000841480614cba5750828482811515614cb757fe5b04145b1515614cc257fe5b8091505092915050565b60008160ff16601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff1660ff16111515614d355760019050614d3a565b600090505b92915050565b60008060009050601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615614ea35760008360ff161415614e1157614dfd84601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154614b7390919063ffffffff16565b600554101515614e0c57600190505b614ea2565b60018360ff161415614e8657614e7284601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154614b7390919063ffffffff16565b600654101515614e8157600190505b614ea1565b60028360ff161415614e9b5760019050614ea0565b600190505b5b5b5b809150509392505050565b600080601b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff16815260200190815260200160002060000154905060008460ff16148015614f555750614f508382614b7390919063ffffffff16565b600754105b80614f82575060018460ff16148015614f815750614f7c8382614b7390919063ffffffff16565b600854105b5b15614f905760009150614f95565b600191505b5092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614fdd57805160ff191683800117855561500b565b8280016001018555821561500b579182015b8281111561500a578251825591602001919060010190614fef565b5b509050615018919061501c565b5090565b61503e91905b8082111561503a576000816000905550600101615022565b5090565b905600a165627a7a7230582022e215f661d78eb641dd83534c19cb916ddbcf51dac40cf0707cdc08cd5ec7db0029
Swarm Source
bzzr://22e215f661d78eb641dd83534c19cb916ddbcf51dac40cf0707cdc08cd5ec7db
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.