ETH Price: $1,625.77 (-1.02%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Approve221312652025-03-26 13:05:3526 days ago1742994335IN
0x1ddbB18E...0305150dD
0 ETH0.00003730.80166748
Transfer221155822025-03-24 8:31:2329 days ago1742805083IN
0x1ddbB18E...0305150dD
0 ETH0.000159642.42235664
Approve214703072024-12-24 5:41:11119 days ago1735018871IN
0x1ddbB18E...0305150dD
0 ETH0.000318426.85187149
Approve212607712024-11-24 23:04:59148 days ago1732489499IN
0x1ddbB18E...0305150dD
0 ETH0.000441579.50196864
Approve212002272024-11-16 12:22:11156 days ago1731759731IN
0x1ddbB18E...0305150dD
0 ETH0.0005555311.95734628
Approve211924192024-11-15 10:11:47157 days ago1731665507IN
0x1ddbB18E...0305150dD
0 ETH0.0003660415.09574954
Approve210915012024-11-01 8:08:11172 days ago1730448491IN
0x1ddbB18E...0305150dD
0 ETH0.000185547.6521251
Approve210702352024-10-29 8:55:59175 days ago1730192159IN
0x1ddbB18E...0305150dD
0 ETH0.000388618.36234238
Approve210566712024-10-27 11:29:35176 days ago1730028575IN
0x1ddbB18E...0305150dD
0 ETH0.000145126
Approve210479012024-10-26 6:06:47178 days ago1729922807IN
0x1ddbB18E...0305150dD
0 ETH0.000270245.81513315
Approve210351032024-10-24 11:16:59179 days ago1729768619IN
0x1ddbB18E...0305150dD
0 ETH0.0004698410.16799477
Approve207483992024-09-14 10:58:11219 days ago1726311491IN
0x1ddbB18E...0305150dD
0 ETH0.000151183.25315961
Approve206123402024-08-26 11:03:11238 days ago1724670191IN
0x1ddbB18E...0305150dD
0 ETH0.000084592.90145661
Approve205195582024-08-13 11:59:35251 days ago1723550375IN
0x1ddbB18E...0305150dD
0 ETH0.000152313.27758631
Approve204296972024-07-31 23:04:47264 days ago1722467087IN
0x1ddbB18E...0305150dD
0 ETH0.000225354.87327032
Transfer203564602024-07-21 17:39:35274 days ago1721583575IN
0x1ddbB18E...0305150dD
0 ETH0.000200153.0371074
Approve202947922024-07-13 3:06:35283 days ago1720839995IN
0x1ddbB18E...0305150dD
0 ETH0.000108122.33987076
Approve202913052024-07-12 15:25:35283 days ago1720797935IN
0x1ddbB18E...0305150dD
0 ETH0.000352297.58070939
Approve201690242024-06-25 13:34:23300 days ago1719322463IN
0x1ddbB18E...0305150dD
0 ETH0.000219247.51971887
Approve201536772024-06-23 10:05:23302 days ago1719137123IN
0x1ddbB18E...0305150dD
0 ETH0.000155243.33622461
Approve201442792024-06-22 2:30:47304 days ago1719023447IN
0x1ddbB18E...0305150dD
0 ETH0.000125742.70589637
Approve201145042024-06-17 22:31:59308 days ago1718663519IN
0x1ddbB18E...0305150dD
0 ETH0.000224534.85929642
Transfer200823872024-06-13 10:45:11312 days ago1718275511IN
0x1ddbB18E...0305150dD
0 ETH0.0018170911.06131787
Approve200239852024-06-05 6:58:11321 days ago1717570691IN
0x1ddbB18E...0305150dD
0 ETH0.0008399118.07349743
Approve200179942024-06-04 10:55:35321 days ago1717498535IN
0x1ddbB18E...0305150dD
0 ETH0.000241729.09681147
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer203694622024-07-23 13:14:35272 days ago1721740475
0x1ddbB18E...0305150dD
0.00187125 ETH
Transfer203694622024-07-23 13:14:35272 days ago1721740475
0x1ddbB18E...0305150dD
0.00748503 ETH
Transfer203694622024-07-23 13:14:35272 days ago1721740475
0x1ddbB18E...0305150dD
0.00935629 ETH
Transfer200823922024-06-13 10:46:11312 days ago1718275571
0x1ddbB18E...0305150dD
0.00225518 ETH
Transfer200823922024-06-13 10:46:11312 days ago1718275571
0x1ddbB18E...0305150dD
0.00902072 ETH
Transfer200823922024-06-13 10:46:11312 days ago1718275571
0x1ddbB18E...0305150dD
0.0112759 ETH
Transfer200823872024-06-13 10:45:11312 days ago1718275511
0x1ddbB18E...0305150dD
0.00226213 ETH
Transfer200823872024-06-13 10:45:11312 days ago1718275511
0x1ddbB18E...0305150dD
0.00904855 ETH
Transfer200823872024-06-13 10:45:11312 days ago1718275511
0x1ddbB18E...0305150dD
0.01131069 ETH
Transfer200239852024-06-05 6:58:11321 days ago1717570691
0x1ddbB18E...0305150dD
0.00254754 ETH
Transfer200239852024-06-05 6:58:11321 days ago1717570691
0x1ddbB18E...0305150dD
0.01019018 ETH
Transfer200239852024-06-05 6:58:11321 days ago1717570691
0x1ddbB18E...0305150dD
0.01273773 ETH
Transfer200179972024-06-04 10:56:11321 days ago1717498571
0x1ddbB18E...0305150dD
0.00264221 ETH
Transfer200179972024-06-04 10:56:11321 days ago1717498571
0x1ddbB18E...0305150dD
0.01056886 ETH
Transfer200179972024-06-04 10:56:11321 days ago1717498571
0x1ddbB18E...0305150dD
0.01321108 ETH
Transfer200179172024-06-04 10:39:59321 days ago1717497599
0x1ddbB18E...0305150dD
0.00265104 ETH
Transfer200179172024-06-04 10:39:59321 days ago1717497599
0x1ddbB18E...0305150dD
0.01060417 ETH
Transfer200179172024-06-04 10:39:59321 days ago1717497599
0x1ddbB18E...0305150dD
0.01325522 ETH
Transfer199554612024-05-26 17:11:59330 days ago1716743519
0x1ddbB18E...0305150dD
0.00292482 ETH
Transfer199554612024-05-26 17:11:59330 days ago1716743519
0x1ddbB18E...0305150dD
0.01169931 ETH
Transfer199554612024-05-26 17:11:59330 days ago1716743519
0x1ddbB18E...0305150dD
0.01462414 ETH
Transfer199544912024-05-26 13:57:23330 days ago1716731843
0x1ddbB18E...0305150dD
0.00295259 ETH
Transfer199544912024-05-26 13:57:23330 days ago1716731843
0x1ddbB18E...0305150dD
0.01181038 ETH
Transfer199544912024-05-26 13:57:23330 days ago1716731843
0x1ddbB18E...0305150dD
0.01476298 ETH
Transfer199395072024-05-24 11:40:59332 days ago1716550859
0x1ddbB18E...0305150dD
0.00312364 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CoinTensorAI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-05
*/

// SPDX-License-Identifier: MIT

/*

Website: https://cointensor.io
Telegram: https://t.me/cointensor
Twitter: https://x.com/cointensor

*/

pragma solidity 0.8.21;

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;
    }
    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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address public owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() external onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(owner);
    }
    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract CoinTensorAI is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "CoinTensor AI";
    string public constant symbol = "TENSOR";
    uint8 public constant decimals = 18;

    uint256 public constant totalSupply = 30_000_000 * 10**decimals;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;

    uint256 public marketingFee = 4;
    uint256 public opsFee = 1;
    uint256 public totalFee = marketingFee + opsFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 public buyMultiplier = 50;
    uint256 public sellMultiplier = 50;
    uint256 public transferMultiplier = 0;

    address public marketingFeeReceiver;
    address public opsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = totalSupply / 200;
    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0x294425583E443f1e1615BAC0abFe6363c871D03e;
        opsFeeReceiver = 0x302422bc13b635c3046de11de1C5f19994C73Db5;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingFeeReceiver] = true;
        isFeeExempt[opsFeeReceiver] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function manualSwap() external {
        payable(opsFeeReceiver).transfer(address(this).balance);
    }

    function swapBack() internal swapping {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 amountETHMarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHOps = (amountETH * opsFee) / totalFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(opsFeeReceiver).transfer(amountETHOps);
    }

    function manage_feeExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setTaxes(uint256 _marketingFee, uint256 _opsFee) external onlyOwner {
        marketingFee = _marketingFee;
        opsFee = _opsFee;
        totalFee = marketingFee + opsFee;
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _opsFeeReceiver ) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
        opsFeeReceiver = _opsFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_feeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"opsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"opsFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_opsFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_opsFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526004808055600160058190556200001b9162000349565b600655603260078190556008555f600955600c805460ff60a01b1916600160a01b17905560c86200004f6012600a6200045e565b6200005f906301c9c38062000475565b6200006b91906200048f565b600d553480156200007a575f80fd5b505f8054336001600160a01b031991821617909155600c8054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620000e8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200010e9190620004af565b6001600160a01b03908116608052600c546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200015d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001839190620004af565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620001d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f89190620004af565b6001600160a01b0390811660a052305f908152600260209081526040808320600c548516845282528083205f199055600a80546001600160a01b031990811673294425583e443f1e1615bac0abfe6363c871d03e178255600b805490911673302422bc13b635c3046de11de1c5f19994c73db51781553385526003909352818420805460ff19908116600190811790925582548716865283862080548216831790559354909516845292208054909116909217909155620002bc906012906200045e565b620002cc906301c9c38062000475565b335f81815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200030e6012600a6200045e565b6200031e906301c9c38062000475565b60405190815260200160405180910390a3620004d7565b634e487b7160e01b5f52601160045260245ffd5b808201808211156200035f576200035f62000335565b92915050565b600181815b80851115620003a557815f190482111562000389576200038962000335565b808516156200039757918102915b93841c93908002906200036a565b509250929050565b5f82620003bd575060016200035f565b81620003cb57505f6200035f565b8160018114620003e45760028114620003ef576200040f565b60019150506200035f565b60ff84111562000403576200040362000335565b50506001821b6200035f565b5060208310610133831016604e8410600b841016171562000434575081810a6200035f565b62000440838362000365565b805f190482111562000456576200045662000335565b029392505050565b5f6200046e60ff841683620003ad565b9392505050565b80820281158282048414176200035f576200035f62000335565b5f82620004aa57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620004c0575f80fd5b81516001600160a01b03811681146200046e575f80fd5b60805160a0516117666200050e5f395f818161055701528181610e080152818161105b015261108f01525f610ecf01526117665ff3fe6080604052600436106101ff575f3560e01c80636ce46bc311610113578063a9059cbb1161009d578063e96fada21161006d578063e96fada21461061a578063f33dfea014610639578063f887ea4014610658578063fd414aa814610677578063fed0d2a11461068c575f80fd5b8063a9059cbb14610579578063c647b20e14610598578063dd62ed3e146105b7578063df20fd49146105fb575f80fd5b8063893d20e8116100e3578063893d20e8146104a85780638da5cb5b146104d857806395d89b41146104f6578063a4b45c0014610527578063a8aa1b3114610546575f80fd5b80636ce46bc31461042a5780636ddd17131461044957806370a0823114610469578063715018a614610494575f80fd5b80632f54bf6e1161019457806351bc3c851161016457806351bc3c85146103ac578063571ac8b0146103c25780635921652f146103e15780636998d19d146103f65780636b67c4df14610415575f80fd5b80632f54bf6e146103165780633121c7c014610343578063313ce567146103585780633f4218e01461037e575f80fd5b806318160ddd116101cf57806318160ddd146102ba5780631df4ccfc146102ce57806323b872dd146102e35780632b112e4914610302575f80fd5b80630445b6671461020a57806306fdde0314610232578063095ea7b314610277578063180b0d7e146102a6575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021f600d5481565b6040519081526020015b60405180910390f35b34801561023d575f80fd5b5061026a6040518060400160405280600d81526020016c436f696e54656e736f7220414960981b81525081565b6040516102299190611317565b348015610282575f80fd5b5061029661029136600461137d565b6106a1565b6040519015158152602001610229565b3480156102b1575f80fd5b5061021f606481565b3480156102c5575f80fd5b5061021f61070d565b3480156102d9575f80fd5b5061021f60065481565b3480156102ee575f80fd5b506102966102fd3660046113a5565b61072a565b34801561030d575f80fd5b5061021f6107e8565b348015610321575f80fd5b506102966103303660046113de565b5f546001600160a01b0391821691161490565b34801561034e575f80fd5b5061021f60075481565b348015610363575f80fd5b5061036c601281565b60405160ff9091168152602001610229565b348015610389575f80fd5b506102966103983660046113de565b60036020525f908152604090205460ff1681565b3480156103b7575f80fd5b506103c061086e565b005b3480156103cd575f80fd5b506102966103dc3660046113de565b6108a7565b3480156103ec575f80fd5b5061021f60095481565b348015610401575f80fd5b506103c0610410366004611406565b6108b3565b348015610420575f80fd5b5061021f60045481565b348015610435575f80fd5b506103c0610444366004611483565b6109b6565b348015610454575f80fd5b50600c5461029690600160a01b900460ff1681565b348015610474575f80fd5b5061021f6104833660046113de565b60016020525f908152604090205481565b34801561049f575f80fd5b506103c06109f0565b3480156104b3575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610229565b3480156104e3575f80fd5b505f546104c0906001600160a01b031681565b348015610501575f80fd5b5061026a604051806040016040528060068152602001652a22a729a7a960d11b81525081565b348015610532575f80fd5b506103c06105413660046114ac565b610a5d565b348015610551575f80fd5b506104c07f000000000000000000000000000000000000000000000000000000000000000081565b348015610584575f80fd5b5061029661059336600461137d565b610ab4565b3480156105a3575f80fd5b506103c06105b23660046114dd565b610ac0565b3480156105c2575f80fd5b5061021f6105d13660046114ac565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610606575f80fd5b506103c06106153660046114fd565b610b04565b348015610625575f80fd5b50600a546104c0906001600160a01b031681565b348015610644575f80fd5b50600b546104c0906001600160a01b031681565b348015610663575f80fd5b50600c546104c0906001600160a01b031681565b348015610682575f80fd5b5061021f60055481565b348015610697575f80fd5b5061021f60085481565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106fb9086815260200190565b60405180910390a35060015b92915050565b6107196012600a61160b565b610727906301c9c380611619565b81565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f19146107d3576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526002825283812033825290915291909120546107af918490610b70565b6001600160a01b0385165f9081526002602090815260408083203384529091529020555b6107de848484610ba8565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead5f9081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d549091906108476012600a61160b565b610855906301c9c380611619565b61085f9190611630565b6108699190611630565b905090565b600b546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156108a4573d5f803e3d5ffd5b50565b5f610707825f196106a1565b5f546001600160a01b031633146108e55760405162461bcd60e51b81526004016108dc90611643565b60405180910390fd5b6101f582106109445760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604482015264657373657360d81b60648201526084016108dc565b5f5b828110156109b0578160035f86868581811061096457610964611663565b905060200201602081019061097991906113de565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556109a981611677565b9050610946565b50505050565b5f546001600160a01b031633146109df5760405162461bcd60e51b81526004016108dc90611643565b600891909155600791909155600955565b5f546001600160a01b03163314610a195760405162461bcd60e51b81526004016108dc90611643565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610a865760405162461bcd60e51b81526004016108dc90611643565b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b5f6107e1338484610ba8565b5f546001600160a01b03163314610ae95760405162461bcd60e51b81526004016108dc90611643565b60048290556005819055610afd818361168f565b6006555050565b5f546001600160a01b03163314610b2d5760405162461bcd60e51b81526004016108dc90611643565b600c805460ff60a01b1916600160a01b8415150217905580610b516012600a61160b565b610b5f906301c9c380611619565b610b6991906116a2565b600d555050565b5f8184841115610b935760405162461bcd60e51b81526004016108dc9190611317565b505f610b9f8486611630565b95945050505050565b600e545f9060ff1615610bc757610bc0848484610d19565b90506107e1565b610bcf610dfc565b15610bdc57610bdc610e6d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260019091529190912054610c2d918490610b70565b6001600160a01b0385165f90815260016020908152604080832093909355600390529081205460ff1680610c7857506001600160a01b0384165f9081526003602052604090205460ff165b610c8c57610c87858486611034565b610c8e565b825b6001600160a01b0385165f90815260016020526040902054909150610cb3908261118d565b6001600160a01b038086165f8181526001602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d069085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600190915291822054610d69918490610b70565b6001600160a01b038086165f908152600160205260408082209390935590851681522054610d97908361118d565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610dea9086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610e395750600e5460ff16155b8015610e4e5750600c54600160a01b900460ff165b8015610869575050600d54305f90815260016020526040902054101590565b600e805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ead57610ead611663565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f0157610f01611663565b6001600160a01b039283166020918202929092010152600c54600d5460405163791ac94760e01b8152919092169163791ac94791610f4a91905f908690309042906004016116c1565b5f604051808303815f87803b158015610f61575f80fd5b505af1158015610f73573d5f803e3d5ffd5b50506006546004544793505f9250610f8b9084611619565b610f9591906116a2565b90505f60065460055484610fa99190611619565b610fb391906116a2565b600a546040519192506001600160a01b03169083156108fc029084905f818181858888f19350505050158015610feb573d5f803e3d5ffd5b50600b546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611023573d5f803e3d5ffd5b5050600e805460ff19169055505050565b5f8215806110425750600654155b1561104e5750816107e1565b6009546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169084160361108d57506008546110cb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036110cb57506007545b5f6110ff6110da606480611619565b6110f9846110f36006548a6111eb90919063ffffffff16565b906111eb565b90611269565b9050801561117957305f90815260016020526040902054611120908261118d565b305f81815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111709085815260200190565b60405180910390a35b61118385826112aa565b9695505050505050565b5f80611199838561168f565b9050838110156107e15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108dc565b5f825f036111fa57505f610707565b5f6112058385611619565b90508261121285836116a2565b146107e15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108dc565b5f6107e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112eb565b5f6107e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b70565b5f818361130b5760405162461bcd60e51b81526004016108dc9190611317565b505f610b9f84866116a2565b5f6020808352835180828501525f5b8181101561134257858101830151858201604001528201611326565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611378575f80fd5b919050565b5f806040838503121561138e575f80fd5b61139783611362565b946020939093013593505050565b5f805f606084860312156113b7575f80fd5b6113c084611362565b92506113ce60208501611362565b9150604084013590509250925092565b5f602082840312156113ee575f80fd5b6107e182611362565b80358015158114611378575f80fd5b5f805f60408486031215611418575f80fd5b833567ffffffffffffffff8082111561142f575f80fd5b818601915086601f830112611442575f80fd5b813581811115611450575f80fd5b8760208260051b8501011115611464575f80fd5b60209283019550935061147a91860190506113f7565b90509250925092565b5f805f60608486031215611495575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156114bd575f80fd5b6114c683611362565b91506114d460208401611362565b90509250929050565b5f80604083850312156114ee575f80fd5b50508035926020909101359150565b5f806040838503121561150e575f80fd5b611397836113f7565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561156557815f190482111561154b5761154b611517565b8085161561155857918102915b93841c9390800290611530565b509250929050565b5f8261157b57506001610707565b8161158757505f610707565b816001811461159d57600281146115a7576115c3565b6001915050610707565b60ff8411156115b8576115b8611517565b50506001821b610707565b5060208310610133831016604e8410600b84101617156115e6575081810a610707565b6115f0838361152b565b805f190482111561160357611603611517565b029392505050565b5f6107e160ff84168361156d565b808202811582820484141761070757610707611517565b8181038181111561070757610707611517565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161168857611688611517565b5060010190565b8082018082111561070757610707611517565b5f826116bc57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561170f5784516001600160a01b0316835293830193918301916001016116ea565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220b065a9d4a0b68f1acf3b45fb09269a32114a0885043037cb18191479c8704da264736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101ff575f3560e01c80636ce46bc311610113578063a9059cbb1161009d578063e96fada21161006d578063e96fada21461061a578063f33dfea014610639578063f887ea4014610658578063fd414aa814610677578063fed0d2a11461068c575f80fd5b8063a9059cbb14610579578063c647b20e14610598578063dd62ed3e146105b7578063df20fd49146105fb575f80fd5b8063893d20e8116100e3578063893d20e8146104a85780638da5cb5b146104d857806395d89b41146104f6578063a4b45c0014610527578063a8aa1b3114610546575f80fd5b80636ce46bc31461042a5780636ddd17131461044957806370a0823114610469578063715018a614610494575f80fd5b80632f54bf6e1161019457806351bc3c851161016457806351bc3c85146103ac578063571ac8b0146103c25780635921652f146103e15780636998d19d146103f65780636b67c4df14610415575f80fd5b80632f54bf6e146103165780633121c7c014610343578063313ce567146103585780633f4218e01461037e575f80fd5b806318160ddd116101cf57806318160ddd146102ba5780631df4ccfc146102ce57806323b872dd146102e35780632b112e4914610302575f80fd5b80630445b6671461020a57806306fdde0314610232578063095ea7b314610277578063180b0d7e146102a6575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021f600d5481565b6040519081526020015b60405180910390f35b34801561023d575f80fd5b5061026a6040518060400160405280600d81526020016c436f696e54656e736f7220414960981b81525081565b6040516102299190611317565b348015610282575f80fd5b5061029661029136600461137d565b6106a1565b6040519015158152602001610229565b3480156102b1575f80fd5b5061021f606481565b3480156102c5575f80fd5b5061021f61070d565b3480156102d9575f80fd5b5061021f60065481565b3480156102ee575f80fd5b506102966102fd3660046113a5565b61072a565b34801561030d575f80fd5b5061021f6107e8565b348015610321575f80fd5b506102966103303660046113de565b5f546001600160a01b0391821691161490565b34801561034e575f80fd5b5061021f60075481565b348015610363575f80fd5b5061036c601281565b60405160ff9091168152602001610229565b348015610389575f80fd5b506102966103983660046113de565b60036020525f908152604090205460ff1681565b3480156103b7575f80fd5b506103c061086e565b005b3480156103cd575f80fd5b506102966103dc3660046113de565b6108a7565b3480156103ec575f80fd5b5061021f60095481565b348015610401575f80fd5b506103c0610410366004611406565b6108b3565b348015610420575f80fd5b5061021f60045481565b348015610435575f80fd5b506103c0610444366004611483565b6109b6565b348015610454575f80fd5b50600c5461029690600160a01b900460ff1681565b348015610474575f80fd5b5061021f6104833660046113de565b60016020525f908152604090205481565b34801561049f575f80fd5b506103c06109f0565b3480156104b3575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610229565b3480156104e3575f80fd5b505f546104c0906001600160a01b031681565b348015610501575f80fd5b5061026a604051806040016040528060068152602001652a22a729a7a960d11b81525081565b348015610532575f80fd5b506103c06105413660046114ac565b610a5d565b348015610551575f80fd5b506104c07f00000000000000000000000099d96f99309fc5ebe4fc534d104ba71db0912ae181565b348015610584575f80fd5b5061029661059336600461137d565b610ab4565b3480156105a3575f80fd5b506103c06105b23660046114dd565b610ac0565b3480156105c2575f80fd5b5061021f6105d13660046114ac565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610606575f80fd5b506103c06106153660046114fd565b610b04565b348015610625575f80fd5b50600a546104c0906001600160a01b031681565b348015610644575f80fd5b50600b546104c0906001600160a01b031681565b348015610663575f80fd5b50600c546104c0906001600160a01b031681565b348015610682575f80fd5b5061021f60055481565b348015610697575f80fd5b5061021f60085481565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106fb9086815260200190565b60405180910390a35060015b92915050565b6107196012600a61160b565b610727906301c9c380611619565b81565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f19146107d3576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526002825283812033825290915291909120546107af918490610b70565b6001600160a01b0385165f9081526002602090815260408083203384529091529020555b6107de848484610ba8565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead5f9081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d549091906108476012600a61160b565b610855906301c9c380611619565b61085f9190611630565b6108699190611630565b905090565b600b546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156108a4573d5f803e3d5ffd5b50565b5f610707825f196106a1565b5f546001600160a01b031633146108e55760405162461bcd60e51b81526004016108dc90611643565b60405180910390fd5b6101f582106109445760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604482015264657373657360d81b60648201526084016108dc565b5f5b828110156109b0578160035f86868581811061096457610964611663565b905060200201602081019061097991906113de565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556109a981611677565b9050610946565b50505050565b5f546001600160a01b031633146109df5760405162461bcd60e51b81526004016108dc90611643565b600891909155600791909155600955565b5f546001600160a01b03163314610a195760405162461bcd60e51b81526004016108dc90611643565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610a865760405162461bcd60e51b81526004016108dc90611643565b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b5f6107e1338484610ba8565b5f546001600160a01b03163314610ae95760405162461bcd60e51b81526004016108dc90611643565b60048290556005819055610afd818361168f565b6006555050565b5f546001600160a01b03163314610b2d5760405162461bcd60e51b81526004016108dc90611643565b600c805460ff60a01b1916600160a01b8415150217905580610b516012600a61160b565b610b5f906301c9c380611619565b610b6991906116a2565b600d555050565b5f8184841115610b935760405162461bcd60e51b81526004016108dc9190611317565b505f610b9f8486611630565b95945050505050565b600e545f9060ff1615610bc757610bc0848484610d19565b90506107e1565b610bcf610dfc565b15610bdc57610bdc610e6d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260019091529190912054610c2d918490610b70565b6001600160a01b0385165f90815260016020908152604080832093909355600390529081205460ff1680610c7857506001600160a01b0384165f9081526003602052604090205460ff165b610c8c57610c87858486611034565b610c8e565b825b6001600160a01b0385165f90815260016020526040902054909150610cb3908261118d565b6001600160a01b038086165f8181526001602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d069085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600190915291822054610d69918490610b70565b6001600160a01b038086165f908152600160205260408082209390935590851681522054610d97908361118d565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610dea9086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f00000000000000000000000099d96f99309fc5ebe4fc534d104ba71db0912ae11614801590610e395750600e5460ff16155b8015610e4e5750600c54600160a01b900460ff165b8015610869575050600d54305f90815260016020526040902054101590565b600e805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610ead57610ead611663565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110610f0157610f01611663565b6001600160a01b039283166020918202929092010152600c54600d5460405163791ac94760e01b8152919092169163791ac94791610f4a91905f908690309042906004016116c1565b5f604051808303815f87803b158015610f61575f80fd5b505af1158015610f73573d5f803e3d5ffd5b50506006546004544793505f9250610f8b9084611619565b610f9591906116a2565b90505f60065460055484610fa99190611619565b610fb391906116a2565b600a546040519192506001600160a01b03169083156108fc029084905f818181858888f19350505050158015610feb573d5f803e3d5ffd5b50600b546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611023573d5f803e3d5ffd5b5050600e805460ff19169055505050565b5f8215806110425750600654155b1561104e5750816107e1565b6009546001600160a01b037f00000000000000000000000099d96f99309fc5ebe4fc534d104ba71db0912ae181169084160361108d57506008546110cb565b7f00000000000000000000000099d96f99309fc5ebe4fc534d104ba71db0912ae16001600160a01b0316856001600160a01b0316036110cb57506007545b5f6110ff6110da606480611619565b6110f9846110f36006548a6111eb90919063ffffffff16565b906111eb565b90611269565b9050801561117957305f90815260016020526040902054611120908261118d565b305f81815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111709085815260200190565b60405180910390a35b61118385826112aa565b9695505050505050565b5f80611199838561168f565b9050838110156107e15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108dc565b5f825f036111fa57505f610707565b5f6112058385611619565b90508261121285836116a2565b146107e15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108dc565b5f6107e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112eb565b5f6107e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b70565b5f818361130b5760405162461bcd60e51b81526004016108dc9190611317565b505f610b9f84866116a2565b5f6020808352835180828501525f5b8181101561134257858101830151858201604001528201611326565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611378575f80fd5b919050565b5f806040838503121561138e575f80fd5b61139783611362565b946020939093013593505050565b5f805f606084860312156113b7575f80fd5b6113c084611362565b92506113ce60208501611362565b9150604084013590509250925092565b5f602082840312156113ee575f80fd5b6107e182611362565b80358015158114611378575f80fd5b5f805f60408486031215611418575f80fd5b833567ffffffffffffffff8082111561142f575f80fd5b818601915086601f830112611442575f80fd5b813581811115611450575f80fd5b8760208260051b8501011115611464575f80fd5b60209283019550935061147a91860190506113f7565b90509250925092565b5f805f60608486031215611495575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156114bd575f80fd5b6114c683611362565b91506114d460208401611362565b90509250929050565b5f80604083850312156114ee575f80fd5b50508035926020909101359150565b5f806040838503121561150e575f80fd5b611397836113f7565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561156557815f190482111561154b5761154b611517565b8085161561155857918102915b93841c9390800290611530565b509250929050565b5f8261157b57506001610707565b8161158757505f610707565b816001811461159d57600281146115a7576115c3565b6001915050610707565b60ff8411156115b8576115b8611517565b50506001821b610707565b5060208310610133831016604e8410600b84101617156115e6575081810a610707565b6115f0838361152b565b805f190482111561160357611603611517565b029392505050565b5f6107e160ff84168361156d565b808202811582820484141761070757610707611517565b8181038181111561070757610707611517565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161168857611688611517565b5060010190565b8082018082111561070757610707611517565b5f826116bc57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561170f5784516001600160a01b0316835293830193918301916001016116ea565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220b065a9d4a0b68f1acf3b45fb09269a32114a0885043037cb18191479c8704da264736f6c63430008150033

