ETH Price: $2,617.29 (+1.24%)
Gas: 1 Gwei

Contract

0x059CFc571225Bc618d22a7cfD7b107D9a5E892F9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60806040111694682020-11-01 6:14:141378 days ago1604211254IN
 Create: TricKoreTreat
0 ETH0.0544929217

Advanced mode:
Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TricKoreTreat

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-01
*/

// --------------------------------
// Smart Contract for TricKoreTreat
// Twitter: https://twitter.com/trickoretreatfinance
// Telegram: https://t.me/trickoretreatfinance
// Website: https://trickoretreat.finance
// Email: [email protected]
// Medium: https://trickoretreatfinance.medium.com
// --------------------------------

pragma solidity ^0.5.17;

contract Context
{
    constructor() internal {}

    function _msgSender() internal view returns (address payable) 
	{
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) 
	{
        this;
        return msg.data;
    }
}

contract Ownable is Context 
{
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() internal 
	{
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) 
	{
        return _owner;
    }

    modifier onlyOwner() 
	{
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    function isOwner() public view returns (bool) 
	{
        return _msgSender() == _owner;
    }

    function renounceOwnership() public onlyOwner 
	{
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner 
	{
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal 
	{
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// --------------------------------
// Safe Math Library
// Added ceiling function
// --------------------------------
library SafeMath 
{
    function add(uint256 a, uint256 b) internal pure returns (uint256) 
	{
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
		
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) 
	{
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) 
	{
        require(b <= a, errorMessage);
        uint256 c = a - b;
		
        return c;
    }

	// Gas Optimization
    function mul(uint256 a, uint256 b) internal pure returns (uint256) 
	{
        if (a == 0) 
		{
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) 
	{
        return div(a, b, "SafeMath: division by 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;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) 
	{
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) 
	{
        require(b != 0, errorMessage);
        return a % b;
    }
    
    function ceil(uint256 a, uint256 m) internal pure returns (uint256) 
	{
		uint256 c = add(a,m);
		uint256 d = sub(c,1);
		return mul(div(d,m),m);
	}
}

interface IERC20 
{
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);
		
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ERC20Detailed is IERC20 
{
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(string memory name, string memory symbol, uint8 decimals) public 
	{
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    function name() public view returns (string memory) 
	{
        return _name;
    }

    function symbol() public view returns (string memory) 
	{
        return _symbol;
    }

    function decimals() public view returns (uint8) 
	{
        return _decimals;
    }
}

// --------------------------------
// Ensure enough gas
// --------------------------------
contract GasPump 
{
    bytes32 private stub;
    uint256 private constant target = 10000;

    modifier requestGas() 
	{
        if (tx.gasprice == 0 || gasleft() > block.gaslimit) 
		{
            _;
            uint256 startgas = gasleft();
            while (startgas - gasleft() < target) 
			{
                // Burn gas
                stub = keccak256(abi.encodePacked(stub));
            }
        } 
		
		else 
		{
            _;
        }
    }
}

// --------------------------------
// TricKoreTreat Finance
// --------------------------------
contract TricKoreTreat is Context, Ownable, ERC20Detailed, GasPump 
{
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public whitelistFrom;
    mapping(address => bool) public whitelistTo;
	
	// Token Details
	string constant tokenName = "TricKoreTreat";
	string constant tokenSymbol = "TKT";
	uint8  constant tokenDecimals = 18;
    uint256 private _totalSupply = 666 * (10 ** 18);
	
	// For %
	uint256 public basePercent = 100;
	uint256 public basePercentTop = 2;
	uint256 public basePercentBot = 3;
	uint256 public basePercentEnd = 10;
	
    bytes32 private lastHash;
	
	// Whitelist
    event WhitelistFrom(address _addr, bool _whitelisted);
    event WhitelistTo(address _addr, bool _whitelisted);
	
	// Events
	event Normal(address indexed sender, address indexed recipient, uint256 value);
    event Trick(address indexed sender, address indexed recipient, uint256 value);
    event Treat(address indexed sender, address indexed recipient, uint256 value);
	
	constructor() public ERC20Detailed(tokenName, tokenSymbol, tokenDecimals) 
	{
		_mint(msg.sender, _totalSupply);
	}

    function totalSupply() public view returns (uint256) 
	{
        return _totalSupply;
    }

    function balanceOf(address account) public view returns (uint256) 
	{
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public returns (bool) 
	{
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public returns (bool) 
	{
        _approve(_msgSender(), spender, amount);
        return true;
    }

    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;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        returns (bool)
    {
        _approve(_msgSender(), spender,
		_allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function burn(uint256 amount) public 
	{
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) public 
	{
        _burnFrom(account, amount);
    }
	
	// --------------------------------
	// 6.66% Trick/Treat on each transaction
	// --------------------------------
	function findSixPercent(uint256 value) public view returns (uint256)  
	{
		uint256 roundValue = value.ceil(basePercent);
		uint256 onePercent = roundValue.mul(basePercent).mul(basePercentTop).div(basePercentBot).div(basePercentEnd);
		return onePercent;
	}
	
	// Deflationary Token Burn 1%
    function findOnePercent(uint256 value) public view returns (uint256)  
    {
        uint256 roundValue = value.ceil(basePercent);
        uint256 onePercent = roundValue.mul(basePercent).div(10000);
        return onePercent;
    }

    function setWhitelistedTo(address _addr, bool _whitelisted)
        external
        onlyOwner
    {
        emit WhitelistTo(_addr, _whitelisted);
        whitelistTo[_addr] = _whitelisted;
    }

    function setWhitelistedFrom(address _addr, bool _whitelisted)
        external
        onlyOwner
    {
        emit WhitelistFrom(_addr, _whitelisted);
        whitelistFrom[_addr] = _whitelisted;
    }

    function _isWhitelisted(address _from, address _to)
        internal
        view
        returns (bool)
    {
        return whitelistFrom[_from] || whitelistTo[_to];
    }
	
	// --------------------------------
	// 50% Trick/Treat Chance
	// --------------------------------
	function _trickortreat() internal returns (uint256) 
	{
		bytes32 result = keccak256(
		abi.encodePacked(block.number, lastHash, gasleft()));
		lastHash = result;
		return uint256(result) % 2 == 0 ? 1 : 0;
	}
	
	// Triggers on every transfer
    function _transfer(address sender, address recipient, uint256 amount) internal requestGas 
	{
		// Gets balance of sender, makes sure value being sent is <= their balance
		//require(amount <= _balances[sender]);
		//require(amount <= _allowances[sender][_msgSender()]);

		// Checks that it's not the burn address
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

		// Deployer Transaction (So that transactions made my deployer don't get tricked / treated)
        if (_isWhitelisted(sender, recipient))
        {
            // Subtract from sender balance
            _balances[sender] = _balances[sender].sub(amount);
            
            // Add to recipient balance
			_balances[recipient] = _balances[recipient].add(amount);
			
			emit Normal(sender, recipient, amount);
            emit Transfer(sender, recipient, amount);
        }
		
		// Trick Transaction
		else if (!_isWhitelisted(sender, recipient) && _trickortreat() == 1) 
		{	    
		    // Subtract from sender balance
			_balances[sender] = _balances[sender].sub(amount);
			
			// Get 1% of transacted tokens
			uint256 tokensDeflationary = findOnePercent(amount);
		    
			// Get 6.66% of transacted tokens
			uint256 tokensToBurn = findSixPercent(amount);
			
			// Transfer amount - 6.66% of transacted tokens - 1% of transacted tokens
			uint256 tokensToTransfer = amount.sub(tokensToBurn).sub(tokensDeflationary);
			
			// Add to recipient balance
			_balances[recipient] = _balances[recipient].add(tokensToTransfer);

            // Subtract tricked amount from supply + deflationary burn
			_totalSupply = _totalSupply.sub(tokensToBurn).sub(tokensDeflationary);

			emit Trick(sender, recipient, amount);
			emit Transfer(sender, recipient, tokensToTransfer);
			emit Transfer(sender, address(0), tokensDeflationary);
			emit Transfer(sender, address(0), tokensToBurn);
        }

        // Treat transaction
		else 
		{
		   	// Subtract from sender balance
			_balances[sender] = _balances[sender].sub(amount);
			
			// Get 1% of transacted tokens
			uint256 tokensDeflationary = findOnePercent(amount);
		    
			// Get 6.66% of transacted tokens
			uint256 tokensToTreat = findSixPercent(amount);
			
			// Mint 6.66% of tokens to lucky user
			_mint(sender, tokensToTreat);
			
			// Transfer same amount - 1% deflationary tokens but user now has 6.66% extra tokens in their wallet
			uint256 tokensToTransfer = amount.sub(tokensDeflationary);
			
			// Add to recipient balance
			_balances[recipient] = _balances[recipient].add(tokensToTransfer);
			
			// Add treat amount to supply
			_totalSupply = _totalSupply.add(tokensToTreat);
			
			// Subtract deflationary burn from supply
			_totalSupply = _totalSupply.sub(tokensDeflationary);
			
			emit Treat(sender, recipient, amount);
			emit Transfer(address(0), recipient, tokensToTreat);
			emit Transfer(sender, address(0), tokensDeflationary);
			emit Transfer(sender, recipient, amount);
		}
    }

    function _mint(address account, uint256 amount) internal 
	{	
		require(amount != 0);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    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);
    }

    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);
    }

    function _burnFrom(address account, uint256 amount) internal 
	{
        _burn(account, amount);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Normal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Treat","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Trick","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basePercentBot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basePercentEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basePercentTop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"findOnePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"findSixPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405268241a9b4f617a2800006009556064600a556002600b556003600c55600a600d553480156200003257600080fd5b506040518060400160405280600d81526020017f547269634b6f72655472656174000000000000000000000000000000000000008152506040518060400160405280600381526020017f544b54000000000000000000000000000000000000000000000000000000000081525060126000620000b3620001bb60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082600190805190602001906200016992919062000361565b5081600290805190602001906200018292919062000361565b5080600360006101000a81548160ff021916908360ff160217905550505050620001b533600954620001c360201b60201c565b62000410565b600033905090565b6000811415620001d257600080fd5b6200022b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002d860201b62002ab81790919060201c565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008082840190508381101562000357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003a457805160ff1916838001178555620003d5565b82800160010185558215620003d5579182015b82811115620003d4578251825591602001919060010190620003b7565b5b509050620003e49190620003e8565b5090565b6200040d91905b8082111562000409576000816000905550600101620003ef565b5090565b90565b61350b80620004206000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806379cc6790116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e14610844578063df2e7797146108bc578063f2fde38b146108da578063ff12bbf41461091e576101a9565b8063a9059cbb146107a2578063c5ac0ded14610808578063d92dfe9014610826576101a9565b806395d89b41116100d357806395d89b4114610627578063a457c2d7146106aa578063a486309d14610710578063a6a6860614610760576101a9565b806379cc67901461056d5780638da5cb5b146105bb5780638f32d59b14610605576101a9565b8063395093511161016657806343684b211161014057806343684b211461049157806370a08231146104ed578063715018a614610545578063738d6c5c1461054f576101a9565b806339509351146103bb5780633ecd074f1461042157806342966c6814610463576101a9565b806306fdde03146101ae578063095ea7b31461023157806316b627d11461029757806318160ddd146102f357806323b872dd14610311578063313ce56714610397575b600080fd5b6101b661096e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a10565b604051808215151515815260200191505060405180910390f35b6102d9600480360360208110156102ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a2e565b604051808215151515815260200191505060405180910390f35b6102fb610a4e565b6040518082815260200191505060405180910390f35b61037d6004803603606081101561032757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a58565b604051808215151515815260200191505060405180910390f35b61039f610b31565b604051808260ff1660ff16815260200191505060405180910390f35b610407600480360360408110156103d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b48565b604051808215151515815260200191505060405180910390f35b61044d6004803603602081101561043757600080fd5b8101908080359060200190929190505050610bfb565b6040518082815260200191505060405180910390f35b61048f6004803603602081101561047957600080fd5b8101908080359060200190929190505050610c74565b005b6104d3600480360360208110156104a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c88565b604051808215151515815260200191505060405180910390f35b61052f6004803603602081101561050357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ca8565b6040518082815260200191505060405180910390f35b61054d610cf1565b005b610557610e2a565b6040518082815260200191505060405180910390f35b6105b96004803603604081101561058357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e30565b005b6105c3610e3e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61060d610e67565b604051808215151515815260200191505060405180910390f35b61062f610ec5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066f578082015181840152602081019050610654565b50505050905090810190601f16801561069c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106f6600480360360408110156106c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f67565b604051808215151515815260200191505060405180910390f35b61075e6004803603604081101561072657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611034565b005b61078c6004803603602081101561077657600080fd5b8101908080359060200190929190505050611178565b6040518082815260200191505060405180910390f35b6107ee600480360360408110156107b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111c9565b604051808215151515815260200191505060405180910390f35b6108106111e7565b6040518082815260200191505060405180910390f35b61082e6111ed565b6040518082815260200191505060405180910390f35b6108a66004803603604081101561085a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111f3565b6040518082815260200191505060405180910390f35b6108c461127a565b6040518082815260200191505060405180910390f35b61091c600480360360208110156108f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611280565b005b61096c6004803603604081101561093457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611306565b005b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a065780601f106109db57610100808354040283529160200191610a06565b820191906000526020600020905b8154815290600101906020018083116109e957829003601f168201915b5050505050905090565b6000610a24610a1d61144a565b8484611452565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600954905090565b6000610a65848484611649565b610b2684610a7161144a565b610b21856040518060600160405280602881526020016133fc60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ad761144a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f89092919063ffffffff16565b611452565b600190509392505050565b6000600360009054906101000a900460ff16905090565b6000610bf1610b5561144a565b84610bec8560066000610b6661144a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b611452565b6001905092915050565b600080610c13600a5484612b4090919063ffffffff16565b90506000610c68600d54610c5a600c54610c4c600b54610c3e600a5489612b7b90919063ffffffff16565b612b7b90919063ffffffff16565b612c0190919063ffffffff16565b612c0190919063ffffffff16565b90508092505050919050565b610c85610c7f61144a565b82612c4b565b50565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cf9610e67565b610d6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d5481565b610e3a8282612e05565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ea961144a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f5d5780601f10610f3257610100808354040283529160200191610f5d565b820191906000526020600020905b815481529060010190602001808311610f4057829003601f168201915b5050505050905090565b600061102a610f7461144a565b84611025856040518060600160405280602581526020016134b26025913960066000610f9e61144a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f89092919063ffffffff16565b611452565b6001905092915050565b61103c610e67565b6110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080611190600a5484612b4090919063ffffffff16565b905060006111bd6127106111af600a5485612b7b90919063ffffffff16565b612c0190919063ffffffff16565b90508092505050919050565b60006111dd6111d661144a565b8484611649565b6001905092915050565b600a5481565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b611288610e67565b6112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61130381612ed4565b50565b61130e610e67565b611380576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061348e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561155e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806133b96022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60003a14806116575750455a115b1561204d57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806134696025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061334e6023913960400191505060405180910390fd5b6117728383613018565b15611970576117c981600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061185e81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2fb983926eb752d15d651ba5b013e68a418a80c16c889d45bdb99d1b4f045b4d836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3612001565b61197a8383613018565b15801561198e5750600161198c61310d565b145b15611ccb576119e581600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611a3382611178565b90506000611a4083610bfb565b90506000611a6983611a5b84876130c390919063ffffffff16565b6130c390919063ffffffff16565b9050611abd81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b2783611b19846009546130c390919063ffffffff16565b6130c390919063ffffffff16565b6009819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f269d952403220006258f3e1a83b824f4dda43480e34b995c342b56136f6d0c2d866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050612000565b611d1d81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611d6b82611178565b90506000611d7883610bfb565b9050611d84858261317a565b6000611d9983856130c390919063ffffffff16565b9050611ded81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e4582600954612ab890919063ffffffff16565b600981905550611e60836009546130c390919063ffffffff16565b6009819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8a8016d24c64c84e7cbad0a909babb37f67ae9e82723f4c38a7666786358e7c1866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505b5b60005a90505b6127105a82031015612047576004546040516020018082815260200191505060405160208183030381529060405280519060200120600481905550612007565b506129f3565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806134696025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061334e6023913960400191505060405180910390fd5b6121638383613018565b15612361576121ba81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061224f81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2fb983926eb752d15d651ba5b013e68a418a80c16c889d45bdb99d1b4f045b4d836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36129f2565b61236b8383613018565b15801561237f5750600161237d61310d565b145b156126bc576123d681600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061242482611178565b9050600061243183610bfb565b9050600061245a8361244c84876130c390919063ffffffff16565b6130c390919063ffffffff16565b90506124ae81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125188361250a846009546130c390919063ffffffff16565b6130c390919063ffffffff16565b6009819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f269d952403220006258f3e1a83b824f4dda43480e34b995c342b56136f6d0c2d866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050506129f1565b61270e81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061275c82611178565b9050600061276983610bfb565b9050612775858261317a565b600061278a83856130c390919063ffffffff16565b90506127de81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061283682600954612ab890919063ffffffff16565b600981905550612851836009546130c390919063ffffffff16565b6009819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8a8016d24c64c84e7cbad0a909babb37f67ae9e82723f4c38a7666786358e7c1866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505b5b5b505050565b6000838311158290612aa5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a6a578082015181840152602081019050612a4f565b50505050905090810190601f168015612a975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080612b4d8484612ab8565b90506000612b5c8260016130c3565b9050612b71612b6b8286612c01565b85612b7b565b9250505092915050565b600080831415612b8e5760009050612bfb565b6000828402905082848281612b9f57fe5b0414612bf6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806133db6021913960400191505060405180910390fd5b809150505b92915050565b6000612c4383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613287565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806134486021913960400191505060405180910390fd5b612d3d8160405180606001604052806022815260200161337160229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f89092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d95816009546130c390919063ffffffff16565b600981905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b612e0f8282612c4b565b612ed082612e1b61144a565b612ecb8460405180606001604052806024815260200161342460249139600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000612e8161144a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f89092919063ffffffff16565b611452565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806133936026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130bb5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b600061310583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129f8565b905092915050565b60008043600e545a60405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120905080600e81905550600060028260001c8161316157fe5b061461316e576000613171565b60015b60ff1691505090565b600081141561318857600080fd5b6131da81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083118290613333576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156132f85780820151818401526020810190506132dd565b50505050905090810190601f1680156133255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161333f57fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158206f314815ee616b663261cd5802c46ae6a082f934e845707c93f21054b387eb6464736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806379cc6790116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e14610844578063df2e7797146108bc578063f2fde38b146108da578063ff12bbf41461091e576101a9565b8063a9059cbb146107a2578063c5ac0ded14610808578063d92dfe9014610826576101a9565b806395d89b41116100d357806395d89b4114610627578063a457c2d7146106aa578063a486309d14610710578063a6a6860614610760576101a9565b806379cc67901461056d5780638da5cb5b146105bb5780638f32d59b14610605576101a9565b8063395093511161016657806343684b211161014057806343684b211461049157806370a08231146104ed578063715018a614610545578063738d6c5c1461054f576101a9565b806339509351146103bb5780633ecd074f1461042157806342966c6814610463576101a9565b806306fdde03146101ae578063095ea7b31461023157806316b627d11461029757806318160ddd146102f357806323b872dd14610311578063313ce56714610397575b600080fd5b6101b661096e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a10565b604051808215151515815260200191505060405180910390f35b6102d9600480360360208110156102ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a2e565b604051808215151515815260200191505060405180910390f35b6102fb610a4e565b6040518082815260200191505060405180910390f35b61037d6004803603606081101561032757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a58565b604051808215151515815260200191505060405180910390f35b61039f610b31565b604051808260ff1660ff16815260200191505060405180910390f35b610407600480360360408110156103d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b48565b604051808215151515815260200191505060405180910390f35b61044d6004803603602081101561043757600080fd5b8101908080359060200190929190505050610bfb565b6040518082815260200191505060405180910390f35b61048f6004803603602081101561047957600080fd5b8101908080359060200190929190505050610c74565b005b6104d3600480360360208110156104a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c88565b604051808215151515815260200191505060405180910390f35b61052f6004803603602081101561050357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ca8565b6040518082815260200191505060405180910390f35b61054d610cf1565b005b610557610e2a565b6040518082815260200191505060405180910390f35b6105b96004803603604081101561058357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e30565b005b6105c3610e3e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61060d610e67565b604051808215151515815260200191505060405180910390f35b61062f610ec5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066f578082015181840152602081019050610654565b50505050905090810190601f16801561069c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106f6600480360360408110156106c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f67565b604051808215151515815260200191505060405180910390f35b61075e6004803603604081101561072657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611034565b005b61078c6004803603602081101561077657600080fd5b8101908080359060200190929190505050611178565b6040518082815260200191505060405180910390f35b6107ee600480360360408110156107b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111c9565b604051808215151515815260200191505060405180910390f35b6108106111e7565b6040518082815260200191505060405180910390f35b61082e6111ed565b6040518082815260200191505060405180910390f35b6108a66004803603604081101561085a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111f3565b6040518082815260200191505060405180910390f35b6108c461127a565b6040518082815260200191505060405180910390f35b61091c600480360360208110156108f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611280565b005b61096c6004803603604081101561093457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611306565b005b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a065780601f106109db57610100808354040283529160200191610a06565b820191906000526020600020905b8154815290600101906020018083116109e957829003601f168201915b5050505050905090565b6000610a24610a1d61144a565b8484611452565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600954905090565b6000610a65848484611649565b610b2684610a7161144a565b610b21856040518060600160405280602881526020016133fc60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ad761144a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f89092919063ffffffff16565b611452565b600190509392505050565b6000600360009054906101000a900460ff16905090565b6000610bf1610b5561144a565b84610bec8560066000610b6661144a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b611452565b6001905092915050565b600080610c13600a5484612b4090919063ffffffff16565b90506000610c68600d54610c5a600c54610c4c600b54610c3e600a5489612b7b90919063ffffffff16565b612b7b90919063ffffffff16565b612c0190919063ffffffff16565b612c0190919063ffffffff16565b90508092505050919050565b610c85610c7f61144a565b82612c4b565b50565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cf9610e67565b610d6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d5481565b610e3a8282612e05565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ea961144a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f5d5780601f10610f3257610100808354040283529160200191610f5d565b820191906000526020600020905b815481529060010190602001808311610f4057829003601f168201915b5050505050905090565b600061102a610f7461144a565b84611025856040518060600160405280602581526020016134b26025913960066000610f9e61144a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f89092919063ffffffff16565b611452565b6001905092915050565b61103c610e67565b6110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f113828282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080611190600a5484612b4090919063ffffffff16565b905060006111bd6127106111af600a5485612b7b90919063ffffffff16565b612c0190919063ffffffff16565b90508092505050919050565b60006111dd6111d661144a565b8484611649565b6001905092915050565b600a5481565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b611288610e67565b6112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61130381612ed4565b50565b61130e610e67565b611380576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b7fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061348e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561155e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806133b96022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60003a14806116575750455a115b1561204d57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806134696025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061334e6023913960400191505060405180910390fd5b6117728383613018565b15611970576117c981600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061185e81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2fb983926eb752d15d651ba5b013e68a418a80c16c889d45bdb99d1b4f045b4d836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3612001565b61197a8383613018565b15801561198e5750600161198c61310d565b145b15611ccb576119e581600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611a3382611178565b90506000611a4083610bfb565b90506000611a6983611a5b84876130c390919063ffffffff16565b6130c390919063ffffffff16565b9050611abd81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b2783611b19846009546130c390919063ffffffff16565b6130c390919063ffffffff16565b6009819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f269d952403220006258f3e1a83b824f4dda43480e34b995c342b56136f6d0c2d866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050612000565b611d1d81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611d6b82611178565b90506000611d7883610bfb565b9050611d84858261317a565b6000611d9983856130c390919063ffffffff16565b9050611ded81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e4582600954612ab890919063ffffffff16565b600981905550611e60836009546130c390919063ffffffff16565b6009819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8a8016d24c64c84e7cbad0a909babb37f67ae9e82723f4c38a7666786358e7c1866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505b5b60005a90505b6127105a82031015612047576004546040516020018082815260200191505060405160208183030381529060405280519060200120600481905550612007565b506129f3565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806134696025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061334e6023913960400191505060405180910390fd5b6121638383613018565b15612361576121ba81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061224f81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2fb983926eb752d15d651ba5b013e68a418a80c16c889d45bdb99d1b4f045b4d836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36129f2565b61236b8383613018565b15801561237f5750600161237d61310d565b145b156126bc576123d681600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061242482611178565b9050600061243183610bfb565b9050600061245a8361244c84876130c390919063ffffffff16565b6130c390919063ffffffff16565b90506124ae81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125188361250a846009546130c390919063ffffffff16565b6130c390919063ffffffff16565b6009819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f269d952403220006258f3e1a83b824f4dda43480e34b995c342b56136f6d0c2d866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050506129f1565b61270e81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130c390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061275c82611178565b9050600061276983610bfb565b9050612775858261317a565b600061278a83856130c390919063ffffffff16565b90506127de81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061283682600954612ab890919063ffffffff16565b600981905550612851836009546130c390919063ffffffff16565b6009819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8a8016d24c64c84e7cbad0a909babb37f67ae9e82723f4c38a7666786358e7c1866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505b5b5b505050565b6000838311158290612aa5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a6a578082015181840152602081019050612a4f565b50505050905090810190601f168015612a975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080612b4d8484612ab8565b90506000612b5c8260016130c3565b9050612b71612b6b8286612c01565b85612b7b565b9250505092915050565b600080831415612b8e5760009050612bfb565b6000828402905082848281612b9f57fe5b0414612bf6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806133db6021913960400191505060405180910390fd5b809150505b92915050565b6000612c4383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613287565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806134486021913960400191505060405180910390fd5b612d3d8160405180606001604052806022815260200161337160229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f89092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d95816009546130c390919063ffffffff16565b600981905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b612e0f8282612c4b565b612ed082612e1b61144a565b612ecb8460405180606001604052806024815260200161342460249139600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000612e8161144a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129f89092919063ffffffff16565b611452565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806133936026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130bb5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b600061310583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129f8565b905092915050565b60008043600e545a60405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120905080600e81905550600060028260001c8161316157fe5b061461316e576000613171565b60015b60ff1691505090565b600081141561318857600080fd5b6131da81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab890919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083118290613333576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156132f85780820151818401526020810190506132dd565b50505050905090810190601f1680156133255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161333f57fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158206f314815ee616b663261cd5802c46ae6a082f934e845707c93f21054b387eb6464736f6c63430005110032

Deployed Bytecode Sourcemap

5784:9001:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5784:9001:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4818:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4818:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7612:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7612:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6073:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6073:43:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7046:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7775:308;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7775:308:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5010:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8091:233;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8091:233:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8952:262;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8952:262:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8627:86;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8627:86:0;;;;;;;;;;;;;;;;;:::i;:::-;;6021:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6021:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7148:113;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7148:113:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1304:143;;;:::i;:::-;;6444:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8721:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8721:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;992:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1199:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4912:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4912:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8332:287;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8332:287:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9500:202;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9500:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9255:237;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9255:237:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7269:161;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7269:161:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6334:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6407:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7438:166;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7438:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6370:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1455:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1455:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;9710:208;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9710:208:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4818:86;4855:13;4891:5;4884:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4818:86;:::o;7612:155::-;7678:4;7698:39;7707:12;:10;:12::i;:::-;7721:7;7730:6;7698:8;:39::i;:::-;7755:4;7748:11;;7612:155;;;;:::o;6073:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;7046:94::-;7090:7;7120:12;;7113:19;;7046:94;:::o;7775:308::-;7863:4;7886:36;7896:6;7904:9;7915:6;7886:9;:36::i;:::-;7933:120;7942:6;7950:12;:10;:12::i;:::-;7964:88;8002:6;7964:88;;;;;;;;;;;;;;;;;:11;:19;7976:6;7964:19;;;;;;;;;;;;;;;:33;7984:12;:10;:12::i;:::-;7964:33;;;;;;;;;;;;;;;;:37;;:88;;;;;:::i;:::-;7933:8;:120::i;:::-;8071:4;8064:11;;7775:308;;;;;:::o;5010:86::-;5051:5;5079:9;;;;;;;;;;;5072:16;;5010:86;:::o;8091:233::-;8189:4;8211:83;8220:12;:10;:12::i;:::-;8234:7;8243:50;8282:10;8243:11;:25;8255:12;:10;:12::i;:::-;8243:25;;;;;;;;;;;;;;;:34;8269:7;8243:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8211:8;:83::i;:::-;8312:4;8305:11;;8091:233;;;;:::o;8952:262::-;9012:7;9030:18;9051:23;9062:11;;9051:5;:10;;:23;;;;:::i;:::-;9030:44;;9079:18;9100:87;9172:14;;9100:67;9152:14;;9100:47;9132:14;;9100:27;9115:11;;9100:10;:14;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;:51;;:67;;;;:::i;:::-;:71;;:87;;;;:::i;:::-;9079:108;;9199:10;9192:17;;;;8952:262;;;:::o;8627:86::-;8678:27;8684:12;:10;:12::i;:::-;8698:6;8678:5;:27::i;:::-;8627:86;:::o;6021:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;7148:113::-;7205:7;7235:9;:18;7245:7;7235:18;;;;;;;;;;;;;;;;7228:25;;7148:113;;;:::o;1304:143::-;1125:9;:7;:9::i;:::-;1117:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1406:1;1369:40;;1390:6;;;;;;;;;;;1369:40;;;;;;;;;;;;1437:1;1420:6;;:19;;;;;;;;;;;;;;;;;;1304:143::o;6444:34::-;;;;:::o;8721:106::-;8793:26;8803:7;8812:6;8793:9;:26::i;:::-;8721:106;;:::o;992:82::-;1030:7;1060:6;;;;;;;;;;;1053:13;;992:82;:::o;1199:97::-;1239:4;1282:6;;;;;;;;;;;1266:22;;:12;:10;:12::i;:::-;:22;;;1259:29;;1199:97;:::o;4912:90::-;4951:13;4987:7;4980:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4912:90;:::o;8332:287::-;8435:4;8457:132;8466:12;:10;:12::i;:::-;8480:7;8492:96;8531:15;8492:96;;;;;;;;;;;;;;;;;:11;:25;8504:12;:10;:12::i;:::-;8492:25;;;;;;;;;;;;;;;:34;8518:7;8492:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8457:8;:132::i;:::-;8607:4;8600:11;;8332:287;;;;:::o;9500:202::-;1125:9;:7;:9::i;:::-;1117:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9618:32;9630:5;9637:12;9618:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9682:12;9661:11;:18;9673:5;9661:18;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;9500:202;;:::o;9255:237::-;9315:7;9342:18;9363:23;9374:11;;9363:5;:10;;:23;;;;:::i;:::-;9342:44;;9397:18;9418:38;9450:5;9418:27;9433:11;;9418:10;:14;;:27;;;;:::i;:::-;:31;;:38;;;;:::i;:::-;9397:59;;9474:10;9467:17;;;;9255:237;;;:::o;7269:161::-;7338:4;7358:42;7368:12;:10;:12::i;:::-;7382:9;7393:6;7358:9;:42::i;:::-;7418:4;7411:11;;7269:161;;;;:::o;6334:32::-;;;;:::o;6407:33::-;;;;:::o;7438:166::-;7537:7;7569:11;:18;7581:5;7569:18;;;;;;;;;;;;;;;:27;7588:7;7569:27;;;;;;;;;;;;;;;;7562:34;;7438:166;;;;:::o;6370:33::-;;;;:::o;1455:112::-;1125:9;:7;:9::i;:::-;1117:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1531:28;1550:8;1531:18;:28::i;:::-;1455:112;:::o;9710:208::-;1125:9;:7;:9::i;:::-;1117:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9830:34;9844:5;9851:12;9830:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9898:12;9875:13;:20;9889:5;9875:20;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;9710:208;;:::o;434:101::-;479:15;517:10;510:17;;434:101;:::o;14195:344::-;14312:1;14295:19;;:5;:19;;;;14287:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14393:1;14374:21;;:7;:21;;;;14366:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14477:6;14447:11;:18;14459:5;14447:18;;;;;;;;;;;;;;;:27;14466:7;14447:27;;;;;;;;;;;;;;;:36;;;;14515:7;14499:32;;14508:5;14499:32;;;14524:6;14499:32;;;;;;;;;;;;;;;;;;14195:344;;;:::o;10470:3141::-;5355:1;5340:11;:16;:46;;;;5372:14;5360:9;:26;5340:46;5336:334;;;10826:1;10808:20;;:6;:20;;;;10800:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10910:1;10889:23;;:9;:23;;;;10881:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11064:33;11079:6;11087:9;11064:14;:33::i;:::-;11060:2544;;;11188:29;11210:6;11188:9;:17;11198:6;11188:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;11168:9;:17;11178:6;11168:17;;;;;;;;;;;;;;;:49;;;;11301:32;11326:6;11301:9;:20;11311:9;11301:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11278:9;:20;11288:9;11278:20;;;;;;;;;;;;;;;:55;;;;11364:9;11349:33;;11356:6;11349:33;;;11375:6;11349:33;;;;;;;;;;;;;;;;;;11419:9;11402:35;;11411:6;11402:35;;;11430:6;11402:35;;;;;;;;;;;;;;;;;;11060:2544;;;11491:33;11506:6;11514:9;11491:14;:33::i;:::-;11490:34;:58;;;;;11547:1;11528:15;:13;:15::i;:::-;:20;11490:58;11486:2118;;;11624:29;11646:6;11624:9;:17;11634:6;11624:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;11604:9;:17;11614:6;11604:17;;;;;;;;;;;;;;;:49;;;;11699:26;11728:22;11743:6;11728:14;:22::i;:::-;11699:51;;11802:20;11825:22;11840:6;11825:14;:22::i;:::-;11802:45;;11936:24;11963:48;11992:18;11963:24;11974:12;11963:6;:10;;:24;;;;:::i;:::-;:28;;:48;;;;:::i;:::-;11936:75;;12077:42;12102:16;12077:9;:20;12087:9;12077:20;;;;;;;;;;;;;;;;:24;;:42;;;;:::i;:::-;12054:9;:20;12064:9;12054:20;;;;;;;;;;;;;;;:65;;;;12214:54;12249:18;12214:30;12231:12;12214;;:16;;:30;;;;:::i;:::-;:34;;:54;;;;:::i;:::-;12199:12;:69;;;;12295:9;12281:32;;12287:6;12281:32;;;12306:6;12281:32;;;;;;;;;;;;;;;;;;12341:9;12324:45;;12333:6;12324:45;;;12352:16;12324:45;;;;;;;;;;;;;;;;;;12405:1;12380:48;;12389:6;12380:48;;;12409:18;12380:48;;;;;;;;;;;;;;;;;;12464:1;12439:42;;12448:6;12439:42;;;12468:12;12439:42;;;;;;;;;;;;;;;;;;11486:2118;;;;;;12603:29;12625:6;12603:9;:17;12613:6;12603:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12583:9;:17;12593:6;12583:17;;;;;;;;;;;;;;;:49;;;;12678:26;12707:22;12722:6;12707:14;:22::i;:::-;12678:51;;12781:21;12805:22;12820:6;12805:14;:22::i;:::-;12781:46;;12880:28;12886:6;12894:13;12880:5;:28::i;:::-;13024:24;13051:30;13062:18;13051:6;:10;;:30;;;;:::i;:::-;13024:57;;13147:42;13172:16;13147:9;:20;13157:9;13147:20;;;;;;;;;;;;;;;;:24;;:42;;;;:::i;:::-;13124:9;:20;13134:9;13124:20;;;;;;;;;;;;;;;:65;;;;13249:31;13266:13;13249:12;;:16;;:31;;;;:::i;:::-;13234:12;:46;;;;13352:36;13369:18;13352:12;;:16;;:36;;;;:::i;:::-;13337:12;:51;;;;13418:9;13404:32;;13410:6;13404:32;;;13429:6;13404:32;;;;;;;;;;;;;;;;;;13468:9;13447:46;;13464:1;13447:46;;;13479:13;13447:46;;;;;;;;;;;;;;;;;;13529:1;13504:48;;13513:6;13504:48;;;13533:18;13504:48;;;;;;;;;;;;;;;;;;13580:9;13563:35;;13572:6;13563:35;;;13591:6;13563:35;;;;;;;;;;;;;;;;;;11486:2118;;;;11060:2544;5423:16;5442:9;5423:28;;5466:147;5286:5;5484:9;5473:8;:20;:29;5466:147;;;5591:4;;5574:22;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5574:22:0;;;5564:33;;;;;;5557:4;:40;;;;5466:147;;;5336:334;;;;10826:1;10808:20;;:6;:20;;;;10800:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10910:1;10889:23;;:9;:23;;;;10881:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11064:33;11079:6;11087:9;11064:14;:33::i;:::-;11060:2544;;;11188:29;11210:6;11188:9;:17;11198:6;11188:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;11168:9;:17;11178:6;11168:17;;;;;;;;;;;;;;;:49;;;;11301:32;11326:6;11301:9;:20;11311:9;11301:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11278:9;:20;11288:9;11278:20;;;;;;;;;;;;;;;:55;;;;11364:9;11349:33;;11356:6;11349:33;;;11375:6;11349:33;;;;;;;;;;;;;;;;;;11419:9;11402:35;;11411:6;11402:35;;;11430:6;11402:35;;;;;;;;;;;;;;;;;;11060:2544;;;11491:33;11506:6;11514:9;11491:14;:33::i;:::-;11490:34;:58;;;;;11547:1;11528:15;:13;:15::i;:::-;:20;11490:58;11486:2118;;;11624:29;11646:6;11624:9;:17;11634:6;11624:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;11604:9;:17;11614:6;11604:17;;;;;;;;;;;;;;;:49;;;;11699:26;11728:22;11743:6;11728:14;:22::i;:::-;11699:51;;11802:20;11825:22;11840:6;11825:14;:22::i;:::-;11802:45;;11936:24;11963:48;11992:18;11963:24;11974:12;11963:6;:10;;:24;;;;:::i;:::-;:28;;:48;;;;:::i;:::-;11936:75;;12077:42;12102:16;12077:9;:20;12087:9;12077:20;;;;;;;;;;;;;;;;:24;;:42;;;;:::i;:::-;12054:9;:20;12064:9;12054:20;;;;;;;;;;;;;;;:65;;;;12214:54;12249:18;12214:30;12231:12;12214;;:16;;:30;;;;:::i;:::-;:34;;:54;;;;:::i;:::-;12199:12;:69;;;;12295:9;12281:32;;12287:6;12281:32;;;12306:6;12281:32;;;;;;;;;;;;;;;;;;12341:9;12324:45;;12333:6;12324:45;;;12352:16;12324:45;;;;;;;;;;;;;;;;;;12405:1;12380:48;;12389:6;12380:48;;;12409:18;12380:48;;;;;;;;;;;;;;;;;;12464:1;12439:42;;12448:6;12439:42;;;12468:12;12439:42;;;;;;;;;;;;;;;;;;11486:2118;;;;;;12603:29;12625:6;12603:9;:17;12613:6;12603:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12583:9;:17;12593:6;12583:17;;;;;;;;;;;;;;;:49;;;;12678:26;12707:22;12722:6;12707:14;:22::i;:::-;12678:51;;12781:21;12805:22;12820:6;12805:14;:22::i;:::-;12781:46;;12880:28;12886:6;12894:13;12880:5;:28::i;:::-;13024:24;13051:30;13062:18;13051:6;:10;;:30;;;;:::i;:::-;13024:57;;13147:42;13172:16;13147:9;:20;13157:9;13147:20;;;;;;;;;;;;;;;;:24;;:42;;;;:::i;:::-;13124:9;:20;13134:9;13124:20;;;;;;;;;;;;;;;:65;;;;13249:31;13266:13;13249:12;;:16;;:31;;;;:::i;:::-;13234:12;:46;;;;13352:36;13369:18;13352:12;;:16;;:36;;;;:::i;:::-;13337:12;:51;;;;13418:9;13404:32;;13410:6;13404:32;;;13429:6;13404:32;;;;;;;;;;;;;;;;;;13468:9;13447:46;;13464:1;13447:46;;;13479:13;13447:46;;;;;;;;;;;;;;;;;;13529:1;13504:48;;13513:6;13504:48;;;13533:18;13504:48;;;;;;;;;;;;;;;;;;13580:9;13563:35;;13572:6;13563:35;;;13591:6;13563:35;;;;;;;;;;;;;;;;;;11486:2118;;;;11060:2544;5336:334;10470:3141;;;:::o;2304:197::-;2390:7;2426:1;2421;:6;;2429:12;2413: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;2413:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2453:9;2469:1;2465;:5;2453:17;;2492:1;2485:8;;;2304:197;;;;;:::o;1963:186::-;2021:7;2044:9;2060:1;2056;:5;2044:17;;2085:1;2080;:6;;2072:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2140:1;2133:8;;;1963:186;;;;:::o;3617:153::-;3676:7;3693:9;3705:8;3709:1;3711;3705:3;:8::i;:::-;3693:20;;3718:9;3730:8;3734:1;3736;3730:3;:8::i;:::-;3718:20;;3750:15;3754:8;3758:1;3760;3754:3;:8::i;:::-;3763:1;3750:3;:15::i;:::-;3743:22;;;;3617:153;;;;:::o;2531:257::-;2589:7;2621:1;2616;:6;2612:51;;;2650:1;2643:8;;;;2612:51;2675:9;2691:1;2687;:5;2675:17;;2720:1;2715;2711;:5;;;;;;:10;2703:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2779:1;2772:8;;;2531:257;;;;;:::o;2796:135::-;2854:7;2884:39;2888:1;2891;2884:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2877:46;;2796:135;;;;:::o;13836:351::-;13934:1;13915:21;;:7;:21;;;;13907:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14008:68;14031:6;14008:68;;;;;;;;;;;;;;;;;:9;:18;14018:7;14008:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;13987:9;:18;13997:7;13987:18;;;;;;;;;;;;;;;:89;;;;14102:24;14119:6;14102:12;;:16;;:24;;;;:::i;:::-;14087:12;:39;;;;14168:1;14142:37;;14151:7;14142:37;;;14172:6;14142:37;;;;;;;;;;;;;;;;;;13836:351;;:::o;14547:235::-;14622:22;14628:7;14637:6;14622:5;:22::i;:::-;14655:119;14664:7;14673:12;:10;:12::i;:::-;14687:86;14726:6;14687:86;;;;;;;;;;;;;;;;;:11;:20;14699:7;14687:20;;;;;;;;;;;;;;;:34;14708:12;:10;:12::i;:::-;14687:34;;;;;;;;;;;;;;;;:38;;:86;;;;;:::i;:::-;14655:8;:119::i;:::-;14547:235;;:::o;1575:232::-;1672:1;1652:22;;:8;:22;;;;1644:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1762:8;1733:38;;1754:6;;;;;;;;;;;1733:38;;;;;;;;;;;;1791:8;1782:6;;:17;;;;;;;;;;;;;;;;;;1575:232;:::o;9926:179::-;10028:4;10057:13;:20;10071:5;10057:20;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;10081:11;:16;10093:3;10081:16;;;;;;;;;;;;;;;;;;;;;;;;;10057:40;10050:47;;9926:179;;;;:::o;2157:139::-;2215:7;2245:43;2249:1;2252;2245:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2238:50;;2157:139;;;;:::o;10215:214::-;10258:7;10275:14;10323:12;10337:8;;10347:9;10306:51;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10306:51:0;;;10292:66;;;;;;10275:83;;10374:6;10363:8;:17;;;;10415:1;10410;10400:6;10392:15;;:19;;;;;;:24;:32;;10423:1;10392:32;;;10419:1;10392:32;10385:39;;;;;10215:214;:::o;13619:209::-;13703:1;13693:6;:11;;13685:20;;;;;;13737:30;13760:6;13737:9;:18;13747:7;13737:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;13716:9;:18;13726:7;13716:18;;;;;;;;;;;;;;;:51;;;;13804:7;13783:37;;13800:1;13783:37;;;13813:6;13783:37;;;;;;;;;;;;;;;;;;13619:209;;:::o;2939:348::-;3025:7;3127:1;3123;:5;3130:12;3115:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3115:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3154:9;3170:1;3166;:5;;;;;;3154:17;;3278:1;3271:8;;;2939:348;;;;;:::o

Swarm Source

bzzr://6f314815ee616b663261cd5802c46ae6a082f934e845707c93f21054b387eb64

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ 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.