More Info
Private Name Tags
ContractCreator
Latest 9 from a total of 9 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 11263318 | 1527 days ago | IN | 0.01769357 ETH | 0.000798 | ||||
Transfer | 11263273 | 1527 days ago | IN | 0.3 ETH | 0.00379636 | ||||
Transfer | 11263272 | 1527 days ago | IN | 0.79047581 ETH | 0.00306508 | ||||
Transfer | 11263252 | 1527 days ago | IN | 0.3 ETH | 0.000903 | ||||
Transfer | 11263232 | 1527 days ago | IN | 0.3 ETH | 0.000756 | ||||
Transfer | 11263152 | 1527 days ago | IN | 0.5 ETH | 0.00371008 | ||||
Transfer | 11263141 | 1527 days ago | IN | 0.3 ETH | 0.000798 | ||||
Transfer | 11263128 | 1527 days ago | IN | 0.16200935 ETH | 0.00213843 | ||||
Transfer | 11263112 | 1527 days ago | IN | 0.15195736 ETH | 0.00378843 |
Loading...
Loading
Contract Name:
YbaoFinanceTokenCrowdsale
Compiler Version
v0.5.0+commit.1d4f565a
Contract Source Code (Solidity Multiple files format)
pragma solidity ^0.5.0; import './YbaoToken.sol'; contract YbaoFinanceTokenCrowdsale { using SafeMath for uint256; /** * Event for YbaoFinanceToken purchase logging * @param purchaser who paid for the tokens * @param beneficiary who got the tokens * @param value weis paid for purchase * @param amount amount of tokens purchased */ event TokenPurchase( address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount ); bool public isEnded = false; event Ended(uint256 totalWeiRaisedInCrowdsale,uint256 unsoldTokensTransferredToOwner); uint256 public rate; //Tokens per wei address payable public ethBeneficiaryAccount; ERC20Burnable public YbaoFinanceToken; // ICO Stage // ============ enum CrowdsaleStage { PreICO, ICO } CrowdsaleStage public stage; //0 for PreICO & 1 for ICO Stage // ============= // YbaoFinanceToken Distribution // ============================= uint256 public totalTokensForSale = 8000*(1e18); // 8000 YBAO will be sold during hole Crowdsale uint256 public totalTokensForSaleDuringPreICO = 4000*(1e18); // 4000 YBAO will be sold during PreICO uint256 public totalTokensForSaleDuringICO = 4000*(1e18); // 4000 YBAO will be sold during ICO // ============================== // Amount of wei raised in Crowdsale // ================== uint256 public totalWeiRaisedDuringPreICO; uint256 public totalWeiRaisedDuringICO; // =================== // YbaoFinanceToken Amount remaining to Purchase // ================== uint256 public tokenRemainingForSaleInPreICO = 4000*(1e18); uint256 public tokenRemainingForSaleInICO = 4000*(1e18); // =================== // Events event EthTransferred(string text); //Modifier address public owner; modifier onlyOwner() { require (msg.sender == owner); _; } // Constructor // ============ constructor(uint256 initialRate,address payable wallet) public { ethBeneficiaryAccount = wallet; setCurrentRate(initialRate); owner = msg.sender; stage = CrowdsaleStage.PreICO; // By default it's PreICO YbaoFinanceToken = new YbaoToken(owner); // YbaoFinanceToken Deployment } // ============= // Crowdsale Stage Management // ========================================================= // Change Crowdsale Stage. Available Options: PreICO, ICO function switchToICOStage() public onlyOwner { require(stage == CrowdsaleStage.PreICO); stage = CrowdsaleStage.ICO; setCurrentRate(20); } // Change the current rate function setCurrentRate(uint256 _rate) private { rate = _rate; } // ================ Stage Management Over ===================== /** * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. Use super to concatenate validations. * @param _beneficiary Address performing the YbaoFinanceToken purchase * @param _weiAmount Value in wei involved in the purchase */ function _preValidatePurchase( address _beneficiary, uint256 _weiAmount ) internal pure { require(_beneficiary != address(0)); require(_weiAmount >= 1e17 wei,"Minimum amount to invest: 0.1 ETH"); } /** * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends its tokens. * @param _beneficiary Address performing the YbaoFinanceToken purchase * @param _tokenAmount Number of tokens to be emitted */ function _deliverTokens( address _beneficiary, uint256 _tokenAmount ) internal { YbaoFinanceToken.transfer(_beneficiary, _tokenAmount); } /** * @dev Executed when a purchase has been validated and is ready to be executed. Not necessarily emits/sends tokens. * @param _beneficiary Address receiving the tokens * @param _tokenAmount Number of tokens to be purchased */ function _processPurchase( address _beneficiary, uint256 _tokenAmount ) internal { _deliverTokens(_beneficiary, _tokenAmount); } /** * @dev Override to extend the way in which ether is converted to tokens. * @param _weiAmount Value in wei to be converted into tokens * @return Number of tokens that can be purchased with the specified _weiAmount */ function _getTokenAmount(uint256 _weiAmount) internal view returns (uint256) { return _weiAmount.mul(rate); } /** * @dev Determines how ETH is stored/forwarded on purchases. */ function _forwardFunds() internal { ethBeneficiaryAccount.transfer(msg.value); emit EthTransferred("Forwarding funds to ETH Beneficiary Account"); } // YbaoFinanceToken Purchase // ========================= function() external payable{ if(isEnded){ revert(); //Block Incoming ETH Deposits if Crowdsale has ended } buyYBAOToken(msg.sender); } function buyYBAOToken(address _beneficiary) public payable { uint256 weiAmount = msg.value; if(isEnded){ revert(); } _preValidatePurchase(_beneficiary, weiAmount); uint256 tokensToBePurchased = weiAmount.mul(rate); if ((stage == CrowdsaleStage.PreICO) && (tokensToBePurchased > tokenRemainingForSaleInPreICO)) { revert(); //Block Incoming ETH Deposits for PreICO stage if tokens to be purchased, exceeds remaining tokens for sale in Pre ICO } else if ((stage == CrowdsaleStage.ICO) && (tokensToBePurchased > tokenRemainingForSaleInICO)) { revert(); //Block Incoming ETH Deposits for ICO stage if tokens to be purchased, exceeds remaining tokens for sale in ICO } // calculate YbaoFinanceToken amount to be created uint256 tokens = _getTokenAmount(weiAmount); _processPurchase(_beneficiary, tokens); emit TokenPurchase( msg.sender, _beneficiary, weiAmount, tokens ); _forwardFunds(); if (stage == CrowdsaleStage.PreICO) { totalWeiRaisedDuringPreICO = totalWeiRaisedDuringPreICO.add(weiAmount); tokenRemainingForSaleInPreICO = tokenRemainingForSaleInPreICO.sub(tokensToBePurchased); if(tokenRemainingForSaleInPreICO == 0){ // Switch to ICO Stage when all tokens allocated for PreICO stage are being sold out switchToICOStage(); } } else if (stage == CrowdsaleStage.ICO) { totalWeiRaisedDuringICO = totalWeiRaisedDuringICO.add(weiAmount); tokenRemainingForSaleInICO = tokenRemainingForSaleInICO.sub(tokensToBePurchased); if(tokenRemainingForSaleInICO == 0 && tokenRemainingForSaleInPreICO == 0){ // End Crowdsale when all tokens allocated for For Sale are being sold out endCrowdsale(); } } } // Finish: Finalizing the Crowdsale. // ==================================================================== function endCrowdsale() public onlyOwner { require(!isEnded && stage == CrowdsaleStage.ICO,"Should be at ICO Stage to Finalize the Crowdsale"); uint256 unsoldTokens = tokenRemainingForSaleInPreICO.add(tokenRemainingForSaleInICO); if (unsoldTokens > 0) { tokenRemainingForSaleInICO = 0; tokenRemainingForSaleInPreICO = 0; YbaoFinanceToken.transfer(owner,unsoldTokens); } emit Ended(totalWeiRaised(),unsoldTokens); isEnded = true; } // =============================== function balanceOf(address tokenHolder) external view returns(uint256 balance){ return YbaoFinanceToken.balanceOf(tokenHolder); } function totalWeiRaised() public view returns(uint256){ return totalWeiRaisedDuringPreICO.add(totalWeiRaisedDuringICO); } }
pragma solidity ^0.5.0; interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public { uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, "ERC20: burn amount exceeds allowance"); _approve(account, _msgSender(), decreasedAllowance); _burn(account, amount); } } contract YbaoToken is ERC20Burnable { string public constant name = "YBAO.Finance"; string public constant symbol = "YBAO"; uint8 public constant decimals = 18; using SafeMath for uint256; constructor(address owner) public { //12000 YBAO Token Total Supply uint256 allocatedForCrowdsale = 8000; uint256 ownerFunds = 4000; _mint(owner, ownerFunds.mul(1e18)); //4000 YBAO Token to Owner _mint(msg.sender, allocatedForCrowdsale.mul(1e18)); //8000 YBAO Token to Crowdsale contract } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"endCrowdsale","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":"ethBeneficiaryAccount","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"switchToICOStage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalWeiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenRemainingForSaleInICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokensForSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenRemainingForSaleInPreICO","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":true,"inputs":[],"name":"YbaoFinanceToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalWeiRaisedDuringPreICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokensForSaleDuringPreICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalWeiRaisedDuringICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokensForSaleDuringICO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"buyYBAOToken","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[{"name":"initialRate","type":"uint256"},{"name":"wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"totalWeiRaisedInCrowdsale","type":"uint256"},{"indexed":false,"name":"unsoldTokensTransferredToOwner","type":"uint256"}],"name":"Ended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"text","type":"string"}],"name":"EthTransferred","type":"event"}]
Contract Creation Code
608060405260008060006101000a81548160ff0219169083151502179055506901b1ae4d6e2ef500000060045568d8d726b7177a80000060055568d8d726b7177a80000060065568d8d726b7177a80000060095568d8d726b7177a800000600a5534801561006c57600080fd5b50604051604080612f268339810180604052604081101561008c57600080fd5b81019080805190602001909291908051906020019092919050505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101008261022a640100000000026401000000009004565b33600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360146101000a81548160ff0219169083600181111561016057fe5b0217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610190610234565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156101e2573d6000803e3d6000fd5b50600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610244565b8060018190555050565b604051611a58806114ce83390190565b61127b806102536000396000f3fe6080604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632095f2d4146101205780632c4e722e1461013757806340110a60146101625780634ad23303146101b957806353f4db01146101d05780635fac726b146101fb57806360219c7b1461022657806370a08231146102515780637fe70f47146102b65780638da5cb5b146102e15780639b596b9c14610338578063a4fd6f561461038f578063abe8014a146103be578063c02aaea1146103e9578063c040e6b814610414578063d7db23511461044d578063e2be328d14610478578063f5751698146104a3575b6000809054906101000a900460ff161561011557600080fd5b61011e336104e7565b005b34801561012c57600080fd5b5061013561073d565b005b34801561014357600080fd5b5061014c610a2e565b6040518082815260200191505060405180910390f35b34801561016e57600080fd5b50610177610a34565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c557600080fd5b506101ce610a5a565b005b3480156101dc57600080fd5b506101e5610b1a565b6040518082815260200191505060405180910390f35b34801561020757600080fd5b50610210610b38565b6040518082815260200191505060405180910390f35b34801561023257600080fd5b5061023b610b3e565b6040518082815260200191505060405180910390f35b34801561025d57600080fd5b506102a06004803603602081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b44565b6040518082815260200191505060405180910390f35b3480156102c257600080fd5b506102cb610c43565b6040518082815260200191505060405180910390f35b3480156102ed57600080fd5b506102f6610c49565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034457600080fd5b5061034d610c6f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039b57600080fd5b506103a4610c95565b604051808215151515815260200191505060405180910390f35b3480156103ca57600080fd5b506103d3610ca7565b6040518082815260200191505060405180910390f35b3480156103f557600080fd5b506103fe610cad565b6040518082815260200191505060405180910390f35b34801561042057600080fd5b50610429610cb3565b6040518082600181111561043957fe5b60ff16815260200191505060405180910390f35b34801561045957600080fd5b50610462610cc6565b6040518082815260200191505060405180910390f35b34801561048457600080fd5b5061048d610ccc565b6040518082815260200191505060405180910390f35b6104e5600480360360208110156104b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104e7565b005b60003490506000809054906101000a900460ff161561050557600080fd5b61050f8282610cd2565b600061052660015483610db890919063ffffffff16565b90506000600181111561053557fe5b600360149054906101000a900460ff16600181111561055057fe5b14801561055e575060095481115b1561056857600080fd5b60018081111561057457fe5b600360149054906101000a900460ff16600181111561058f57fe5b14801561059d5750600a5481115b156105a757600080fd5b60006105b283610e85565b90506105be8482610ea3565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188584604051808381526020018281526020019250505060405180910390a3610633610eb1565b6000600181111561064057fe5b600360149054906101000a900460ff16600181111561065b57fe5b14156106b05761067683600754610faa90919063ffffffff16565b6007819055506106918260095461103490919063ffffffff16565b600981905550600060095414156106ab576106aa610a5a565b5b610737565b6001808111156106bc57fe5b600360149054906101000a900460ff1660018111156106d757fe5b1415610736576106f283600854610faa90919063ffffffff16565b60088190555061070d82600a5461103490919063ffffffff16565b600a819055506000600a5414801561072757506000600954145b156107355761073461073d565b5b5b5b50505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561079957600080fd5b6000809054906101000a900460ff161580156107d957506001808111156107bc57fe5b600360149054906101000a900460ff1660018111156107d757fe5b145b1515610873576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f53686f756c642062652061742049434f20537461676520746f2046696e616c6981526020017f7a65207468652043726f776473616c650000000000000000000000000000000081525060400191505060405180910390fd5b600061088c600a54600954610faa90919063ffffffff16565b905060008111156109cb576000600a819055506000600981905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561098e57600080fd5b505af11580156109a2573d6000803e3d6000fd5b505050506040513d60208110156109b857600080fd5b8101908080519060200190929190505050505b7feadd714b167a6d432dd3d920fddab9ad589f3ccb20b9aa2c0850c7b56b43a4426109f4610b1a565b82604051808381526020018281526020019250505060405180910390a160016000806101000a81548160ff02191690831515021790555050565b60015481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab657600080fd5b60006001811115610ac357fe5b600360149054906101000a900460ff166001811115610ade57fe5b141515610aea57600080fd5b6001600360146101000a81548160ff02191690836001811115610b0957fe5b0217905550610b18601461107e565b565b6000610b33600854600754610faa90919063ffffffff16565b905090565b600a5481565b60045481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c0157600080fd5b505afa158015610c15573d6000803e3d6000fd5b505050506040513d6020811015610c2b57600080fd5b81019080805190602001909291905050509050919050565b60095481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900460ff1681565b60075481565b60055481565b600360149054906101000a900460ff1681565b60085481565b60065481565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610d0e57600080fd5b67016345785d8a00008110151515610db4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4d696e696d756d20616d6f756e7420746f20696e766573743a20302e3120455481526020017f480000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050565b600080831415610dcb5760009050610e7f565b60008284029050828482811515610dde57fe5b04141515610e7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b6000610e9c60015483610db890919063ffffffff16565b9050919050565b610ead8282611088565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610f19573d6000803e3d6000fd5b507f47af8c4076c54a76f613f82e4296a2c5e2167698d368157a82e62398393e345e60405180806020018281038252602b8152602001807f466f7277617264696e672066756e647320746f204554482042656e656669636981526020017f617279204163636f756e7400000000000000000000000000000000000000000081525060400191505060405180910390a1565b600080828401905083811015151561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061107683836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061118d565b905092915050565b8060018190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561114d57600080fd5b505af1158015611161573d6000803e3d6000fd5b505050506040513d602081101561117757600080fd5b8101908080519060200190929190505050505050565b6000838311158290151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112015780820151818401526020810190506111e6565b50505050905090810190601f16801561122e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fea165627a7a7230582053381d7d398eb9a69a8b6f0fc8ba9bf3c075f1aafcb1e4671a468bee0c3a4b83002960806040523480156200001157600080fd5b5060405160208062001a58833981018060405260208110156200003357600080fd5b81019080805190602001909291905050506000611f4090506000610fa09050620000978362000082670de0b6b3a764000084620000e56401000000000262001530179091906401000000009004565b620001b6640100000000026401000000009004565b620000dc33620000c7670de0b6b3a764000085620000e56401000000000262001530179091906401000000009004565b620001b6640100000000026401000000009004565b5050506200041f565b600080831415620000fa5760009050620001b0565b600082840290508284828115156200010e57fe5b04141515620001ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200025c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620002818160025462000394640100000000026200121b179091906401000000009004565b600281905550620002e8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000394640100000000026200121b179091906401000000009004565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015151562000415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611629806200042f6000396000f3fe6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100ca578063095ea7b31461015a57806318160ddd146101cd57806323b872dd146101f8578063313ce5671461028b57806339509351146102bc57806342966c681461032f57806370a082311461036a57806379cc6790146103cf57806395d89b411461042a578063a457c2d7146104ba578063a9059cbb1461052d578063dd62ed3e146105a0575b600080fd5b3480156100d657600080fd5b506100df610625565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011f578082015181840152602081019050610104565b50505050905090810190601f16801561014c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016657600080fd5b506101b36004803603604081101561017d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061065e565b604051808215151515815260200191505060405180910390f35b3480156101d957600080fd5b506101e261067c565b6040518082815260200191505060405180910390f35b34801561020457600080fd5b506102716004803603606081101561021b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610686565b604051808215151515815260200191505060405180910390f35b34801561029757600080fd5b506102a06107a3565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102c857600080fd5b50610315600480360360408110156102df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107a8565b604051808215151515815260200191505060405180910390f35b34801561033b57600080fd5b506103686004803603602081101561035257600080fd5b810190808035906020019092919050505061085b565b005b34801561037657600080fd5b506103b96004803603602081101561038d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061086f565b6040518082815260200191505060405180910390f35b3480156103db57600080fd5b50610428600480360360408110156103f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108b7565b005b34801561043657600080fd5b5061043f61095d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047f578082015181840152602081019050610464565b50505050905090810190601f1680156104ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104c657600080fd5b50610513600480360360408110156104dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610996565b604051808215151515815260200191505060405180910390f35b34801561053957600080fd5b506105866004803603604081101561055057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610aa7565b604051808215151515815260200191505060405180910390f35b3480156105ac57600080fd5b5061060f600480360360408110156105c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ac5565b6040518082815260200191505060405180910390f35b6040805190810160405280600c81526020017f5942414f2e46696e616e6365000000000000000000000000000000000000000081525081565b600061067261066b610b4c565b8484610b54565b6001905092915050565b6000600254905090565b6000610693848484610dd5565b6107988461069f610b4c565b61079385606060405190810160405280602881526020017f45524332303a207472616e7366657220616d6f756e742065786365656473206181526020017f6c6c6f77616e6365000000000000000000000000000000000000000000000000815250600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610749610b4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111599092919063ffffffff16565b610b54565b600190509392505050565b601281565b60006108516107b5610b4c565b8461084c85600160006107c6610b4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121b90919063ffffffff16565b610b54565b6001905092915050565b61086c610866610b4c565b826112a5565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061093a82606060405190810160405280602481526020017f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7781526020017f616e63650000000000000000000000000000000000000000000000000000000081525061092b86610926610b4c565b610ac5565b6111599092919063ffffffff16565b905061094e83610948610b4c565b83610b54565b61095883836112a5565b505050565b6040805190810160405280600481526020017f5942414f0000000000000000000000000000000000000000000000000000000081525081565b6000610a9d6109a3610b4c565b84610a9885606060405190810160405280602581526020017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781526020017f207a65726f00000000000000000000000000000000000000000000000000000081525060016000610a11610b4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111599092919063ffffffff16565b610b54565b6001905092915050565b6000610abb610ab4610b4c565b8484610dd5565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610cea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f45524332303a20617070726f766520746f20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ea0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f45524332303a207472616e736665722066726f6d20746865207a65726f20616481526020017f647265737300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610f6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61101a81606060405190810160405280602681526020017f45524332303a207472616e7366657220616d6f756e742065786365656473206281526020017f616c616e636500000000000000000000000000000000000000000000000000008152506000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111599092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110ad816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582901515611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111cd5780820151818401526020810190506111b2565b50505050905090810190601f1680156111fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015151561129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f45524332303a206275726e2066726f6d20746865207a65726f2061646472657381526020017f730000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61141f81606060405190810160405280602281526020017f45524332303a206275726e20616d6f756e7420657863656564732062616c616e81526020017f63650000000000000000000000000000000000000000000000000000000000008152506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111599092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611476816002546114e690919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061152883836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611159565b905092915050565b60008083141561154357600090506115f7565b6000828402905082848281151561155657fe5b041415156115f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b9291505056fea165627a7a723058200299a071098ad9cc7707b271b49165f1ba88e7d5c8505cc9c3cd3b9c58a746fa0029000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000197dadc7db90c49cdb3cdeadb57a862ab5d822aa
Deployed Bytecode
0x6080604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632095f2d4146101205780632c4e722e1461013757806340110a60146101625780634ad23303146101b957806353f4db01146101d05780635fac726b146101fb57806360219c7b1461022657806370a08231146102515780637fe70f47146102b65780638da5cb5b146102e15780639b596b9c14610338578063a4fd6f561461038f578063abe8014a146103be578063c02aaea1146103e9578063c040e6b814610414578063d7db23511461044d578063e2be328d14610478578063f5751698146104a3575b6000809054906101000a900460ff161561011557600080fd5b61011e336104e7565b005b34801561012c57600080fd5b5061013561073d565b005b34801561014357600080fd5b5061014c610a2e565b6040518082815260200191505060405180910390f35b34801561016e57600080fd5b50610177610a34565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c557600080fd5b506101ce610a5a565b005b3480156101dc57600080fd5b506101e5610b1a565b6040518082815260200191505060405180910390f35b34801561020757600080fd5b50610210610b38565b6040518082815260200191505060405180910390f35b34801561023257600080fd5b5061023b610b3e565b6040518082815260200191505060405180910390f35b34801561025d57600080fd5b506102a06004803603602081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b44565b6040518082815260200191505060405180910390f35b3480156102c257600080fd5b506102cb610c43565b6040518082815260200191505060405180910390f35b3480156102ed57600080fd5b506102f6610c49565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034457600080fd5b5061034d610c6f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039b57600080fd5b506103a4610c95565b604051808215151515815260200191505060405180910390f35b3480156103ca57600080fd5b506103d3610ca7565b6040518082815260200191505060405180910390f35b3480156103f557600080fd5b506103fe610cad565b6040518082815260200191505060405180910390f35b34801561042057600080fd5b50610429610cb3565b6040518082600181111561043957fe5b60ff16815260200191505060405180910390f35b34801561045957600080fd5b50610462610cc6565b6040518082815260200191505060405180910390f35b34801561048457600080fd5b5061048d610ccc565b6040518082815260200191505060405180910390f35b6104e5600480360360208110156104b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104e7565b005b60003490506000809054906101000a900460ff161561050557600080fd5b61050f8282610cd2565b600061052660015483610db890919063ffffffff16565b90506000600181111561053557fe5b600360149054906101000a900460ff16600181111561055057fe5b14801561055e575060095481115b1561056857600080fd5b60018081111561057457fe5b600360149054906101000a900460ff16600181111561058f57fe5b14801561059d5750600a5481115b156105a757600080fd5b60006105b283610e85565b90506105be8482610ea3565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188584604051808381526020018281526020019250505060405180910390a3610633610eb1565b6000600181111561064057fe5b600360149054906101000a900460ff16600181111561065b57fe5b14156106b05761067683600754610faa90919063ffffffff16565b6007819055506106918260095461103490919063ffffffff16565b600981905550600060095414156106ab576106aa610a5a565b5b610737565b6001808111156106bc57fe5b600360149054906101000a900460ff1660018111156106d757fe5b1415610736576106f283600854610faa90919063ffffffff16565b60088190555061070d82600a5461103490919063ffffffff16565b600a819055506000600a5414801561072757506000600954145b156107355761073461073d565b5b5b5b50505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561079957600080fd5b6000809054906101000a900460ff161580156107d957506001808111156107bc57fe5b600360149054906101000a900460ff1660018111156107d757fe5b145b1515610873576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f53686f756c642062652061742049434f20537461676520746f2046696e616c6981526020017f7a65207468652043726f776473616c650000000000000000000000000000000081525060400191505060405180910390fd5b600061088c600a54600954610faa90919063ffffffff16565b905060008111156109cb576000600a819055506000600981905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561098e57600080fd5b505af11580156109a2573d6000803e3d6000fd5b505050506040513d60208110156109b857600080fd5b8101908080519060200190929190505050505b7feadd714b167a6d432dd3d920fddab9ad589f3ccb20b9aa2c0850c7b56b43a4426109f4610b1a565b82604051808381526020018281526020019250505060405180910390a160016000806101000a81548160ff02191690831515021790555050565b60015481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ab657600080fd5b60006001811115610ac357fe5b600360149054906101000a900460ff166001811115610ade57fe5b141515610aea57600080fd5b6001600360146101000a81548160ff02191690836001811115610b0957fe5b0217905550610b18601461107e565b565b6000610b33600854600754610faa90919063ffffffff16565b905090565b600a5481565b60045481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c0157600080fd5b505afa158015610c15573d6000803e3d6000fd5b505050506040513d6020811015610c2b57600080fd5b81019080805190602001909291905050509050919050565b60095481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900460ff1681565b60075481565b60055481565b600360149054906101000a900460ff1681565b60085481565b60065481565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610d0e57600080fd5b67016345785d8a00008110151515610db4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4d696e696d756d20616d6f756e7420746f20696e766573743a20302e3120455481526020017f480000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050565b600080831415610dcb5760009050610e7f565b60008284029050828482811515610dde57fe5b04141515610e7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b6000610e9c60015483610db890919063ffffffff16565b9050919050565b610ead8282611088565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610f19573d6000803e3d6000fd5b507f47af8c4076c54a76f613f82e4296a2c5e2167698d368157a82e62398393e345e60405180806020018281038252602b8152602001807f466f7277617264696e672066756e647320746f204554482042656e656669636981526020017f617279204163636f756e7400000000000000000000000000000000000000000081525060400191505060405180910390a1565b600080828401905083811015151561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061107683836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061118d565b905092915050565b8060018190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561114d57600080fd5b505af1158015611161573d6000803e3d6000fd5b505050506040513d602081101561117757600080fd5b8101908080519060200190929190505050505050565b6000838311158290151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112015780820151818401526020810190506111e6565b50505050905090810190601f16801561122e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fea165627a7a7230582053381d7d398eb9a69a8b6f0fc8ba9bf3c075f1aafcb1e4671a468bee0c3a4b830029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000197dadc7db90c49cdb3cdeadb57a862ab5d822aa
-----Decoded View---------------
Arg [0] : initialRate (uint256): 30
Arg [1] : wallet (address): 0x197dAdC7db90C49CDB3CdEAdb57a862Ab5D822AA
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [1] : 000000000000000000000000197dadc7db90c49cdb3cdeadb57a862ab5d822aa
Deployed Bytecode Sourcemap
56:8063:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5028:7;;;;;;;;;;;5025:95;;;5049:8;;;5025:95;5128:24;5141:10;5128:12;:24::i;:::-;56:8063;7262:508;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7262:508:0;;;;;;672:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;672:19:0;;;;;;;;;;;;;;;;;;;;;;;719:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;719:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:161;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2539:161:0;;;;;;7975:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7975:135:0;;;;;;;;;;;;;;;;;;;;;;;1717:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1717:55:0;;;;;;;;;;;;;;;;;;;;;;;1054:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1054:47:0;;;;;;;;;;;;;;;;;;;;;;;7820:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7820:143:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7820:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1654:58;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1654:58:0;;;;;;;;;;;;;;;;;;;;;;;1878:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1878:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;769:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;769:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;541:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;541:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1460:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:41:0;;;;;;;;;;;;;;;;;;;;;;;1154:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1154:59:0;;;;;;;;;;;;;;;;;;;;;;;890:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;890:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1506:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1506:38:0;;;;;;;;;;;;;;;;;;;;;;;1258:56;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1258:56:0;;;;;;;;;;;;;;;;;;;;;;;5166:1971;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5166:1971:0;;;;;;;;;;;;;;;;;;;;;;;5234:17;5254:9;5234:29;;5275:7;;;;;;;;;;;5272:40;;;5294:8;;;5272:40;5320:45;5341:12;5355:9;5320:20;:45::i;:::-;5374:27;5404:19;5418:4;;5404:9;:13;;:19;;;;:::i;:::-;5374:49;;5446:21;5437:30;;;;;;;;:5;;;;;;;;;;;:30;;;;;;;;;5436:89;;;;;5495:29;;5473:19;:51;5436:89;5432:497;;;5539:8;;;5432:497;5712:18;5703:27;;;;;;;;:5;;;;;;;;;;;:27;;;;;;;;;5702:83;;;;;5758:26;;5736:19;:48;5702:83;5698:231;;;5798:8;;;5698:231;6005:14;6022:26;6038:9;6022:15;:26::i;:::-;6005:43;;6059:38;6076:12;6090:6;6059:16;:38::i;:::-;6162:12;6113:113;;6139:10;6113:113;;;6187:9;6209:6;6113:113;;;;;;;;;;;;;;;;;;;;;;;;6245:15;:13;:15::i;:::-;6290:21;6281:30;;;;;;;;:5;;;;;;;;;;;:30;;;;;;;;;6277:855;;;6355:41;6386:9;6355:26;;:30;;:41;;;;:::i;:::-;6326:26;:70;;;;6441:54;6475:19;6441:29;;:33;;:54;;;;:::i;:::-;6409:29;:86;;;;6544:1;6511:29;;:34;6508:178;;;6654:18;:16;:18::i;:::-;6508:178;6277:855;;;6721:18;6712:27;;;;;;;;:5;;;;;;;;;;;:27;;;;;;;;;6708:424;;;6780:38;6808:9;6780:23;;:27;;:38;;;;:::i;:::-;6754:23;:64;;;;6860:51;6891:19;6860:26;;:30;;:51;;;;:::i;:::-;6831:26;:80;;;;6957:1;6927:26;;:31;:69;;;;;6995:1;6962:29;;:34;6927:69;6924:199;;;7095:14;:12;:14::i;:::-;6924:199;6708:424;6277:855;5166:1971;;;;:::o;7262:508::-;1964:5;;;;;;;;;;;1950:19;;:10;:19;;;1941:29;;;;;;;;7321:7;;;;;;;;;;;7320:8;:39;;;;;7341:18;7332:27;;;;;;;;:5;;;;;;;;;;;:27;;;;;;;;;7320:39;7312:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7420:20;7443:61;7477:26;;7443:29;;:33;;:61;;;;:::i;:::-;7420:84;;7532:1;7517:12;:16;7513:179;;;7577:1;7548:26;:30;;;;7623:1;7591:29;:33;;;;7637:16;;;;;;;;;;;:25;;;7663:5;;;;;;;;;;;7669:12;7637:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7637:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7637:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7637:45:0;;;;;;;;;;;;;;;;;7513:179;7705:36;7711:16;:14;:16::i;:::-;7728:12;7705:36;;;;;;;;;;;;;;;;;;;;;;;;7760:4;7750:7;;:14;;;;;;;;;;;;;;;;;;1981:1;7262:508::o;672:19::-;;;;:::o;719:44::-;;;;;;;;;;;;;:::o;2539:161::-;1964:5;;;;;;;;;;;1950:19;;:10;:19;;;1941:29;;;;;;;;2610:21;2601:30;;;;;;;;:5;;;;;;;;;;;:30;;;;;;;;;2593:39;;;;;;;;2649:18;2641:5;;:26;;;;;;;;;;;;;;;;;;;;;;;;2676:18;2691:2;2676:14;:18::i;:::-;2539:161::o;7975:135::-;8021:7;8047:55;8078:23;;8047:26;;:30;;:55;;;;:::i;:::-;8040:62;;7975:135;:::o;1717:55::-;;;;:::o;1054:47::-;;;;:::o;7820:143::-;7882:15;7916:16;;;;;;;;;;;:26;;;7943:11;7916:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7916:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7916:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7916:39:0;;;;;;;;;;;;;;;;7909:46;;7820:143;;;:::o;1654:58::-;;;;:::o;1878:20::-;;;;;;;;;;;;;:::o;769:37::-;;;;;;;;;;;;;:::o;541:27::-;;;;;;;;;;;;;:::o;1460:41::-;;;;:::o;1154:59::-;;;;:::o;890:27::-;;;;;;;;;;;;;:::o;1506:38::-;;;;:::o;1258:56::-;;;;:::o;3213:231::-;3361:1;3337:26;;:12;:26;;;;3329:35;;;;;;;;3393:8;3379:10;:22;;3371:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3213:231;;:::o;4806:471:1:-;4864:7;5114:1;5109;:6;5105:47;;;5139:1;5132:8;;;;5105:47;5164:9;5180:1;5176;:5;5164:17;;5209:1;5204;5200;:5;;;;;;;;:10;5192:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5268:1;5261:8;;;4806:471;;;;;:::o;4547:125:0:-;4620:7;4646:20;4661:4;;4646:10;:14;;:20;;;;:::i;:::-;4639:27;;4547:125;;;:::o;4145:157::-;4254:42;4269:12;4283;4254:14;:42::i;:::-;4145:157;;:::o;4756:161::-;4797:21;;;;;;;;;;;:30;;:41;4828:9;4797:41;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4797:41:0;4850:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4756:161::o;3476:181:1:-;3534:7;3554:9;3570:1;3566;:5;3554:17;;3595:1;3590;:6;;3582:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3648:1;3641:8;;;3476:181;;;;:::o;3932:136::-;3990:7;4017:43;4021:1;4024;4017:43;;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4010:50;;3932:136;;;;:::o;2736:95:0:-;2799:5;2792:4;:12;;;;2736:95;:::o;3725:166::-;3832:16;;;;;;;;;;;:25;;;3858:12;3872;3832:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3832:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3832:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3832:53:0;;;;;;;;;;;;;;;;;3725:166;;:::o;4363:192:1:-;4449:7;4482:1;4477;:6;;4485:12;4469:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4469:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4509:9;4525:1;4521;:5;4509:17;;4546:1;4539:8;;;4363:192;;;;;:::o
Swarm Source
bzzr://0299a071098ad9cc7707b271b49165f1ba88e7d5c8505cc9c3cd3b9c58a746fa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.