Deployed Bytecode Sourcemap

2979:7094:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4119:48;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4119:48:0;;;;;;;;3235:45;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3235:45:0;;;;;;;;;;;;:::i;5230:216::-;;;;;;;;;;-1:-1:-1;5230:216:0;;;;;:::i;:::-;;:::i;:::-;;;1351:14:1;;1344:22;1326:41;;1314:2;1299:18;5230:216:0;1186:187:1;3749:44:0;;;;;;;;;;;;3790:3;3749:44;;3378:63;;;;;;;;;;;;;:::i;3695:47::-;;;;;;;;;;;;;;;;5748:370;;;;;;;;;;-1:-1:-1;5748:370:0;;;;;:::i;:::-;;:::i;9933:137::-;;;;;;;;;;;;;:::i;2210:103::-;;;;;;;;;;-1:-1:-1;2210:103:0;;;;;:::i;:::-;2265:4;2300:5;-1:-1:-1;;;;;2289:16:0;;;2300:5;;2289:16;;2210:103;3806:33;;;;;;;;;;;;;;;;3334:35;;;;;;;;;;;;3367:2;3334:35;;;;;2074:4:1;2062:17;;;2044:36;;2032:2;2017:18;3334:35:0;1902:184:1;3572:44:0;;;;;;;;;;-1:-1:-1;3572:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8014:105;;;;;;;;;;;;;:::i;:::-;;5454:122;;;;;;;;;;-1:-1:-1;5454:122:0;;;;;:::i;:::-;;:::i;3887:37::-;;;;;;;;;;;;;;;;8821:294;;;;;;;;;;-1:-1:-1;8821:294:0;;;;;:::i;:::-;;:::i;3625:31::-;;;;;;;;;;;;;;;;9123:198;;;;;;;;;;-1:-1:-1;9123:198:0;;;;;:::i;:::-;;:::i;4082:30::-;;;;;;;;;;-1:-1:-1;4082:30:0;;;;-1:-1:-1;;;4082:30:0;;;;;;3450:45;;;;;;;;;;-1:-1:-1;3450:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;2321:128;;;;;;;;;;;;;:::i;5005:78::-;;;;;;;;;;-1:-1:-1;5057:7:0;5075:5;-1:-1:-1;;;;;5075:5:0;5005:78;;;-1:-1:-1;;;;;3435:32:1;;;3417:51;;3405:2;3390:18;5005:78:0;3271:203:1;2023:20:0;;;;;;;;;;-1:-1:-1;2023:20:0;;;;-1:-1:-1;;;;;2023:20:0;;;3287:40;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3287:40:0;;;;;9531:207;;;;;;;;;;-1:-1:-1;9531:207:0;;;;;:::i;:::-;;:::i;4044:29::-;;;;;;;;;;;;;;;5584:156;;;;;;;;;;-1:-1:-1;5584:156:0;;;;;:::i;:::-;;:::i;9329:194::-;;;;;;;;;;-1:-1:-1;9329:194:0;;;;;:::i;:::-;;:::i;5089:133::-;;;;;;;;;;-1:-1:-1;5089:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5191:19:0;;;5173:7;5191:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5089:133;9746:179;;;;;;;;;;-1:-1:-1;9746:179:0;;;;;:::i;:::-;;:::i;3933:35::-;;;;;;;;;;-1:-1:-1;3933:35:0;;;;-1:-1:-1;;;;;3933:35:0;;;3975:29;;;;;;;;;;-1:-1:-1;3975:29:0;;;;-1:-1:-1;;;;;3975:29:0;;;4013:24;;;;;;;;;;-1:-1:-1;4013:24:0;;;;-1:-1:-1;;;;;4013:24:0;;;3663:25;;;;;;;;;;;;;;;;3846:34;;;;;;;;;;;;;;;;5230:216;5334:10;5305:4;5322:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5322:32:0;;;;;;;;;;:41;;;5379:37;5305:4;;5322:32;;5379:37;;;;5357:6;160:25:1;;148:2;133:18;;14:177;5379:37:0;;;;;;;;-1:-1:-1;5434:4:0;5230:216;;;;;:::o;3378:63::-;3429:12;3367:2;3429;:12;:::i;:::-;3416:25;;:10;:25;:::i;:::-;3378:63;:::o;5748:370::-;-1:-1:-1;;;;;5868:19:0;;5848:4;5868:19;;;:11;:19;;;;;;;;5888:10;5868:31;;;;;;;;-1:-1:-1;;5868:52:0;5865:186;;5970:69;;;;;;;;;;;-1:-1:-1;;;5970:69:0;;;;;;;;-1:-1:-1;;;;;5970:19:0;;-1:-1:-1;5970:19:0;;;:11;:19;;;;;5990:10;5970:31;;;;;;;;;;:69;;6006:6;;5970:35;:69::i;:::-;-1:-1:-1;;;;;5936:19:0;;;;;;:11;:19;;;;;;;;5956:10;5936:31;;;;;;;:103;5865:186;6070:40;6084:6;6092:9;6103:6;6070:13;:40::i;:::-;6063:47;;5748:370;;;;;;:::o;9933:137::-;10046:9;:15;;;;3111:42;9986:7;10028:15;;;;;9986:7;;10046:15;3429:12;3367:2;3429;:12;:::i;:::-;3416:25;;:10;:25;:::i;:::-;10014:29;;;;:::i;:::-;:47;;;;:::i;:::-;10006:56;;9933:137;:::o;8014:105::-;8064:14;;8056:55;;-1:-1:-1;;;;;8064:14:0;;;;8089:21;8056:55;;;;;8064:14;8056:55;8064:14;8056:55;8089:21;8064:14;8056:55;;;;;;;;;;;;;;;;;;;;;8014:105::o;5454:122::-;5509:4;5533:35;5541:7;-1:-1:-1;;5533:7:0;:35::i;8821:294::-;2265:4;2300:5;-1:-1:-1;;;;;2300:5:0;2169:10;2289:16;2153:38;;;;-1:-1:-1;;;2153:38:0;;;;;;;:::i;:::-;;;;;;;;;8947:3:::1;8928:22:::0;::::1;8920:71;;;::::0;-1:-1:-1;;;8920:71:0;;6833:2:1;8920:71:0::1;::::0;::::1;6815:21:1::0;6872:2;6852:18;;;6845:30;6911:34;6891:18;;;6884:62;-1:-1:-1;;;6962:18:1;;;6955:35;7007:19;;8920:71:0::1;6631:401:1::0;8920:71:0::1;9007:9;9002:106;9020:20:::0;;::::1;9002:106;;;9090:6;9062:11;:25;9074:9;;9084:1;9074:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9062:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9062:25:0;:34;;-1:-1:-1;;9062:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9042:3:::1;::::0;::::1;:::i;:::-;;;9002:106;;;;8821:294:::0;;;:::o;9123:198::-;2265:4;2300:5;-1:-1:-1;;;;;2300:5:0;2169:10;2289:16;2153:38;;;;-1:-1:-1;;;2153:38:0;;;;;;;:::i;:::-;9222:14:::1;:22:::0;;;;9255:13:::1;:20:::0;;;;9286:18:::1;:27:::0;9123:198::o;2321:128::-;2265:4;2300:5;-1:-1:-1;;;;;2300:5:0;2169:10;2289:16;2153:38;;;;-1:-1:-1;;;2153:38:0;;;;;;;:::i;:::-;2396:1:::1;2380:18:::0;;-1:-1:-1;;;;;;2380:18:0::1;::::0;;2414:27:::1;::::0;3417:51:1;;;2414:27:0::1;::::0;3405:2:1;3390:18;2414:27:0::1;;;;;;;2321:128::o:0;9531:207::-;2265:4;2300:5;-1:-1:-1;;;;;2300:5:0;2169:10;2289:16;2153:38;;;;-1:-1:-1;;;2153:38:0;;;;;;;:::i;:::-;9643:20:::1;:44:::0;;-1:-1:-1;;;;;9643:44:0;;::::1;-1:-1:-1::0;;;;;;9643:44:0;;::::1;;::::0;;;9698:14:::1;:32:::0;;;;;::::1;::::0;::::1;;::::0;;9531:207::o;5584:156::-;5664:4;5688:44;5702:10;5714:9;5725:6;5688:13;:44::i;9329:194::-;2265:4;2300:5;-1:-1:-1;;;;;2300:5:0;2169:10;2289:16;2153:38;;;;-1:-1:-1;;;2153:38:0;;;;;;;:::i;:::-;9417:12:::1;:28:::0;;;9456:6:::1;:16:::0;;;9494:21:::1;9465:7:::0;9432:13;9494:21:::1;:::i;:::-;9483:8;:32:::0;-1:-1:-1;;9329:194:0:o;9746:179::-;2265:4;2300:5;-1:-1:-1;;;;;2300:5:0;2169:10;2289:16;2153:38;;;;-1:-1:-1;;;2153:38:0;;;;;;;:::i;:::-;9842:11:::1;:22:::0;;-1:-1:-1;;;;9842:22:0::1;-1:-1:-1::0;;;9842:22:0;::::1;;;;::::0;;9905:12;3429::::1;3367:2;3429;:12;:::i;:::-;3416:25;::::0;:10:::1;:25;:::i;:::-;9891:26;;;;:::i;:::-;9875:13;:42:::0;-1:-1:-1;;9746:179:0:o;531:192::-;617:7;653:12;645:6;;;;637:29;;;;-1:-1:-1;;;637:29:0;;;;;;;;:::i;:::-;-1:-1:-1;677:9:0;689:5;693:1;689;:5;:::i;:::-;677:17;531:192;-1:-1:-1;;;;;531:192:0:o;6126:602::-;6238:6;;6218:4;;6238:6;;6235:63;;;6254:41;6269:6;6277:9;6288:6;6254:14;:41::i;:::-;6247:48;;;;6235:63;6313:16;:14;:16::i;:::-;6310:35;;;6332:10;:8;:10::i;:::-;6377:53;;;;;;;;;;;-1:-1:-1;;;6377:53:0;;;;;;;;-1:-1:-1;;;;;6377:17:0;;-1:-1:-1;6377:17:0;;;:9;:17;;;;;;;;:53;;6399:6;;6377:21;:53::i;:::-;-1:-1:-1;;;;;6357:17:0;;;;;;:9;:17;;;;;;;;:73;;;;6469:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;6492:22:0;;;;;;:11;:22;;;;;;;;6469:45;6468:93;;6527:34;6535:6;6543;6551:9;6527:7;:34::i;:::-;6468:93;;;6518:6;6468:93;-1:-1:-1;;;;;6597:20:0;;;;;;:9;:20;;;;;;6443:118;;-1:-1:-1;6597:40:0;;6443:118;6597:24;:40::i;:::-;-1:-1:-1;;;;;6574:20:0;;;;;;;:9;:20;;;;;;;:63;;;;6655:43;;;;;;;;;;6683:14;160:25:1;;148:2;133:18;;14:177;6655:43:0;;;;;;;;-1:-1:-1;6716:4:0;;6126:602;-1:-1:-1;;;;6126:602:0:o;6740:330::-;6870:53;;;;;;;;;;;-1:-1:-1;;;6870:53:0;;;;;;;;-1:-1:-1;;;;;6870:17:0;;6833:4;6870:17;;;:9;:17;;;;;;;:53;;6892:6;;6870:21;:53::i;:::-;-1:-1:-1;;;;;6850:17:0;;;;;;;:9;:17;;;;;;:73;;;;6957:20;;;;;;;:32;;6982:6;6957:24;:32::i;:::-;-1:-1:-1;;;;;6934:20:0;;;;;;;:9;:20;;;;;;;:55;;;;7005:35;;;;;;;;;;7033:6;160:25:1;;148:2;133:18;;14:177;7005:35:0;;;;;;;;-1:-1:-1;7058:4:0;6740:330;;;;;:::o;7809:197::-;7858:4;7882:10;-1:-1:-1;;;;;7896:4:0;7882:18;;;;;:38;;-1:-1:-1;7914:6:0;;;;7913:7;7882:38;:62;;;;-1:-1:-1;7933:11:0;;-1:-1:-1;;;7933:11:0;;;;7882:62;:116;;;;-1:-1:-1;;7985:13:0;;7975:4;7957:24;;;;:9;:24;;;;;;:41;;;7809:197::o;8127:686::-;4220:6;:13;;-1:-1:-1;;4220:13:0;4229:4;4220:13;;;8202:16:::1;::::0;;8216:1:::1;8202:16:::0;;;;;::::1;::::0;;-1:-1:-1;;8202:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;8202:16:0::1;8178:40;;8247:4;8229;8234:1;8229:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;8229:23:0::1;;;-1:-1:-1::0;;;;;8229:23:0::1;;;::::0;::::1;8273:4;8263;8268:1;8263:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8263:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;8290:6:::1;::::0;8362:13:::1;::::0;8290:189:::1;::::0;-1:-1:-1;;;8290:189:0;;:6;;;::::1;::::0;:57:::1;::::0;:189:::1;::::0;8362:13;8290:6:::1;::::0;8406:4;;8433::::1;::::0;8453:15:::1;::::0;8290:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8604:8:0::1;::::0;8588:12:::1;::::0;8512:21:::1;::::0;-1:-1:-1;8492:17:0::1;::::0;-1:-1:-1;8576:24:0::1;::::0;8512:21;8576:24:::1;:::i;:::-;8575:37;;;;:::i;:::-;8546:66;;8623:20;8669:8;;8659:6;;8647:9;:18;;;;:::i;:::-;8646:31;;;;:::i;:::-;8698:20;::::0;8690:58:::1;::::0;8623:54;;-1:-1:-1;;;;;;8698:20:0::1;::::0;8690:58;::::1;;;::::0;8729:18;;8698:20:::1;8690:58:::0;8698:20;8690:58;8729:18;8698:20;8690:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;8767:14:0::1;::::0;8759:46:::1;::::0;-1:-1:-1;;;;;8767:14:0;;::::1;::::0;8759:46;::::1;;;::::0;8792:12;;8767:14:::1;8759:46:::0;8767:14;8759:46;8792:12;8767:14;8759:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4238:6:0;:14;;-1:-1:-1;;4238:14:0;;;-1:-1:-1;;;8127:686:0:o;7078:723::-;7164:7;7187:11;;;:28;;-1:-1:-1;7202:8:0;;:13;7187:28;7184:72;;;-1:-1:-1;7238:6:0;7231:13;;7184:72;7289:18;;-1:-1:-1;;;;;7336:4:0;7323:17;;;;;;7320:154;;-1:-1:-1;7370:14:0;;7320:154;;;7415:4;-1:-1:-1;;;;;7405:14:0;:6;-1:-1:-1;;;;;7405:14:0;;7402:72;;-1:-1:-1;7449:13:0;;7402:72;7486:17;7506:62;7547:20;3790:3;;7547:20;:::i;:::-;7506:36;7531:10;7506:20;7517:8;;7506:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:::-;:40;;:62::i;:::-;7486:82;-1:-1:-1;7584:13:0;;7581:172;;7658:4;7640:24;;;;:9;:24;;;;;;:39;;7669:9;7640:28;:39::i;:::-;7631:4;7613:24;;;;:9;:24;;;;;;;:66;;;;7699:42;;-1:-1:-1;;;;;7699:42:0;;;;;;;7731:9;160:25:1;;148:2;133:18;;14:177;7699:42:0;;;;;;;;7581:172;7772:21;:6;7783:9;7772:10;:21::i;:::-;7765:28;7078:723;-1:-1:-1;;;;;;7078:723:0:o;202:181::-;260:7;;292:5;296:1;292;:5;:::i;:::-;280:17;;321:1;316;:6;;308:46;;;;-1:-1:-1;;;308:46:0;;8980:2:1;308:46:0;;;8962:21:1;9019:2;8999:18;;;8992:30;9058:29;9038:18;;;9031:57;9105:18;;308:46:0;8778:351:1;729:250:0;787:7;811:1;816;811:6;807:47;;-1:-1:-1;841:1:0;834:8;;807:47;866:9;878:5;882:1;878;:5;:::i;:::-;866:17;-1:-1:-1;911:1:0;902:5;906:1;866:17;902:5;:::i;:::-;:10;894:56;;;;-1:-1:-1;;;894:56:0;;9336:2:1;894:56:0;;;9318:21:1;9375:2;9355:18;;;9348:30;9414:34;9394:18;;;9387:62;-1:-1:-1;;;9465:18:1;;;9458:31;9506:19;;894:56:0;9134:397:1;985:132:0;1043:7;1070:39;1074:1;1077;1070:39;;;;;;;;;;;;;;;;;:3;:39::i;389:136::-;447:7;474:43;478:1;481;474:43;;;;;;;;;;;;;;;;;:3;:43::i;1123:189::-;1209:7;1244:12;1237:5;1229:28;;;;-1:-1:-1;;;1229:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1268:9:0;1280:5;1284:1;1280;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:173::-;817:20;;-1:-1:-1;;;;;866:31:1;;856:42;;846:70;;912:1;909;902:12;846:70;749:173;;;:::o;927:254::-;995:6;1003;1056:2;1044:9;1035:7;1031:23;1027:32;1024:52;;;1072:1;1069;1062:12;1024:52;1095:29;1114:9;1095:29;:::i;:::-;1085:39;1171:2;1156:18;;;;1143:32;;-1:-1:-1;;;927:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1711:186::-;1770:6;1823:2;1811:9;1802:7;1798:23;1794:32;1791:52;;;1839:1;1836;1829:12;1791:52;1862:29;1881:9;1862:29;:::i;2091:160::-;2156:20;;2212:13;;2205:21;2195:32;;2185:60;;2241:1;2238;2231:12;2256:689;2348:6;2356;2364;2417:2;2405:9;2396:7;2392:23;2388:32;2385:52;;;2433:1;2430;2423:12;2385:52;2473:9;2460:23;2502:18;2543:2;2535:6;2532:14;2529:34;;;2559:1;2556;2549:12;2529:34;2597:6;2586:9;2582:22;2572:32;;2642:7;2635:4;2631:2;2627:13;2623:27;2613:55;;2664:1;2661;2654:12;2613:55;2704:2;2691:16;2730:2;2722:6;2719:14;2716:34;;;2746:1;2743;2736:12;2716:34;2801:7;2794:4;2784:6;2781:1;2777:14;2773:2;2769:23;2765:34;2762:47;2759:67;;;2822:1;2819;2812:12;2759:67;2853:4;2845:13;;;;-1:-1:-1;2877:6:1;-1:-1:-1;2902:37:1;;2918:20;;;-1:-1:-1;2902:37:1;:::i;:::-;2892:47;;2256:689;;;;;:::o;2950:316::-;3027:6;3035;3043;3096:2;3084:9;3075:7;3071:23;3067:32;3064:52;;;3112:1;3109;3102:12;3064:52;-1:-1:-1;;3135:23:1;;;3205:2;3190:18;;3177:32;;-1:-1:-1;3256:2:1;3241:18;;;3228:32;;2950:316;-1:-1:-1;2950:316:1:o;3479:260::-;3547:6;3555;3608:2;3596:9;3587:7;3583:23;3579:32;3576:52;;;3624:1;3621;3614:12;3576:52;3647:29;3666:9;3647:29;:::i;:::-;3637:39;;3695:38;3729:2;3718:9;3714:18;3695:38;:::i;:::-;3685:48;;3479:260;;;;;:::o;3744:248::-;3812:6;3820;3873:2;3861:9;3852:7;3848:23;3844:32;3841:52;;;3889:1;3886;3879:12;3841:52;-1:-1:-1;;3912:23:1;;;3982:2;3967:18;;;3954:32;;-1:-1:-1;3744:248:1:o;3997:::-;4062:6;4070;4123:2;4111:9;4102:7;4098:23;4094:32;4091:52;;;4139:1;4136;4129:12;4091:52;4162:26;4178:9;4162:26;:::i;4476:127::-;4537:10;4532:3;4528:20;4525:1;4518:31;4568:4;4565:1;4558:15;4592:4;4589:1;4582:15;4608:422;4697:1;4740:5;4697:1;4754:270;4775:7;4765:8;4762:21;4754:270;;;4834:4;4830:1;4826:6;4822:17;4816:4;4813:27;4810:53;;;4843:18;;:::i;:::-;4893:7;4883:8;4879:22;4876:55;;;4913:16;;;;4876:55;4992:22;;;;4952:15;;;;4754:270;;;4758:3;4608:422;;;;;:::o;5035:806::-;5084:5;5114:8;5104:80;;-1:-1:-1;5155:1:1;5169:5;;5104:80;5203:4;5193:76;;-1:-1:-1;5240:1:1;5254:5;;5193:76;5285:4;5303:1;5298:59;;;;5371:1;5366:130;;;;5278:218;;5298:59;5328:1;5319:10;;5342:5;;;5366:130;5403:3;5393:8;5390:17;5387:43;;;5410:18;;:::i;:::-;-1:-1:-1;;5466:1:1;5452:16;;5481:5;;5278:218;;5580:2;5570:8;5567:16;5561:3;5555:4;5552:13;5548:36;5542:2;5532:8;5529:16;5524:2;5518:4;5515:12;5511:35;5508:77;5505:159;;;-1:-1:-1;5617:19:1;;;5649:5;;5505:159;5696:34;5721:8;5715:4;5696:34;:::i;:::-;5766:6;5762:1;5758:6;5754:19;5745:7;5742:32;5739:58;;;5777:18;;:::i;:::-;5815:20;;5035:806;-1:-1:-1;;;5035:806:1:o;5846:140::-;5904:5;5933:47;5974:4;5964:8;5960:19;5954:4;5933:47;:::i;5991:168::-;6064:9;;;6095;;6112:15;;;6106:22;;6092:37;6082:71;;6133:18;;:::i;6164:128::-;6231:9;;;6252:11;;;6249:37;;;6266:18;;:::i;6297:329::-;6499:2;6481:21;;;6538:1;6518:18;;;6511:29;-1:-1:-1;;;6571:2:1;6556:18;;6549:36;6617:2;6602:18;;6297:329::o;7037:127::-;7098:10;7093:3;7089:20;7086:1;7079:31;7129:4;7126:1;7119:15;7153:4;7150:1;7143:15;7169:135;7208:3;7229:17;;;7226:43;;7249:18;;:::i;:::-;-1:-1:-1;7296:1:1;7285:13;;7169:135::o;7309:125::-;7374:9;;;7395:10;;;7392:36;;;7408:18;;:::i;7439:217::-;7479:1;7505;7495:132;;7549:10;7544:3;7540:20;7537:1;7530:31;7584:4;7581:1;7574:15;7612:4;7609:1;7602:15;7495:132;-1:-1:-1;7641:9:1;;7439:217::o;7793:980::-;8055:4;8103:3;8092:9;8088:19;8134:6;8123:9;8116:25;8160:2;8198:6;8193:2;8182:9;8178:18;8171:34;8241:3;8236:2;8225:9;8221:18;8214:31;8265:6;8300;8294:13;8331:6;8323;8316:22;8369:3;8358:9;8354:19;8347:26;;8408:2;8400:6;8396:15;8382:29;;8429:1;8439:195;8453:6;8450:1;8447:13;8439:195;;;8518:13;;-1:-1:-1;;;;;8514:39:1;8502:52;;8609:15;;;;8574:12;;;;8550:1;8468:9;8439:195;;;-1:-1:-1;;;;;;;8690:32:1;;;;8685:2;8670:18;;8663:60;-1:-1:-1;;;8754:3:1;8739:19;8732:35;8651:3;7793:980;-1:-1:-1;;;7793:980:1:o

Swarm Source

ipfs://b065a9d4a0b68f1acf3b45fb09269a32114a0885043037cb18191479c8704da2

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  ]
[ 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.