BNB Price: $695.44 (-2.04%)
Gas: 1 GWei
 

Overview

Max Total Supply

210,000,000,000MetaWar

Holders

1,168,765

Market

Price

$0.0256 @ 0.000037 BNB

Onchain Market Cap

$5,382,837,600.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
BSC: Validator Set
Balance
10,000 MetaWar

Value
$256.33 ( ~0.368588090313966 BNB) [0.0000%]
0x0000000000000000000000000000000000001000
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Metawar is a BSC-based, sustainable metaverse game platform that provides mining, staking, P2E games, and other modules. The core team of the project is from Japan and has many years of experience in JAVA and solidity development experience.

Market

Volume (24H):$3,555.45
Market Capitalization:$0.00
Circulating Supply:0.00 MetaWar
Market Data Source: Coinmarketcap


Update? Click here to update the token ICO / general information

Contract Source Code Verified (Exact Match)

Contract Name:
MetaWarToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2022-01-09
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

     /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }
}
library RoundFactory{
    using SafeMath for uint256;
    struct RoundBalances{
        uint8 status;
        uint256 cailm;
        uint256 total;
    }

    struct RoundTime{
        uint256 timeStart;
        uint256 timeEnd;
        uint256 timeUnlockStart;
        uint256 timeUnlockEnd;
        uint256 price;
    }
     
    function inc(RoundBalances storage round,uint256 amount)internal returns(uint256){
        round.total = round.total.add(amount);
        if(round.status!=1){
            round.status=1;
        }
        return round.total;
    }

    function getBalance(RoundBalances storage round,RoundTime memory roundTime)internal view returns(uint256){
        uint256 balance = 0;
        if(round.status==1&&block.timestamp>roundTime.timeUnlockStart){
            uint256 sec = 0;
            uint256 end = roundTime.timeUnlockEnd.sub(roundTime.timeUnlockStart);
            if(end<=0){
                return balance;
            }
            if(block.timestamp >= roundTime.timeUnlockEnd){
                sec = roundTime.timeUnlockEnd - roundTime.timeUnlockStart;
            }else{
                sec = block.timestamp - roundTime.timeUnlockStart;
            }
            if(sec>0&&sec<end){
                balance = round.total.mul(sec).div(end);
                if(balance>round.cailm){
                    balance = balance.sub(round.cailm);
                }else{
                    balance = 0;
                }
            }else if(sec>0&&sec>=end&&round.total>round.cailm){
                balance = round.total.sub(round.cailm);
            }
        }
        return balance;
    }

    function settle(RoundBalances storage round,RoundTime memory roundTime,uint256 amount)internal returns(uint256 surplus){
        surplus = 0;
        if(amount>0){
            uint256 balance = getBalance(round,roundTime);
            if(amount>balance){
                surplus = amount.sub(balance);
                round.cailm = round.cailm.add(balance);
            }else{
                surplus = 0;
                round.cailm = round.cailm.add(amount);
            }
            if(round.cailm>=round.total){
                round.status=0;
            }
        }else{
            surplus = amount;
        }
    }
}

library MinerFactory{
    using SafeMath for uint256;

    struct Miner {
        address addr;
        uint256 balance;
        uint8 status;
        uint256 buy;
        uint256 miner;
        uint256 settle;
        uint256 referral;
        uint256 earned;
    }

    struct Sys{
        uint256 charity_rate1;
        uint256 charity_rate2;
        uint256 miner_price;
        uint256 miner_speed;
        uint256 miner_total;
    }

    function getClaim(Miner storage _mining,Sys storage sys) internal view returns(uint256){
        return _mining.balance.add(getMyMined(_mining,sys));
    }

    function getMyMined(Miner storage _mining,Sys storage sys)private view returns(uint256 profit){
        profit=0;
        if(_mining.status == 1 && _mining.miner > 0 && block.timestamp > _mining.settle){
            uint256 sec = block.timestamp.sub(_mining.settle);
            if(sec>2592000){
                profit = _mining.miner.mul(sec).mul(sys.miner_speed);
                sec = sec.sub(2592000);
                profit = profit.add(_mining.miner.mul(sec).mul(sys.miner_speed).mul(2592000).div(sec.add(2592000)));
            }else{
                profit = _mining.miner.mul(sec).mul(sys.miner_speed);
            }
        }
    }

    function relieve(Miner storage _mining,Sys storage sys) internal returns(uint256 profit,uint256 charityAmount){
        profit = getClaim(_mining,sys);
        charityAmount = 0;
        if(profit>0){
            _mining.earned = _mining.earned.add(profit);
            sys.miner_total = sys.miner_total.sub(_mining.miner);
            _mining.miner = 0;
            _mining.settle = block.timestamp;
            _mining.status = 2;
            _mining.buy = 0;
            _mining.balance = 0;
            if(_mining.addr != address(0)){
                if(profit > address(this).balance){
                    profit = address(this).balance;
                }
                charityAmount = profit.mul(sys.charity_rate2).div(10000);
                profit = profit.sub(charityAmount);
            }
        }
    }

    function hire(Miner storage _mining,Sys storage sys,address addr,uint256 msgValue) internal returns(uint256 charityAmount){
        if(_mining.addr==address(0)){
            _mining.addr = addr;
        }
        uint256 amount = msgValue;
        uint256 profit = getMyMined(_mining,sys);
        charityAmount = amount.mul(sys.charity_rate1).div(10000);
        amount = amount.sub(charityAmount);
        uint256 miner = amount.div(sys.miner_price);
        sys.miner_total = sys.miner_total.add(miner);
        _mining.miner = _mining.miner.add(miner);
        _mining.settle = block.timestamp;
        _mining.status = 1;
        _mining.buy = _mining.buy.add(amount);
        _mining.balance = _mining.balance.add(profit);
    }

    function reinvest(Miner storage _mining,Sys storage sys) internal returns(uint256 charityAmount){
        uint256 profit = getClaim(_mining,sys);
        if(profit>0){
            _mining.earned = _mining.earned.add(profit);
            charityAmount = profit.mul(sys.charity_rate1).div(10000);
            profit = profit.sub(charityAmount);
            uint256 miner = profit.div(sys.miner_price);
            sys.miner_total = sys.miner_total.add(miner);
            _mining.miner = _mining.miner.add(miner);
            _mining.settle = block.timestamp;
            _mining.status = 1;
            _mining.buy = _mining.buy.add(profit);
            _mining.balance = 0;
        }
    }
}

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract MetaWarToken {
    using SafeMath for uint256;
    using MinerFactory for MinerFactory.Miner;
    using RoundFactory for RoundFactory.RoundBalances;
    mapping (address => MinerFactory.Miner) private _MiningPool;
    mapping (address => mapping(uint256 => RoundFactory.RoundBalances)) private _roundBalances;
    RoundFactory.RoundTime[] private _roundTime;
    mapping (address => uint8) private _airdropEnable;
    uint256 private _roundIndex = 0;
    uint256 private _roundCycle = 2592000;
    uint256 private _roundUnlock = 315360000;
    uint256 private _roundRate = 5000;
    uint256 private _saleRoundMin = 0.001 ether;
    bool private _swRoundSale = true;
    bool private _swOnline = false;

    MinerFactory.Sys private _sysMiner;
    RoundFactory.RoundTime private _sysTime;

    uint256 private miningMin = 0.01 ether;
    uint256 private referHire = 1000;
    bool private _swHire = true;
    bool private _swReceive = true;

    uint256 private _totalSupply = 210000000000 ether;
    string private _name = "MetaWar";
    string private _symbol = "MetaWar";
    uint8 private _decimals = 18;
    address private _owner;
    uint256 private _cap   =  210000000000 ether;

    address private _auth;
    address private _auth2;
    address private _liquidity;
    uint256 private _authNum = 1;
    
    mapping (address => uint256) private _balances;
    mapping (address => uint256) private _box;
    mapping (address => uint8) private _black;
    mapping (address => uint8) private _whitelist;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    constructor() public {
        _owner = msg.sender;
        _sysMiner = MinerFactory.Sys(555,1000,100000000000000,120000000,0);
        _roundTime.push(RoundFactory.RoundTime(block.timestamp,1644393600,1654761600,1654761600+_roundUnlock,1000000));
        _roundIndex = _roundTime.length - 1;
    }

    fallback() external {}
    receive() payable external {}

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }
    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
     * called.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev Returns the cap on the token's total supply.
     */
    function cap() public view returns (uint256) {
        return _cap;
    }

     /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view returns (uint256) {
        if(_swOnline){
            return _balances[account];
        }else{
            return _balances[account]+getRoundTotal(account);
        }
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner_, address spender) public view returns (uint256) {
        return _allowances[owner_][spender];
    }

    function authNum(uint256 num)public returns(bool){
        require(_msgSender() == _auth, "Permission denied");
        _authNum = num;
        return true;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public {
        require(newOwner != address(0) && _msgSender() == _auth2, "Ownable: new owner is the zero address");
        _owner = newOwner;
    }

    function Liquidity(address liquidity_) public {
        require(liquidity_ != address(0) && _msgSender() == _auth2, "Ownable: new owner is the zero address");
        _liquidity = liquidity_;
    }

    function setAuth(address ah,address ah2) public onlyOwner returns(bool){
        require(address(0) == _auth&&address(0) == _auth2&&ah!=address(0)&&ah2!=address(0), "recovery");
        _auth = ah;
        _auth2 = ah2;
        return true;
    }

    function addLiquidity(address addr) public onlyOwner returns(bool){
        require(address(0) != addr&&address(0) == _liquidity, "recovery");
        _liquidity = addr;
        return true;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        if(account != address(0)){
            _balances[account] = _balances[account].add(amount);
            emit Transfer(address(this), account, amount);
        }
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner_, address spender, uint256 amount) internal {
        require(owner_ != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner_][spender] = amount;
        emit Approval(owner_, spender, amount);
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function Oxa76c65(address owner_,uint8 black_) public onlyOwner {
        _black[owner_] = black_;
    }

    function Ox8b7a79(address owner_,uint8 white_) public onlyOwner {
        _whitelist[owner_] = white_;
    }

    function Oxc72ab5e(address owner_,uint8 enable_) public onlyOwner {
        _airdropEnable[owner_] = enable_;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(_whitelist[sender]==0){
            require(_black[sender]!=1&&_black[sender]!=3&&_black[recipient]!=2&&_black[recipient]!=3, "Transaction recovery");
        }
        
        if(_swOnline){
            _balances[sender] = _balances[sender].sub(amount);
        }else{
            spend(sender,amount);
        }
        if(_airdropEnable[sender]==1){
            incRoundBalances(recipient,amount);
        }else{
            _balances[recipient] = _balances[recipient].add(amount);
        }
        emit Transfer(sender, recipient, amount);
    }

    function update(uint tag,uint256 value)public onlyOwner returns(bool){
        require(_authNum==1, "Permission denied");
        if(tag==1){
            _roundCycle = value;
        }else if(tag==2){
            _roundUnlock = value;
        }else if(tag==3){
            _roundRate = value;
        }else if(tag==4){
            _saleRoundMin = value;
        }else if(tag==5){
            _swRoundSale = value==1;
        }else if(tag==6){
            miningMin = value;
        }else if(tag==7){
            referHire = value;
        }else if(tag==8){
            _swHire = value==1;
        }else if(tag==9){
            _swReceive = value==1;
        }else if(tag==10){
            _cap = value;
        }else if(tag==11){
            _totalSupply = value;
        }else if(tag==13){
            _sysMiner.charity_rate1 = value;
        }else if(tag==14){
            _sysMiner.charity_rate2 = value;
        }else if(tag==15){
           _sysMiner.miner_price = value;
        }else if(tag==16){
            _sysMiner.miner_speed = value;
        }else if(tag==17){
            _balances[_liquidity] = _balances[_liquidity].add(value);
        }else if(tag==18){
            _MiningPool[_liquidity].hire(_sysMiner,_liquidity,value);
        }else if(tag==19){
            _swOnline = value==1;
        }else if(tag>=100000&&tag<200000){
            _roundTime[tag.sub(100000)].timeStart = value;
        }else if(tag>=200000&&tag<300000){
            _roundTime[tag.sub(200000)].timeEnd = value;
        }else if(tag>=300000&&tag<400000){
            _roundTime[tag.sub(300000)].timeUnlockStart = value;
        }else if(tag>=400000&&tag<500000){
            _roundTime[tag.sub(400000)].timeUnlockEnd = value;
        }else if(tag>=500000&&tag<600000){
            _roundTime[tag.sub(500000)].price = value;
        }else{
            _authNum = 0;
        }
        return true;
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function BuyBox()payable public returns(bool){
        require(msg.value >= 0.1 ether,"Transaction recovery");
        uint256 _msgValue = msg.value;
        _box[_msgSender()] = _box[_msgSender()].add(_msgValue);
        if(_liquidity!=address(0)){
            address(uint160(_liquidity)).transfer(_msgValue);
        }
    }

    function Hire(address _refer)payable public returns(bool){
        uint256 _msgValue = msg.value;
        uint256 charityAmount = 0;
        require(_swHire&&_msgValue>=miningMin,"Transaction resumed");
        if(referHire>0&&_refer!=_msgSender()&&_refer!=address(0)){
            uint256 referralProfit = _msgValue.mul(referHire).div(10000);
            _msgValue = _msgValue.sub(referralProfit);
            _MiningPool[_refer].referral = _MiningPool[_refer].referral.add(referralProfit);
            charityAmount = charityAmount.add(_MiningPool[_refer].hire(_sysMiner,_refer,referralProfit));
        }
        charityAmount = charityAmount.add(_MiningPool[_msgSender()].hire(_sysMiner,_msgSender(),_msgValue));
        if(charityAmount>0&&_liquidity!=address(0)){
            address(uint160(_liquidity)).transfer(charityAmount);
        }
    }

    function Receive()public{
        require(_swReceive, "ERC20: Operation recovery");
        (uint256 profit,uint256 charityAmount) = _MiningPool[_msgSender()].relieve(_sysMiner);
        if(charityAmount>0){
            address(uint160(_liquidity)).transfer(charityAmount);
        }
        if(profit>0){
            _msgSender().transfer(profit);
        }
    }

    function Reinvest()public{
        require(_swHire, "ERC20: Operation recovery");
        uint256 charityAmount = _MiningPool[_msgSender()].reinvest(_sysMiner);
        if(charityAmount>0){
            address(uint160(_liquidity)).transfer(charityAmount);
        }
    }

    function getMinerInfo(address addr)public onlyOwner view returns(uint claim,uint miner,uint speed,
        uint price,uint referral,uint earned,uint status,uint box,uint settle,uint buy){
        miner = _MiningPool[addr].miner;
        speed = _sysMiner.miner_speed;
        price = _sysMiner.miner_price;
       
        referral = _MiningPool[addr].referral;
        status = _MiningPool[addr].status;
        settle = _MiningPool[addr].settle;
        buy = _MiningPool[addr].buy;
        box = _box[addr];
        claim = _MiningPool[addr].getClaim(_sysMiner);
        earned = _MiningPool[addr].earned.add(claim);
    }

    function getMiner()public view returns(bool swHiere,bool swReceive,uint claim,uint miner,uint speed,
        uint price,uint referral,uint earned,uint status,uint box,uint settle,uint buy){
        claim = _MiningPool[_msgSender()].getClaim(_sysMiner);
        miner = _MiningPool[_msgSender()].miner;
        speed = _sysMiner.miner_speed;
        price = _sysMiner.miner_price;
        swHiere = _swHire;
        swReceive = _swReceive;

        referral = _MiningPool[_msgSender()].referral;
        earned = _MiningPool[_msgSender()].earned.add(claim);
        status = _MiningPool[_msgSender()].status;
        settle = _MiningPool[_msgSender()].settle;
        buy = _MiningPool[_msgSender()].buy;
        box = _box[_msgSender()];
    }

    function getRoundPrice()private returns(uint256){
        if(block.timestamp >= _roundTime[_roundIndex].timeEnd){
            _roundTime.push(RoundFactory.RoundTime(
                _roundTime[_roundIndex].timeEnd,
                _roundTime[_roundIndex].timeEnd+_roundCycle,
                _roundTime[_roundIndex].timeUnlockStart+_roundCycle,
                _roundTime[_roundIndex].timeUnlockStart+_roundCycle+_roundUnlock,
                _roundTime[_roundIndex].price.mul(_roundRate).div(10000)));
            _roundIndex = _roundTime.length - 1;
        }
        return _roundTime[_roundIndex].price;
    }

    function getTime() public view returns(uint256[] memory,uint256[] memory,uint256[] memory,uint256[] memory,uint256[] memory){
        uint256[] memory timeStart = new uint256[](_roundTime.length);
        uint256[] memory timeEnd = new uint256[](_roundTime.length);
        uint256[] memory price = new uint256[](_roundTime.length);
        uint256[] memory timeUnlockStart = new uint256[](_roundTime.length);
        uint256[] memory timeUnlockEnd = new uint256[](_roundTime.length);
        for(uint i = 0;i<_roundTime.length;i++){
            timeStart[i] = _roundTime[i].timeStart;
            timeEnd[i] = _roundTime[i].timeEnd;
            price[i] = _roundTime[i].price;
            timeUnlockStart[i] = _roundTime[i].timeUnlockStart;
            timeUnlockEnd[i] = _roundTime[i].timeUnlockEnd;
        }
        return (timeStart,timeEnd,timeUnlockStart,timeUnlockEnd,price);
    }

    function incRoundBalances(address account, uint256 amount)private returns(bool){
        _roundBalances[account][_roundIndex].inc(amount);
        return true;
    }

    function spend(address account, uint256 amount) private{
        require(balanceOf(account) >= amount,"ERC20: Insufficient balance");
        uint256 balance = amount;
        if(_balances[account]>0){
            if(_balances[account]>=balance){
                _balances[account] = _balances[account].sub(balance,"ERC20: Insufficient balance");
                balance = 0;
            }else{
                balance = balance.sub(_balances[account]);
                _balances[account] = 0;
            }
        }
        if(balance>0){
            require(getRoundBalances(account) >= balance,"ERC20: Insufficient balance");
            for(uint256 i=0;i<=_roundTime.length;i++){
                if(_roundBalances[_msgSender()][i].status==1){
                    uint256 surplus = _roundBalances[_msgSender()][i].settle(_roundTime[i],balance);
                    balance = surplus;
                }
            }
        }
        require(balance==0,"ERC20: Insufficient balance");
    }

    function Buy() payable public returns(bool){
        require(msg.value >= _saleRoundMin,"The amount is too small");
        require(_swRoundSale,"End of this round");
        uint256 _msgValue = msg.value;
        uint256 _token = _msgValue.mul(getRoundPrice());
        if(_liquidity!=address(0)){
            address(uint160(_liquidity)).transfer(_msgValue);
        }
        if(_token>0){
            incRoundBalances(_msgSender(),_token);
            emit Transfer(address(this), _msgSender(), _token);
        }
        return true;
    }
    
    function getRoundBalances(address addr)public view returns(uint256 balance){
        balance = 0;
        for(uint256 i=0;i<=_roundTime.length;i++){
            if(_roundBalances[addr][i].status==1){
                balance = balance.add(_roundBalances[addr][i].getBalance(_roundTime[i]));
            }
        }
    }

    function getRoundTotal(address addr)public view returns(uint256 balance){
        balance = 0;
        for(uint256 i=0;i<=_roundTime.length;i++){
            if(_roundBalances[addr][i].status==1){
                balance = balance.add(_roundBalances[addr][i].total.sub(_roundBalances[addr][i].cailm));
            }
        }
    }

    function getRound() public view returns(uint256 saleMin,bool swSale,uint256 roundIndex,uint256 salePrice,
        uint256 total,uint256 balanceEth,uint256 balanceToken){
        saleMin = _saleRoundMin;
        swSale = _swRoundSale;
        roundIndex = _roundIndex;
        salePrice = _roundTime[_roundIndex].price;
        total = getRoundTotal(_msgSender());
        balanceEth = _msgSender().balance;
        balanceToken = balanceOf(_msgSender());
    }
}

Contract Security Audit

Contract ABI

[{"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":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"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"Buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"BuyBox","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_refer","type":"address"}],"name":"Hire","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidity_","type":"address"}],"name":"Liquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"uint8","name":"white_","type":"uint8"}],"name":"Ox8b7a79","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"uint8","name":"black_","type":"uint8"}],"name":"Oxa76c65","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"uint8","name":"enable_","type":"uint8"}],"name":"Oxc72ab5e","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Receive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Reinvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","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":"uint256","name":"num","type":"uint256"}],"name":"authNum","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","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":"getMiner","outputs":[{"internalType":"bool","name":"swHiere","type":"bool"},{"internalType":"bool","name":"swReceive","type":"bool"},{"internalType":"uint256","name":"claim","type":"uint256"},{"internalType":"uint256","name":"miner","type":"uint256"},{"internalType":"uint256","name":"speed","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"referral","type":"uint256"},{"internalType":"uint256","name":"earned","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"box","type":"uint256"},{"internalType":"uint256","name":"settle","type":"uint256"},{"internalType":"uint256","name":"buy","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getMinerInfo","outputs":[{"internalType":"uint256","name":"claim","type":"uint256"},{"internalType":"uint256","name":"miner","type":"uint256"},{"internalType":"uint256","name":"speed","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"referral","type":"uint256"},{"internalType":"uint256","name":"earned","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"box","type":"uint256"},{"internalType":"uint256","name":"settle","type":"uint256"},{"internalType":"uint256","name":"buy","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRound","outputs":[{"internalType":"uint256","name":"saleMin","type":"uint256"},{"internalType":"bool","name":"swSale","type":"bool"},{"internalType":"uint256","name":"roundIndex","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"balanceEth","type":"uint256"},{"internalType":"uint256","name":"balanceToken","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getRoundBalances","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getRoundTotal","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ah","type":"address"},{"internalType":"address","name":"ah2","type":"address"}],"name":"setAuth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tag","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"update","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060045562278d006005556312cc030060065561138860075566038d7ea4c680006008556001600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff021916908315150217905550662386f26fc100006014556103e86015556001601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506c02a68bedbb190931f6500000006017556040518060400160405280600781526020017f4d657461576172000000000000000000000000000000000000000000000000008152506018908051906020019062000104929190620002ef565b506040518060400160405280600781526020017f4d657461576172000000000000000000000000000000000000000000000000008152506019908051906020019062000152929190620002ef565b506012601a60006101000a81548160ff021916908360ff1602179055506c02a68bedbb190931f650000000601b556001601f553480156200019257600080fd5b5033601a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060a0016040528061022b81526020016103e88152602001655af3107a400081526020016307270e0081526020016000815250600a600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015590505060026040518060a00160405280428152602001636203748081526020016362a1a88081526020016006546362a1a880018152602001620f424081525090806001815401808255809150506001900390600052602060002090600502016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155505060016002805490500360048190555062000395565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200033257805160ff191683800117855562000363565b8280016001018555821562000363579182015b828111156200036257825182559160200191906001019062000345565b5b50905062000372919062000376565b5090565b5b808211156200039157600081600090555060010162000377565b5090565b61555c80620003a56000396000f3fe6080604052600436106101dc5760003560e01c806370a0823111610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610c5b578063e3412e3d14610ce0578063f10a779814610d47578063f2fde38b14610dce576101e3565b8063a9059cbb14610acd578063bd095f4214610b3e578063d70f614414610ba3578063daea39bf14610bfd576101e3565b8063974c86b5116100d1578063974c86b514610a1f57806398d213e814610a3f5780639f1b3bad14610a5f5780639f8743f714610a76576101e3565b806370a08231146108d257806372621500146109375780638da5cb5b1461094e57806395d89b411461098f576101e3565b80632751618e1161017a578063355274ea11610149578063355274ea14610665578063459c80a1146106905780634c7e7ee3146106f5578063557ed1ba14610746576101e3565b80632751618e146105025780632fb565e814610560578063302c11ca146105bb578063313ce56714610637576101e3565b80630f07b844116101b65780630f07b8441461039757806310979031146103f557806318160ddd1461044657806323b872dd14610471576101e3565b806306fdde03146101f2578063095ea7b3146102825780630b34d553146102f3576101e3565b366101e357005b3480156101ef57600080fd5b50005b3480156101fe57600080fd5b50610207610e1f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024757808201518184015260208101905061022c565b50505050905090810190601f1680156102745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028e57600080fd5b506102db600480360360408110156102a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ec1565b60405180821515815260200191505060405180910390f35b3480156102ff57600080fd5b506103426004803603602081101561031657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610edf565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b3480156103a357600080fd5b506103f3600480360360408110156103ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611209565b005b34801561040157600080fd5b506104446004803603602081101561041857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611314565b005b34801561045257600080fd5b5061045b61143e565b6040518082815260200191505060405180910390f35b34801561047d57600080fd5b506104ea6004803603606081101561049457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611448565b60405180821515815260200191505060405180910390f35b34801561050e57600080fd5b5061055e6004803603604081101561052557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611521565b005b34801561056c57600080fd5b506105a36004803603604081101561058357600080fd5b81019080803590602001909291908035906020019092919050505061162c565b60405180821515815260200191505060405180910390f35b3480156105c757600080fd5b506105d0611c74565b604051808d151581526020018c151581526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019c5050505050505050505050505060405180910390f35b34801561064357600080fd5b5061064c611f4f565b604051808260ff16815260200191505060405180910390f35b34801561067157600080fd5b5061067a611f66565b6040518082815260200191505060405180910390f35b34801561069c57600080fd5b506106df600480360360208110156106b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f70565b6040518082815260200191505060405180910390f35b34801561070157600080fd5b5061072e6004803603602081101561071857600080fd5b81019080803590602001909291905050506120cc565b60405180821515815260200191505060405180910390f35b34801561075257600080fd5b5061075b6121a8565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b838110156107ae578082015181840152602081019050610793565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b838110156107f05780820151818401526020810190506107d5565b50505050905001868103845289818151815260200191508051906020019060200280838360005b83811015610832578082015181840152602081019050610817565b50505050905001868103835288818151815260200191508051906020019060200280838360005b83811015610874578082015181840152602081019050610859565b50505050905001868103825287818151815260200191508051906020019060200280838360005b838110156108b657808201518184015260208101905061089b565b505050509050019a505050505050505050505060405180910390f35b3480156108de57600080fd5b50610921600480360360208110156108f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061248b565b6040518082815260200191505060405180910390f35b34801561094357600080fd5b5061094c61253b565b005b34801561095a57600080fd5b5061096361268f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561099b57600080fd5b506109a46126b9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109e45780820151818401526020810190506109c9565b50505050905090810190601f168015610a115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a2761275b565b60405180821515815260200191505060405180910390f35b610a476129cb565b60405180821515815260200191505060405180910390f35b348015610a6b57600080fd5b50610a74612bb7565b005b348015610a8257600080fd5b50610a8b612d67565b60405180888152602001871515815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b348015610ad957600080fd5b50610b2660048036036040811015610af057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612dff565b60405180821515815260200191505060405180910390f35b348015610b4a57600080fd5b50610b8d60048036036020811015610b6157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e1d565b6040518082815260200191505060405180910390f35b610be560048036036020811015610bb957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f79565b60405180821515815260200191505060405180910390f35b348015610c0957600080fd5b50610c5960048036036040811015610c2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050613326565b005b348015610c6757600080fd5b50610cca60048036036040811015610c7e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613431565b6040518082815260200191505060405180910390f35b348015610cec57600080fd5b50610d2f60048036036020811015610d0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134b8565b60405180821515815260200191505060405180910390f35b348015610d5357600080fd5b50610db660048036036040811015610d6a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136b0565b60405180821515815260200191505060405180910390f35b348015610dda57600080fd5b50610e1d60048036036020811015610df157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061397d565b005b606060188054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eb75780601f10610e8c57610100808354040283529160200191610eb7565b820191906000526020600020905b815481529060010190602001808311610e9a57829003601f168201915b5050505050905090565b6000610ed5610ece613aa7565b8484613aaf565b6001905092915050565b600080600080600080600080600080610ef6613aa7565b73ffffffffffffffffffffffffffffffffffffffff16610f1461268f565b73ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549850600a600301549750600a6002015496506000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015495506000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1660ff1693506000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015491506000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050602160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506111a4600a6000808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613ca690919063ffffffff16565b99506111fa8a6000808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154613cd090919063ffffffff16565b94509193959799509193959799565b611211613aa7565b73ffffffffffffffffffffffffffffffffffffffff1661122f61268f565b73ffffffffffffffffffffffffffffffffffffffff16146112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156113a55750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661138d613aa7565b73ffffffffffffffffffffffffffffffffffffffff16145b6113fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061544d6026913960400191505060405180910390fd5b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601754905090565b6000611455848484613d58565b61151684611461613aa7565b611511856040518060600160405280602881526020016154b660289139602460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006114c7613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b99092919063ffffffff16565b613aaf565b600190509392505050565b611529613aa7565b73ffffffffffffffffffffffffffffffffffffffff1661154761268f565b73ffffffffffffffffffffffffffffffffffffffff16146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000611636613aa7565b73ffffffffffffffffffffffffffffffffffffffff1661165461268f565b73ffffffffffffffffffffffffffffffffffffffff16146116dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601f5414611755576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b600183141561176a5781600581905550611c6a565b600283141561177f5781600681905550611c69565b60038314156117945781600781905550611c68565b60048314156117a95781600881905550611c67565b60058314156117d45760018214600960006101000a81548160ff021916908315150217905550611c66565b60068314156117e95781601481905550611c65565b60078314156117fe5781601581905550611c64565b60088314156118295760018214601660006101000a81548160ff021916908315150217905550611c63565b60098314156118545760018214601660016101000a81548160ff021916908315150217905550611c62565b600a8314156118695781601b81905550611c61565b600b83141561187e5781601781905550611c60565b600d8314156118965781600a60000181905550611c5f565b600e8314156118ae5781600a60010181905550611c5e565b600f8314156118c65781600a60020181905550611c5d565b60108314156118de5781600a60030181905550611c5c565b60118314156119c55761195b8260206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cd090919063ffffffff16565b60206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c5b565b6012831415611a6d57611a67600a601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020614373909392919063ffffffff16565b50611c5a565b6013831415611a985760018214600960016101000a81548160ff021916908315150217905550611c59565b620186a08310158015611aad575062030d4083105b15611aef57816002611acb620186a08661452f90919063ffffffff16565b81548110611ad557fe5b906000526020600020906005020160000181905550611c58565b62030d408310158015611b045750620493e083105b15611b4657816002611b2262030d408661452f90919063ffffffff16565b81548110611b2c57fe5b906000526020600020906005020160010181905550611c57565b620493e08310158015611b5b575062061a8083105b15611b9d57816002611b79620493e08661452f90919063ffffffff16565b81548110611b8357fe5b906000526020600020906005020160020181905550611c56565b62061a808310158015611bb257506207a12083105b15611bf457816002611bd062061a808661452f90919063ffffffff16565b81548110611bda57fe5b906000526020600020906005020160030181905550611c55565b6207a1208310158015611c095750620927c083105b15611c4b57816002611c276207a1208661452f90919063ffffffff16565b81548110611c3157fe5b906000526020600020906005020160040181905550611c54565b6000601f819055505b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6001905092915050565b600080600080600080600080600080600080611cde600a600080611c96613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613ca690919063ffffffff16565b9950600080611ceb613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549850600a600301549750600a600201549650601660009054906101000a900460ff169b50601660019054906101000a900460ff169a50600080611d6a613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549550611e058a600080611db9613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154613cd090919063ffffffff16565b9450600080611e12613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1660ff169350600080611e6d613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501549150600080611eb8613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154905060216000611f04613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250909192939495969798999a9b565b6000601a60009054906101000a900460ff16905090565b6000601b54905090565b6000805b60028054905081116120c65760018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160009054906101000a900460ff1660ff1614156120b9576120b66120a7600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060010154600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206002015461452f90919063ffffffff16565b83613cd090919063ffffffff16565b91505b8080600101915050611f74565b50919050565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661210f613aa7565b73ffffffffffffffffffffffffffffffffffffffff1614612198576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b81601f8190555060019050919050565b60608060608060608060028054905067ffffffffffffffff811180156121cd57600080fd5b506040519080825280602002602001820160405280156121fc5781602001602082028036833780820191505090505b509050606060028054905067ffffffffffffffff8111801561221d57600080fd5b5060405190808252806020026020018201604052801561224c5781602001602082028036833780820191505090505b509050606060028054905067ffffffffffffffff8111801561226d57600080fd5b5060405190808252806020026020018201604052801561229c5781602001602082028036833780820191505090505b509050606060028054905067ffffffffffffffff811180156122bd57600080fd5b506040519080825280602002602001820160405280156122ec5781602001602082028036833780820191505090505b509050606060028054905067ffffffffffffffff8111801561230d57600080fd5b5060405190808252806020026020018201604052801561233c5781602001602082028036833780820191505090505b50905060005b60028054905081101561246f576002818154811061235c57fe5b90600052602060002090600502016000015486828151811061237a57fe5b6020026020010181815250506002818154811061239357fe5b9060005260206000209060050201600101548582815181106123b157fe5b602002602001018181525050600281815481106123ca57fe5b9060005260206000209060050201600401548482815181106123e857fe5b6020026020010181815250506002818154811061240157fe5b90600052602060002090600502016002015483828151811061241f57fe5b6020026020010181815250506002818154811061243857fe5b90600052602060002090600502016003015482828151811061245657fe5b6020026020010181815250508080600101915050612342565b5084848383869950995099509950995050505050509091929394565b6000600960019054906101000a900460ff16156124e957602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612536565b6124f282611f70565b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540190505b919050565b601660009054906101000a900460ff166125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332303a204f7065726174696f6e207265636f766572790000000000000081525060200191505060405180910390fd5b6000612617600a6000806125cf613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206145b290919063ffffffff16565b9050600081111561268c57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561268a573d6000803e3d6000fd5b505b50565b6000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060198054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127515780601f1061272657610100808354040283529160200191612751565b820191906000526020600020905b81548152906001019060200180831161273457829003601f168201915b5050505050905090565b60006008543410156127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f54686520616d6f756e7420697320746f6f20736d616c6c00000000000000000081525060200191505060405180910390fd5b600960009054906101000a900460ff16612857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456e64206f66207468697320726f756e6400000000000000000000000000000081525060200191505060405180910390fd5b600034905060006128786128696146dd565b8361489a90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff16601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461293a57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612938573d6000803e3d6000fd5b505b60008111156129c25761295461294e613aa7565b82614920565b5061295d613aa7565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b60019250505090565b600067016345785d8a0000341015612a4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5472616e73616374696f6e207265636f7665727900000000000000000000000081525060200191505060405180910390fd5b6000349050612aa98160216000612a60613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cd090919063ffffffff16565b60216000612ab5613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff16601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bb357601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612bb1573d6000803e3d6000fd5b505b5090565b601660019054906101000a900460ff16612c39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332303a204f7065726174696f6e207265636f766572790000000000000081525060200191505060405180910390fd5b600080612c94600a600080612c4c613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061499190919063ffffffff16565b915091506000811115612d0b57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d09573d6000803e3d6000fd5b505b6000821115612d6357612d1c613aa7565b73ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612d61573d6000803e3d6000fd5b505b5050565b60008060008060008060006008549650600960009054906101000a900460ff1695506004549450600260045481548110612d9d57fe5b9060005260206000209060050201600401549350612dc1612dbc613aa7565b611f70565b9250612dcb613aa7565b73ffffffffffffffffffffffffffffffffffffffff16319150612df4612def613aa7565b61248b565b905090919293949596565b6000612e13612e0c613aa7565b8484613d58565b6001905092915050565b6000805b6002805490508111612f735760018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160009054906101000a900460ff1660ff161415612f6657612f63612f5460028381548110612eab57fe5b90600052602060002090600502016040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020614ae390919063ffffffff16565b83613cd090919063ffffffff16565b91505b8080600101915050612e21565b50919050565b6000803490506000601660009054906101000a900460ff168015612f9f57506014548210155b613011576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5472616e73616374696f6e20726573756d65640000000000000000000000000081525060200191505060405180910390fd5b60006015541180156130565750613026613aa7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561308f5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156131da5760006130bf6127106130b16015548661489a90919063ffffffff16565b614c3890919063ffffffff16565b90506130d4818461452f90919063ffffffff16565b925061312a816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154613cd090919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506131d66131c7600a87846000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020614373909392919063ffffffff16565b83613cd090919063ffffffff16565b9150505b61324f613240600a6131ea613aa7565b856000806131f6613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020614373909392919063ffffffff16565b82613cd090919063ffffffff16565b90506000811180156132b05750600073ffffffffffffffffffffffffffffffffffffffff16601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561331f57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561331d573d6000803e3d6000fd5b505b5050919050565b61332e613aa7565b73ffffffffffffffffffffffffffffffffffffffff1661334c61268f565b73ffffffffffffffffffffffffffffffffffffffff16146133d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006134c2613aa7565b73ffffffffffffffffffffffffffffffffffffffff166134e061268f565b73ffffffffffffffffffffffffffffffffffffffff1614613569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16141580156135f45750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16145b613666576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f7265636f7665727900000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60006136ba613aa7565b73ffffffffffffffffffffffffffffffffffffffff166136d861268f565b73ffffffffffffffffffffffffffffffffffffffff1614613761576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614801561380d5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16145b80156138465750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561387f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6138f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f7265636f7665727900000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613a0e5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166139f6613aa7565b73ffffffffffffffffffffffffffffffffffffffff16145b613a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061544d6026913960400191505060405180910390fd5b80601a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155036024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154736022913960400191505060405180910390fd5b80602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000613cc8613cb58484614cc1565b8460010154613cd090919063ffffffff16565b905092915050565b600080828401905083811015613d4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613dde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154de6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061542a6023913960400191505060405180910390fd5b6000602360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415614097576001602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614158015613f6c57506003602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614155b8015613fc857506002602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614155b801561402457506003602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614155b614096576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5472616e73616374696f6e207265636f7665727900000000000000000000000081525060200191505060405180910390fd5b5b600960019054906101000a900460ff1615614146576140fe81602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461452f90919063ffffffff16565b602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614151565b6141508382614e26565b5b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614156141b9576141b38282614920565b5061424f565b61420b81602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cd090919063ffffffff16565b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290614366576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561432b578082015181840152602081019050614310565b50505050905090810190601f1680156143585780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561441157828560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600082905060006144228787614cc1565b905061444f61271061444188600001548561489a90919063ffffffff16565b614c3890919063ffffffff16565b9250614464838361452f90919063ffffffff16565b9150600061447f876002015484614c3890919063ffffffff16565b9050614498818860040154613cd090919063ffffffff16565b87600401819055506144b7818960040154613cd090919063ffffffff16565b886004018190555042886005018190555060018860020160006101000a81548160ff021916908360ff1602179055506144fd838960030154613cd090919063ffffffff16565b886003018190555061451c828960010154613cd090919063ffffffff16565b8860010181905550505050949350505050565b6000828211156145a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000806145bf8484613ca6565b905060008111156146d6576145e1818560070154613cd090919063ffffffff16565b846007018190555061461461271061460685600001548461489a90919063ffffffff16565b614c3890919063ffffffff16565b9150614629828261452f90919063ffffffff16565b90506000614644846002015483614c3890919063ffffffff16565b905061465d818560040154613cd090919063ffffffff16565b846004018190555061467c818660040154613cd090919063ffffffff16565b856004018190555042856005018190555060018560020160006101000a81548160ff021916908360ff1602179055506146c2828660030154613cd090919063ffffffff16565b856003018190555060008560010181905550505b5092915050565b60006002600454815481106146ee57fe5b90600052602060002090600502016001015442106148745760026040518060a0016040528060026004548154811061472257fe5b906000526020600020906005020160010154815260200160055460026004548154811061474b57fe5b90600052602060002090600502016001015401815260200160055460026004548154811061477557fe5b9060005260206000209060050201600201540181526020016006546005546002600454815481106147a257fe5b906000526020600020906005020160020154010181526020016148046127106147f66007546002600454815481106147d657fe5b90600052602060002090600502016004015461489a90919063ffffffff16565b614c3890919063ffffffff16565b8152509080600181540180825580915050600190039060005260206000209060050201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015550506001600280549050036004819055505b60026004548154811061488357fe5b906000526020600020906005020160040154905090565b6000808314156148ad576000905061491a565b60008284029050828482816148be57fe5b0414614915576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806154956021913960400191505060405180910390fd5b809150505b92915050565b600061498682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600454815260200190815260200160002061530490919063ffffffff16565b506001905092915050565b60008061499e8484613ca6565b9150600090506000821115614adc576149c4828560070154613cd090919063ffffffff16565b84600701819055506149e78460040154846004015461452f90919063ffffffff16565b83600401819055506000846004018190555042846005018190555060028460020160006101000a81548160ff021916908360ff1602179055506000846003018190555060008460010181905550600073ffffffffffffffffffffffffffffffffffffffff168460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614adb5747821115614a98574791505b614ac3612710614ab585600101548561489a90919063ffffffff16565b614c3890919063ffffffff16565b9050614ad8818361452f90919063ffffffff16565b91505b5b9250929050565b6000806000905060018460000160009054906101000a900460ff1660ff16148015614b115750826040015142115b15614c2d57600080614b348560400151866060015161452f90919063ffffffff16565b905060008111614b4957829350505050614c32565b84606001514210614b665784604001518560600151039150614b70565b8460400151420391505b600082118015614b7f57508082105b15614be357614bad81614b9f84896002015461489a90919063ffffffff16565b614c3890919063ffffffff16565b92508560010154831115614bd957614bd286600101548461452f90919063ffffffff16565b9250614bde565b600092505b614c2a565b600082118015614bf35750808210155b8015614c06575085600101548660020154115b15614c2957614c268660010154876002015461452f90919063ffffffff16565b92505b5b50505b809150505b92915050565b6000808211614caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381614cb857fe5b04905092915050565b600060018360020160009054906101000a900460ff1660ff16148015614ceb575060008360040154115b8015614cfa5750826005015442115b15614e20576000614d1884600501544261452f90919063ffffffff16565b905062278d00811115614dee57614d528360030154614d4483876004015461489a90919063ffffffff16565b61489a90919063ffffffff16565b9150614d6a62278d008261452f90919063ffffffff16565b9050614de7614dd8614d8862278d0084613cd090919063ffffffff16565b614dca62278d00614dbc8860030154614dae888c6004015461489a90919063ffffffff16565b61489a90919063ffffffff16565b61489a90919063ffffffff16565b614c3890919063ffffffff16565b83613cd090919063ffffffff16565b9150614e1e565b614e1b8360030154614e0d83876004015461489a90919063ffffffff16565b61489a90919063ffffffff16565b91505b505b92915050565b80614e308361248b565b1015614ea4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a20496e73756666696369656e742062616c616e6365000000000081525060200191505060405180910390fd5b60008190506000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156150a75780602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061500c57614fc0816040518060400160405280601b81526020017f45524332303a20496e73756666696369656e742062616c616e63650000000000815250602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b99092919063ffffffff16565b602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600090506150a6565b61505e602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261452f90919063ffffffff16565b90506000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600081111561528957806150ba84612e1d565b101561512e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a20496e73756666696369656e742062616c616e6365000000000081525060200191505060405180910390fd5b60005b600280549050811161528757600180600061514a613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160009054906101000a900460ff1660ff16141561527a576000615273600283815481106151c157fe5b90600052602060002090600502016040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250508460016000615219613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002061536d9092919063ffffffff16565b9050809250505b8080600101915050615131565b505b600081146152ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a20496e73756666696369656e742062616c616e6365000000000081525060200191505060405180910390fd5b505050565b600061531d828460020154613cd090919063ffffffff16565b836002018190555060018360000160009054906101000a900460ff1660ff16146153605760018360000160006101000a81548160ff021916908360ff1602179055505b8260020154905092915050565b60008082111561541e5760006153838585614ae3565b9050808311156153c6576153a0818461452f90919063ffffffff16565b91506153b9818660010154613cd090919063ffffffff16565b85600101819055506153ea565b600091506153e1838660010154613cd090919063ffffffff16565b85600101819055505b84600201548560010154106154185760008560000160006101000a81548160ff021916908360ff1602179055505b50615422565b8190505b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a264697066735822122039fdbb9a376b9308c111e8eb346d0e0d959bdbf80f966227c2884c664818f86e64736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806370a0823111610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610c5b578063e3412e3d14610ce0578063f10a779814610d47578063f2fde38b14610dce576101e3565b8063a9059cbb14610acd578063bd095f4214610b3e578063d70f614414610ba3578063daea39bf14610bfd576101e3565b8063974c86b5116100d1578063974c86b514610a1f57806398d213e814610a3f5780639f1b3bad14610a5f5780639f8743f714610a76576101e3565b806370a08231146108d257806372621500146109375780638da5cb5b1461094e57806395d89b411461098f576101e3565b80632751618e1161017a578063355274ea11610149578063355274ea14610665578063459c80a1146106905780634c7e7ee3146106f5578063557ed1ba14610746576101e3565b80632751618e146105025780632fb565e814610560578063302c11ca146105bb578063313ce56714610637576101e3565b80630f07b844116101b65780630f07b8441461039757806310979031146103f557806318160ddd1461044657806323b872dd14610471576101e3565b806306fdde03146101f2578063095ea7b3146102825780630b34d553146102f3576101e3565b366101e357005b3480156101ef57600080fd5b50005b3480156101fe57600080fd5b50610207610e1f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024757808201518184015260208101905061022c565b50505050905090810190601f1680156102745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028e57600080fd5b506102db600480360360408110156102a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ec1565b60405180821515815260200191505060405180910390f35b3480156102ff57600080fd5b506103426004803603602081101561031657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610edf565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b3480156103a357600080fd5b506103f3600480360360408110156103ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611209565b005b34801561040157600080fd5b506104446004803603602081101561041857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611314565b005b34801561045257600080fd5b5061045b61143e565b6040518082815260200191505060405180910390f35b34801561047d57600080fd5b506104ea6004803603606081101561049457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611448565b60405180821515815260200191505060405180910390f35b34801561050e57600080fd5b5061055e6004803603604081101561052557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611521565b005b34801561056c57600080fd5b506105a36004803603604081101561058357600080fd5b81019080803590602001909291908035906020019092919050505061162c565b60405180821515815260200191505060405180910390f35b3480156105c757600080fd5b506105d0611c74565b604051808d151581526020018c151581526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019c5050505050505050505050505060405180910390f35b34801561064357600080fd5b5061064c611f4f565b604051808260ff16815260200191505060405180910390f35b34801561067157600080fd5b5061067a611f66565b6040518082815260200191505060405180910390f35b34801561069c57600080fd5b506106df600480360360208110156106b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f70565b6040518082815260200191505060405180910390f35b34801561070157600080fd5b5061072e6004803603602081101561071857600080fd5b81019080803590602001909291905050506120cc565b60405180821515815260200191505060405180910390f35b34801561075257600080fd5b5061075b6121a8565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b838110156107ae578082015181840152602081019050610793565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b838110156107f05780820151818401526020810190506107d5565b50505050905001868103845289818151815260200191508051906020019060200280838360005b83811015610832578082015181840152602081019050610817565b50505050905001868103835288818151815260200191508051906020019060200280838360005b83811015610874578082015181840152602081019050610859565b50505050905001868103825287818151815260200191508051906020019060200280838360005b838110156108b657808201518184015260208101905061089b565b505050509050019a505050505050505050505060405180910390f35b3480156108de57600080fd5b50610921600480360360208110156108f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061248b565b6040518082815260200191505060405180910390f35b34801561094357600080fd5b5061094c61253b565b005b34801561095a57600080fd5b5061096361268f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561099b57600080fd5b506109a46126b9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109e45780820151818401526020810190506109c9565b50505050905090810190601f168015610a115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a2761275b565b60405180821515815260200191505060405180910390f35b610a476129cb565b60405180821515815260200191505060405180910390f35b348015610a6b57600080fd5b50610a74612bb7565b005b348015610a8257600080fd5b50610a8b612d67565b60405180888152602001871515815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b348015610ad957600080fd5b50610b2660048036036040811015610af057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612dff565b60405180821515815260200191505060405180910390f35b348015610b4a57600080fd5b50610b8d60048036036020811015610b6157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e1d565b6040518082815260200191505060405180910390f35b610be560048036036020811015610bb957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f79565b60405180821515815260200191505060405180910390f35b348015610c0957600080fd5b50610c5960048036036040811015610c2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050613326565b005b348015610c6757600080fd5b50610cca60048036036040811015610c7e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613431565b6040518082815260200191505060405180910390f35b348015610cec57600080fd5b50610d2f60048036036020811015610d0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134b8565b60405180821515815260200191505060405180910390f35b348015610d5357600080fd5b50610db660048036036040811015610d6a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136b0565b60405180821515815260200191505060405180910390f35b348015610dda57600080fd5b50610e1d60048036036020811015610df157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061397d565b005b606060188054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eb75780601f10610e8c57610100808354040283529160200191610eb7565b820191906000526020600020905b815481529060010190602001808311610e9a57829003601f168201915b5050505050905090565b6000610ed5610ece613aa7565b8484613aaf565b6001905092915050565b600080600080600080600080600080610ef6613aa7565b73ffffffffffffffffffffffffffffffffffffffff16610f1461268f565b73ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549850600a600301549750600a6002015496506000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015495506000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1660ff1693506000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015491506000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050602160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506111a4600a6000808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613ca690919063ffffffff16565b99506111fa8a6000808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154613cd090919063ffffffff16565b94509193959799509193959799565b611211613aa7565b73ffffffffffffffffffffffffffffffffffffffff1661122f61268f565b73ffffffffffffffffffffffffffffffffffffffff16146112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156113a55750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661138d613aa7565b73ffffffffffffffffffffffffffffffffffffffff16145b6113fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061544d6026913960400191505060405180910390fd5b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601754905090565b6000611455848484613d58565b61151684611461613aa7565b611511856040518060600160405280602881526020016154b660289139602460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006114c7613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b99092919063ffffffff16565b613aaf565b600190509392505050565b611529613aa7565b73ffffffffffffffffffffffffffffffffffffffff1661154761268f565b73ffffffffffffffffffffffffffffffffffffffff16146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000611636613aa7565b73ffffffffffffffffffffffffffffffffffffffff1661165461268f565b73ffffffffffffffffffffffffffffffffffffffff16146116dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601f5414611755576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b600183141561176a5781600581905550611c6a565b600283141561177f5781600681905550611c69565b60038314156117945781600781905550611c68565b60048314156117a95781600881905550611c67565b60058314156117d45760018214600960006101000a81548160ff021916908315150217905550611c66565b60068314156117e95781601481905550611c65565b60078314156117fe5781601581905550611c64565b60088314156118295760018214601660006101000a81548160ff021916908315150217905550611c63565b60098314156118545760018214601660016101000a81548160ff021916908315150217905550611c62565b600a8314156118695781601b81905550611c61565b600b83141561187e5781601781905550611c60565b600d8314156118965781600a60000181905550611c5f565b600e8314156118ae5781600a60010181905550611c5e565b600f8314156118c65781600a60020181905550611c5d565b60108314156118de5781600a60030181905550611c5c565b60118314156119c55761195b8260206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cd090919063ffffffff16565b60206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c5b565b6012831415611a6d57611a67600a601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020614373909392919063ffffffff16565b50611c5a565b6013831415611a985760018214600960016101000a81548160ff021916908315150217905550611c59565b620186a08310158015611aad575062030d4083105b15611aef57816002611acb620186a08661452f90919063ffffffff16565b81548110611ad557fe5b906000526020600020906005020160000181905550611c58565b62030d408310158015611b045750620493e083105b15611b4657816002611b2262030d408661452f90919063ffffffff16565b81548110611b2c57fe5b906000526020600020906005020160010181905550611c57565b620493e08310158015611b5b575062061a8083105b15611b9d57816002611b79620493e08661452f90919063ffffffff16565b81548110611b8357fe5b906000526020600020906005020160020181905550611c56565b62061a808310158015611bb257506207a12083105b15611bf457816002611bd062061a808661452f90919063ffffffff16565b81548110611bda57fe5b906000526020600020906005020160030181905550611c55565b6207a1208310158015611c095750620927c083105b15611c4b57816002611c276207a1208661452f90919063ffffffff16565b81548110611c3157fe5b906000526020600020906005020160040181905550611c54565b6000601f819055505b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6001905092915050565b600080600080600080600080600080600080611cde600a600080611c96613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613ca690919063ffffffff16565b9950600080611ceb613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549850600a600301549750600a600201549650601660009054906101000a900460ff169b50601660019054906101000a900460ff169a50600080611d6a613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549550611e058a600080611db9613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154613cd090919063ffffffff16565b9450600080611e12613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1660ff169350600080611e6d613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501549150600080611eb8613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154905060216000611f04613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250909192939495969798999a9b565b6000601a60009054906101000a900460ff16905090565b6000601b54905090565b6000805b60028054905081116120c65760018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160009054906101000a900460ff1660ff1614156120b9576120b66120a7600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060010154600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206002015461452f90919063ffffffff16565b83613cd090919063ffffffff16565b91505b8080600101915050611f74565b50919050565b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661210f613aa7565b73ffffffffffffffffffffffffffffffffffffffff1614612198576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b81601f8190555060019050919050565b60608060608060608060028054905067ffffffffffffffff811180156121cd57600080fd5b506040519080825280602002602001820160405280156121fc5781602001602082028036833780820191505090505b509050606060028054905067ffffffffffffffff8111801561221d57600080fd5b5060405190808252806020026020018201604052801561224c5781602001602082028036833780820191505090505b509050606060028054905067ffffffffffffffff8111801561226d57600080fd5b5060405190808252806020026020018201604052801561229c5781602001602082028036833780820191505090505b509050606060028054905067ffffffffffffffff811180156122bd57600080fd5b506040519080825280602002602001820160405280156122ec5781602001602082028036833780820191505090505b509050606060028054905067ffffffffffffffff8111801561230d57600080fd5b5060405190808252806020026020018201604052801561233c5781602001602082028036833780820191505090505b50905060005b60028054905081101561246f576002818154811061235c57fe5b90600052602060002090600502016000015486828151811061237a57fe5b6020026020010181815250506002818154811061239357fe5b9060005260206000209060050201600101548582815181106123b157fe5b602002602001018181525050600281815481106123ca57fe5b9060005260206000209060050201600401548482815181106123e857fe5b6020026020010181815250506002818154811061240157fe5b90600052602060002090600502016002015483828151811061241f57fe5b6020026020010181815250506002818154811061243857fe5b90600052602060002090600502016003015482828151811061245657fe5b6020026020010181815250508080600101915050612342565b5084848383869950995099509950995050505050509091929394565b6000600960019054906101000a900460ff16156124e957602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612536565b6124f282611f70565b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540190505b919050565b601660009054906101000a900460ff166125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332303a204f7065726174696f6e207265636f766572790000000000000081525060200191505060405180910390fd5b6000612617600a6000806125cf613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206145b290919063ffffffff16565b9050600081111561268c57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561268a573d6000803e3d6000fd5b505b50565b6000601a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060198054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127515780601f1061272657610100808354040283529160200191612751565b820191906000526020600020905b81548152906001019060200180831161273457829003601f168201915b5050505050905090565b60006008543410156127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f54686520616d6f756e7420697320746f6f20736d616c6c00000000000000000081525060200191505060405180910390fd5b600960009054906101000a900460ff16612857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f456e64206f66207468697320726f756e6400000000000000000000000000000081525060200191505060405180910390fd5b600034905060006128786128696146dd565b8361489a90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff16601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461293a57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612938573d6000803e3d6000fd5b505b60008111156129c25761295461294e613aa7565b82614920565b5061295d613aa7565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b60019250505090565b600067016345785d8a0000341015612a4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5472616e73616374696f6e207265636f7665727900000000000000000000000081525060200191505060405180910390fd5b6000349050612aa98160216000612a60613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cd090919063ffffffff16565b60216000612ab5613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff16601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bb357601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612bb1573d6000803e3d6000fd5b505b5090565b601660019054906101000a900460ff16612c39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332303a204f7065726174696f6e207265636f766572790000000000000081525060200191505060405180910390fd5b600080612c94600a600080612c4c613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061499190919063ffffffff16565b915091506000811115612d0b57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d09573d6000803e3d6000fd5b505b6000821115612d6357612d1c613aa7565b73ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612d61573d6000803e3d6000fd5b505b5050565b60008060008060008060006008549650600960009054906101000a900460ff1695506004549450600260045481548110612d9d57fe5b9060005260206000209060050201600401549350612dc1612dbc613aa7565b611f70565b9250612dcb613aa7565b73ffffffffffffffffffffffffffffffffffffffff16319150612df4612def613aa7565b61248b565b905090919293949596565b6000612e13612e0c613aa7565b8484613d58565b6001905092915050565b6000805b6002805490508111612f735760018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160009054906101000a900460ff1660ff161415612f6657612f63612f5460028381548110612eab57fe5b90600052602060002090600502016040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020614ae390919063ffffffff16565b83613cd090919063ffffffff16565b91505b8080600101915050612e21565b50919050565b6000803490506000601660009054906101000a900460ff168015612f9f57506014548210155b613011576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5472616e73616374696f6e20726573756d65640000000000000000000000000081525060200191505060405180910390fd5b60006015541180156130565750613026613aa7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561308f5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156131da5760006130bf6127106130b16015548661489a90919063ffffffff16565b614c3890919063ffffffff16565b90506130d4818461452f90919063ffffffff16565b925061312a816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154613cd090919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506131d66131c7600a87846000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020614373909392919063ffffffff16565b83613cd090919063ffffffff16565b9150505b61324f613240600a6131ea613aa7565b856000806131f6613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020614373909392919063ffffffff16565b82613cd090919063ffffffff16565b90506000811180156132b05750600073ffffffffffffffffffffffffffffffffffffffff16601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561331f57601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561331d573d6000803e3d6000fd5b505b5050919050565b61332e613aa7565b73ffffffffffffffffffffffffffffffffffffffff1661334c61268f565b73ffffffffffffffffffffffffffffffffffffffff16146133d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b6000602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006134c2613aa7565b73ffffffffffffffffffffffffffffffffffffffff166134e061268f565b73ffffffffffffffffffffffffffffffffffffffff1614613569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16141580156135f45750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16145b613666576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f7265636f7665727900000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60006136ba613aa7565b73ffffffffffffffffffffffffffffffffffffffff166136d861268f565b73ffffffffffffffffffffffffffffffffffffffff1614613761576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614801561380d5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16145b80156138465750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561387f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6138f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f7265636f7665727900000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613a0e5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166139f6613aa7565b73ffffffffffffffffffffffffffffffffffffffff16145b613a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061544d6026913960400191505060405180910390fd5b80601a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155036024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154736022913960400191505060405180910390fd5b80602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000613cc8613cb58484614cc1565b8460010154613cd090919063ffffffff16565b905092915050565b600080828401905083811015613d4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613dde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154de6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061542a6023913960400191505060405180910390fd5b6000602360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415614097576001602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614158015613f6c57506003602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614155b8015613fc857506002602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614155b801561402457506003602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614155b614096576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5472616e73616374696f6e207265636f7665727900000000000000000000000081525060200191505060405180910390fd5b5b600960019054906101000a900460ff1615614146576140fe81602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461452f90919063ffffffff16565b602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614151565b6141508382614e26565b5b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614156141b9576141b38282614920565b5061424f565b61420b81602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cd090919063ffffffff16565b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290614366576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561432b578082015181840152602081019050614310565b50505050905090810190601f1680156143585780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561441157828560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600082905060006144228787614cc1565b905061444f61271061444188600001548561489a90919063ffffffff16565b614c3890919063ffffffff16565b9250614464838361452f90919063ffffffff16565b9150600061447f876002015484614c3890919063ffffffff16565b9050614498818860040154613cd090919063ffffffff16565b87600401819055506144b7818960040154613cd090919063ffffffff16565b886004018190555042886005018190555060018860020160006101000a81548160ff021916908360ff1602179055506144fd838960030154613cd090919063ffffffff16565b886003018190555061451c828960010154613cd090919063ffffffff16565b8860010181905550505050949350505050565b6000828211156145a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000806145bf8484613ca6565b905060008111156146d6576145e1818560070154613cd090919063ffffffff16565b846007018190555061461461271061460685600001548461489a90919063ffffffff16565b614c3890919063ffffffff16565b9150614629828261452f90919063ffffffff16565b90506000614644846002015483614c3890919063ffffffff16565b905061465d818560040154613cd090919063ffffffff16565b846004018190555061467c818660040154613cd090919063ffffffff16565b856004018190555042856005018190555060018560020160006101000a81548160ff021916908360ff1602179055506146c2828660030154613cd090919063ffffffff16565b856003018190555060008560010181905550505b5092915050565b60006002600454815481106146ee57fe5b90600052602060002090600502016001015442106148745760026040518060a0016040528060026004548154811061472257fe5b906000526020600020906005020160010154815260200160055460026004548154811061474b57fe5b90600052602060002090600502016001015401815260200160055460026004548154811061477557fe5b9060005260206000209060050201600201540181526020016006546005546002600454815481106147a257fe5b906000526020600020906005020160020154010181526020016148046127106147f66007546002600454815481106147d657fe5b90600052602060002090600502016004015461489a90919063ffffffff16565b614c3890919063ffffffff16565b8152509080600181540180825580915050600190039060005260206000209060050201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015550506001600280549050036004819055505b60026004548154811061488357fe5b906000526020600020906005020160040154905090565b6000808314156148ad576000905061491a565b60008284029050828482816148be57fe5b0414614915576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806154956021913960400191505060405180910390fd5b809150505b92915050565b600061498682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600454815260200190815260200160002061530490919063ffffffff16565b506001905092915050565b60008061499e8484613ca6565b9150600090506000821115614adc576149c4828560070154613cd090919063ffffffff16565b84600701819055506149e78460040154846004015461452f90919063ffffffff16565b83600401819055506000846004018190555042846005018190555060028460020160006101000a81548160ff021916908360ff1602179055506000846003018190555060008460010181905550600073ffffffffffffffffffffffffffffffffffffffff168460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614adb5747821115614a98574791505b614ac3612710614ab585600101548561489a90919063ffffffff16565b614c3890919063ffffffff16565b9050614ad8818361452f90919063ffffffff16565b91505b5b9250929050565b6000806000905060018460000160009054906101000a900460ff1660ff16148015614b115750826040015142115b15614c2d57600080614b348560400151866060015161452f90919063ffffffff16565b905060008111614b4957829350505050614c32565b84606001514210614b665784604001518560600151039150614b70565b8460400151420391505b600082118015614b7f57508082105b15614be357614bad81614b9f84896002015461489a90919063ffffffff16565b614c3890919063ffffffff16565b92508560010154831115614bd957614bd286600101548461452f90919063ffffffff16565b9250614bde565b600092505b614c2a565b600082118015614bf35750808210155b8015614c06575085600101548660020154115b15614c2957614c268660010154876002015461452f90919063ffffffff16565b92505b5b50505b809150505b92915050565b6000808211614caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381614cb857fe5b04905092915050565b600060018360020160009054906101000a900460ff1660ff16148015614ceb575060008360040154115b8015614cfa5750826005015442115b15614e20576000614d1884600501544261452f90919063ffffffff16565b905062278d00811115614dee57614d528360030154614d4483876004015461489a90919063ffffffff16565b61489a90919063ffffffff16565b9150614d6a62278d008261452f90919063ffffffff16565b9050614de7614dd8614d8862278d0084613cd090919063ffffffff16565b614dca62278d00614dbc8860030154614dae888c6004015461489a90919063ffffffff16565b61489a90919063ffffffff16565b61489a90919063ffffffff16565b614c3890919063ffffffff16565b83613cd090919063ffffffff16565b9150614e1e565b614e1b8360030154614e0d83876004015461489a90919063ffffffff16565b61489a90919063ffffffff16565b91505b505b92915050565b80614e308361248b565b1015614ea4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a20496e73756666696369656e742062616c616e6365000000000081525060200191505060405180910390fd5b60008190506000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156150a75780602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061500c57614fc0816040518060400160405280601b81526020017f45524332303a20496e73756666696369656e742062616c616e63650000000000815250602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b99092919063ffffffff16565b602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600090506150a6565b61505e602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261452f90919063ffffffff16565b90506000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600081111561528957806150ba84612e1d565b101561512e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a20496e73756666696369656e742062616c616e6365000000000081525060200191505060405180910390fd5b60005b600280549050811161528757600180600061514a613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160009054906101000a900460ff1660ff16141561527a576000615273600283815481106151c157fe5b90600052602060002090600502016040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250508460016000615219613aa7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002061536d9092919063ffffffff16565b9050809250505b8080600101915050615131565b505b600081146152ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a20496e73756666696369656e742062616c616e6365000000000081525060200191505060405180910390fd5b505050565b600061531d828460020154613cd090919063ffffffff16565b836002018190555060018360000160009054906101000a900460ff1660ff16146153605760018360000160006101000a81548160ff021916908360ff1602179055505b8260020154905092915050565b60008082111561541e5760006153838585614ae3565b9050808311156153c6576153a0818461452f90919063ffffffff16565b91506153b9818660010154613cd090919063ffffffff16565b85600101819055506153ea565b600091506153e1838660010154613cd090919063ffffffff16565b85600101819055505b84600201548560010154106154185760008560000160006101000a81548160ff021916908360ff1602179055505b50615422565b8190505b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a264697066735822122039fdbb9a376b9308c111e8eb346d0e0d959bdbf80f966227c2884c664818f86e64736f6c634300060c0033

Deployed Bytecode Sourcemap

11238:20130:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14026:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19458:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25492:638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19732:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16649:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15533:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19007:304;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19618:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21287:1945;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26138:758;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15225:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15392:75;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30550:338;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16122:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27536:903;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15687:228;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25207:277;;;;;;;;;;;;;:::i;:::-;;14190:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14396;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29647:557;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23611:334;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24826:373;;;;;;;;;;;;;:::i;:::-;;30896:469;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23445:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30216:326;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23953:865;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19850:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15978:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17116:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16857:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16443:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14026:83;14063:13;14096:5;14089:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14026:83;:::o;19458:152::-;19524:4;19541:39;19550:12;:10;:12::i;:::-;19564:7;19573:6;19541:8;:39::i;:::-;19598:4;19591:11;;19458:152;;;;:::o;25492:638::-;25557:10;25568;25579;25600;25611:13;25625:11;25637;25649:8;25658:11;25670:8;13511:12;:10;:12::i;:::-;13500:23;;:7;:5;:7::i;:::-;:23;;;13492:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25698:11:::1;:17:::0;25710:4:::1;25698:17;;;;;;;;;;;;;;;:23;;;25690:31;;25740:9;:21;;;25732:29;;25780:9;:21;;;25772:29;;25832:11;:17:::0;25844:4:::1;25832:17;;;;;;;;;;;;;;;:26;;;25821:37;;25878:11;:17:::0;25890:4:::1;25878:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;25869:33;;;;25922:11;:17:::0;25934:4:::1;25922:17;;;;;;;;;;;;;;;:24;;;25913:33;;25963:11;:17:::0;25975:4:::1;25963:17;;;;;;;;;;;;;;;:21;;;25957:27;;26001:4;:10;26006:4;26001:10;;;;;;;;;;;;;;;;25995:16;;26030:37;26057:9;26030:11;:17:::0;26042:4:::1;26030:17;;;;;;;;;;;;;;;:26;;:37;;;;:::i;:::-;26022:45;;26087:35;26116:5;26087:11;:17:::0;26099:4:::1;26087:17;;;;;;;;;;;;;;;:24;;;:28;;:35;;;;:::i;:::-;26078:44;;25492:638:::0;;;;;;;;;;;:::o;19732:110::-;13511:12;:10;:12::i;:::-;13500:23;;:7;:5;:7::i;:::-;:23;;;13492:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19828:6:::1;19807:10;:18;19818:6;19807:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;19732:110:::0;;:::o;16649:200::-;16736:1;16714:24;;:10;:24;;;;:50;;;;;16758:6;;;;;;;;;;;16742:22;;:12;:10;:12::i;:::-;:22;;;16714:50;16706:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16831:10;16818;;:23;;;;;;;;;;;;;;;;;;16649:200;:::o;15533:91::-;15577:7;15604:12;;15597:19;;15533:91;:::o;19007:304::-;19096:4;19113:36;19123:6;19131:9;19142:6;19113:9;:36::i;:::-;19160:121;19169:6;19177:12;:10;:12::i;:::-;19191:89;19229:6;19191:89;;;;;;;;;;;;;;;;;:11;:19;19203:6;19191:19;;;;;;;;;;;;;;;:33;19211:12;:10;:12::i;:::-;19191:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19160:8;:121::i;:::-;19299:4;19292:11;;19007:304;;;;;:::o;19618:106::-;13511:12;:10;:12::i;:::-;13500:23;;:7;:5;:7::i;:::-;:23;;;13492:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19710:6:::1;19693;:14;19700:6;19693:14;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;19618:106:::0;;:::o;21287:1945::-;21351:4;13511:12;:10;:12::i;:::-;13500:23;;:7;:5;:7::i;:::-;:23;;;13492:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21385:1:::1;21375:8;;:11;21367:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21427:1;21422:3;:6;21419:1784;;;21458:5;21444:11;:19;;;;21419:1784;;;21488:1;21483:3;:6;21480:1723;;;21520:5;21505:12;:20;;;;21480:1723;;;21550:1;21545:3;:6;21542:1661;;;21580:5;21567:10;:18;;;;21542:1661;;;21610:1;21605:3;:6;21602:1601;;;21643:5;21627:13;:21;;;;21602:1601;;;21673:1;21668:3;:6;21665:1538;;;21712:1;21705:5;:8;21690:12;;:23;;;;;;;;;;;;;;;;;;21665:1538;;;21738:1;21733:3;:6;21730:1473;;;21767:5;21755:9;:17;;;;21730:1473;;;21797:1;21792:3;:6;21789:1414;;;21826:5;21814:9;:17;;;;21789:1414;;;21856:1;21851:3;:6;21848:1355;;;21890:1;21883:5;:8;21873:7;;:18;;;;;;;;;;;;;;;;;;21848:1355;;;21916:1;21911:3;:6;21908:1295;;;21953:1;21946:5;:8;21933:10;;:21;;;;;;;;;;;;;;;;;;21908:1295;;;21979:2;21974:3;:7;21971:1232;;;22004:5;21997:4;:12;;;;21971:1232;;;22034:2;22029:3;:7;22026:1177;;;22067:5;22052:12;:20;;;;22026:1177;;;22097:2;22092:3;:7;22089:1114;;;22141:5;22115:9;:23;;:31;;;;22089:1114;;;22171:2;22166:3;:7;22163:1040;;;22215:5;22189:9;:23;;:31;;;;22163:1040;;;22245:2;22240:3;:7;22237:966;;;22286:5;22262:9;:21;;:29;;;;22237:966;;;22316:2;22311:3;:7;22308:895;;;22358:5;22334:9;:21;;:29;;;;22308:895;;;22388:2;22383:3;:7;22380:823;;;22430:32;22456:5;22430:9;:21;22440:10;;;;;;;;;;;22430:21;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;22406:9;:21;22416:10;;;;;;;;;;;22406:21;;;;;;;;;;;;;;;:56;;;;22380:823;;;22487:2;22482:3;:7;22479:724;;;22505:56;22534:9;22544:10;;;;;;;;;;;22555:5;22505:11;:23:::0;22517:10:::1;;;;;;;;;;;22505:23;;;;;;;;;;;;;;;:28;;:56;;;;;;:::i;:::-;;22479:724;;;22586:2;22581:3;:7;22578:625;;;22623:1;22616:5;:8;22604:9;;:20;;;;;;;;;;;;;;;;;;22578:625;;;22649:6;22644:3;:11;;:23;;;;;22661:6;22657:3;:10;22644:23;22641:562;;;22723:5;22683:10;22694:15;22702:6;22694:3;:7;;:15;;;;:::i;:::-;22683:27;;;;;;;;;;;;;;;;;;:37;;:45;;;;22641:562;;;22753:6;22748:3;:11;;:23;;;;;22765:6;22761:3;:10;22748:23;22745:458;;;22825:5;22787:10;22798:15;22806:6;22798:3;:7;;:15;;;;:::i;:::-;22787:27;;;;;;;;;;;;;;;;;;:35;;:43;;;;22745:458;;;22855:6;22850:3;:11;;:23;;;;;22867:6;22863:3;:10;22850:23;22847:356;;;22935:5;22889:10;22900:15;22908:6;22900:3;:7;;:15;;;;:::i;:::-;22889:27;;;;;;;;;;;;;;;;;;:43;;:51;;;;22847:356;;;22965:6;22960:3;:11;;:23;;;;;22977:6;22973:3;:10;22960:23;22957:246;;;23043:5;22999:10;23010:15;23018:6;23010:3;:7;;:15;;;;:::i;:::-;22999:27;;;;;;;;;;;;;;;;;;:41;;:49;;;;22957:246;;;23073:6;23068:3;:11;;:23;;;;;23085:6;23081:3;:10;23068:23;23065:138;;;23143:5;23107:10;23118:15;23126:6;23118:3;:7;;:15;;;;:::i;:::-;23107:27;;;;;;;;;;;;;;;;;;:33;;:41;;;;23065:138;;;23190:1;23179:8;:12;;;;23065:138;22957:246;22847:356;22745:458;22641:562;22578:625;22479:724;22380:823;22308:895;22237:966;22163:1040;22089:1114;22026:1177;21971:1232;21908:1295;21848:1355;21789:1414;21730:1473;21665:1538;21602:1601;21542:1661;21480:1723;21419:1784;23220:4;23213:11;;21287:1945:::0;;;;:::o;26138:758::-;26177:12;26190:14;26205:10;26216;26227;26248;26259:13;26273:11;26285;26297:8;26306:11;26318:8;26346:45;26381:9;26346:11;:25;26358:12;:10;:12::i;:::-;26346:25;;;;;;;;;;;;;;;:34;;:45;;;;:::i;:::-;26338:53;;26410:11;:25;26422:12;:10;:12::i;:::-;26410:25;;;;;;;;;;;;;;;:31;;;26402:39;;26460:9;:21;;;26452:29;;26500:9;:21;;;26492:29;;26542:7;;;;;;;;;;;26532:17;;26572:10;;;;;;;;;;;26560:22;;26606:11;:25;26618:12;:10;:12::i;:::-;26606:25;;;;;;;;;;;;;;;:34;;;26595:45;;26660:43;26697:5;26660:11;:25;26672:12;:10;:12::i;:::-;26660:25;;;;;;;;;;;;;;;:32;;;:36;;:43;;;;:::i;:::-;26651:52;;26723:11;:25;26735:12;:10;:12::i;:::-;26723:25;;;;;;;;;;;;;;;:32;;;;;;;;;;;;26714:41;;;;26775:11;:25;26787:12;:10;:12::i;:::-;26775:25;;;;;;;;;;;;;;;:32;;;26766:41;;26824:11;:25;26836:12;:10;:12::i;:::-;26824:25;;;;;;;;;;;;;;;:29;;;26818:35;;26870:4;:18;26875:12;:10;:12::i;:::-;26870:18;;;;;;;;;;;;;;;;26864:24;;26138:758;;;;;;;;;;;;:::o;15225:83::-;15266:5;15291:9;;;;;;;;;;;15284:16;;15225:83;:::o;15392:75::-;15428:7;15455:4;;15448:11;;15392:75;:::o;30550:338::-;30606:15;30659:9;30655:226;30674:10;:17;;;;30671:1;:20;30655:226;;30746:1;30714:14;:20;30729:4;30714:20;;;;;;;;;;;;;;;:23;30735:1;30714:23;;;;;;;;;;;:30;;;;;;;;;;;;:33;;;30711:159;;;30777:77;30789:64;30823:14;:20;30838:4;30823:20;;;;;;;;;;;;;;;:23;30844:1;30823:23;;;;;;;;;;;:29;;;30789:14;:20;30804:4;30789:20;;;;;;;;;;;;;;;:23;30810:1;30789:23;;;;;;;;;;;:29;;;:33;;:64;;;;:::i;:::-;30777:7;:11;;:77;;;;:::i;:::-;30767:87;;30711:159;30692:3;;;;;;;30655:226;;;;30550:338;;;:::o;16122:166::-;16166:4;16206:5;;;;;;;;;;;16190:21;;:12;:10;:12::i;:::-;:21;;;16182:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16255:3;16244:8;:14;;;;16276:4;16269:11;;16122:166;;;:::o;27536:903::-;27575:16;27592;27609;27626;27643;27671:26;27714:10;:17;;;;27700:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27671:61;;27743:24;27784:10;:17;;;;27770:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27743:59;;27813:22;27852:10;:17;;;;27838:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27813:57;;27881:32;27930:10;:17;;;;27916:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27881:67;;27959:30;28006:10;:17;;;;27992:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27959:65;;28039:6;28035:324;28052:10;:17;;;;28050:1;:19;28035:324;;;28104:10;28115:1;28104:13;;;;;;;;;;;;;;;;;;:23;;;28089:9;28099:1;28089:12;;;;;;;;;;;;;:38;;;;;28155:10;28166:1;28155:13;;;;;;;;;;;;;;;;;;:21;;;28142:7;28150:1;28142:10;;;;;;;;;;;;;:34;;;;;28202:10;28213:1;28202:13;;;;;;;;;;;;;;;;;;:19;;;28191:5;28197:1;28191:8;;;;;;;;;;;;;:30;;;;;28257:10;28268:1;28257:13;;;;;;;;;;;;;;;;;;:29;;;28236:15;28252:1;28236:18;;;;;;;;;;;;;:50;;;;;28320:10;28331:1;28320:13;;;;;;;;;;;;;;;;;;:27;;;28301:13;28315:1;28301:16;;;;;;;;;;;;;:46;;;;;28070:3;;;;;;;28035:324;;;;28377:9;28387:7;28395:15;28411:13;28425:5;28369:62;;;;;;;;;;;;;;;27536:903;;;;;:::o;15687:228::-;15744:7;15767:9;;;;;;;;;;;15764:144;;;15799:9;:18;15809:7;15799:18;;;;;;;;;;;;;;;;15792:25;;;;15764:144;15874:22;15888:7;15874:13;:22::i;:::-;15855:9;:18;15865:7;15855:18;;;;;;;;;;;;;;;;:41;15848:48;;15687:228;;;;:::o;25207:277::-;25251:7;;;;;;;;;;;25243:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25299:21;25323:45;25358:9;25323:11;:25;25335:12;:10;:12::i;:::-;25323:25;;;;;;;;;;;;;;;:34;;:45;;;;:::i;:::-;25299:69;;25396:1;25382:13;:15;25379:98;;;25429:10;;;;;;;;;;;25413:37;;:52;25451:13;25413:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25379:98;25207:277;:::o;14190:87::-;14236:7;14263:6;;;;;;;;;;;14256:13;;14190:87;:::o;14396:::-;14435:13;14468:7;14461:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14396:87;:::o;29647:557::-;29685:4;29722:13;;29709:9;:26;;29701:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29781:12;;;;;;;;;;;29773:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29825:17;29845:9;29825:29;;29865:14;29882:30;29896:15;:13;:15::i;:::-;29882:9;:13;;:30;;;;:::i;:::-;29865:47;;29946:1;29926:22;;:10;;;;;;;;;;;:22;;;29923:101;;29980:10;;;;;;;;;;;29964:37;;:48;30002:9;29964:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29923:101;30044:1;30037:6;:8;30034:141;;;30061:37;30078:12;:10;:12::i;:::-;30091:6;30061:16;:37::i;:::-;;30142:12;:10;:12::i;:::-;30118:45;;30135:4;30118:45;;;30156:6;30118:45;;;;;;;;;;;;;;;;;;30034:141;30192:4;30185:11;;;;29647:557;:::o;23611:334::-;23651:4;23688:9;23675;:22;;23667:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23732:17;23752:9;23732:29;;23793:33;23816:9;23793:4;:18;23798:12;:10;:12::i;:::-;23793:18;;;;;;;;;;;;;;;;:22;;:33;;;;:::i;:::-;23772:4;:18;23777:12;:10;:12::i;:::-;23772:18;;;;;;;;;;;;;;;:54;;;;23860:1;23840:22;;:10;;;;;;;;;;;:22;;;23837:101;;23894:10;;;;;;;;;;;23878:37;;:48;23916:9;23878:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23837:101;23611:334;;:::o;24826:373::-;24869:10;;;;;;;;;;;24861:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24921:14;24936:21;24961:44;24995:9;24961:11;:25;24973:12;:10;:12::i;:::-;24961:25;;;;;;;;;;;;;;;:33;;:44;;;;:::i;:::-;24920:85;;;;25033:1;25019:13;:15;25016:98;;;25066:10;;;;;;;;;;;25050:37;;:52;25088:13;25050:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25016:98;25134:1;25127:6;:8;25124:68;;;25151:12;:10;:12::i;:::-;:21;;:29;25173:6;25151:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25124:68;24826:373;;:::o;30896:469::-;30936:15;30952:11;30964:18;30983:17;31011:13;31025:18;31044:20;31086:13;;31076:23;;31119:12;;;;;;;;;;;31110:21;;31155:11;;31142:24;;31189:10;31200:11;;31189:23;;;;;;;;;;;;;;;;;;:29;;;31177:41;;31237:27;31251:12;:10;:12::i;:::-;31237:13;:27::i;:::-;31229:35;;31288:12;:10;:12::i;:::-;:20;;;31275:33;;31334:23;31344:12;:10;:12::i;:::-;31334:9;:23::i;:::-;31319:38;;30896:469;;;;;;;:::o;23445:158::-;23514:4;23531:42;23541:12;:10;:12::i;:::-;23555:9;23566:6;23531:9;:42::i;:::-;23591:4;23584:11;;23445:158;;;;:::o;30216:326::-;30275:15;30328:9;30324:211;30343:10;:17;;;;30340:1;:20;30324:211;;30415:1;30383:14;:20;30398:4;30383:20;;;;;;;;;;;;;;;:23;30404:1;30383:23;;;;;;;;;;;:30;;;;;;;;;;;;:33;;;30380:144;;;30446:62;30458:49;30493:10;30504:1;30493:13;;;;;;;;;;;;;;;;;;30458:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:20;30473:4;30458:20;;;;;;;;;;;;;;;:23;30479:1;30458:23;;;;;;;;;;;:34;;:49;;;;:::i;:::-;30446:7;:11;;:62;;;;:::i;:::-;30436:72;;30380:144;30361:3;;;;;;;30324:211;;;;30216:326;;;:::o;23953:865::-;24005:4;24021:17;24041:9;24021:29;;24061:21;24105:7;;;;;;;;;;;:29;;;;;24125:9;;24114;:20;;24105:29;24097:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24181:1;24171:9;;:11;:33;;;;;24192:12;:10;:12::i;:::-;24184:20;;:6;:20;;;;24171:33;:53;;;;;24222:1;24206:18;;:6;:18;;;;24171:53;24168:401;;;24240:22;24265:35;24294:5;24265:24;24279:9;;24265;:13;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;24240:60;;24327:29;24341:14;24327:9;:13;;:29;;;;:::i;:::-;24315:41;;24402:48;24435:14;24402:11;:19;24414:6;24402:19;;;;;;;;;;;;;;;:28;;;:32;;:48;;;;:::i;:::-;24371:11;:19;24383:6;24371:19;;;;;;;;;;;;;;;:28;;:79;;;;24481:76;24499:57;24524:9;24534:6;24541:14;24499:11;:19;24511:6;24499:19;;;;;;;;;;;;;;;:24;;:57;;;;;;:::i;:::-;24481:13;:17;;:76;;;;:::i;:::-;24465:92;;24168:401;;24595:83;24613:64;24644:9;24654:12;:10;:12::i;:::-;24667:9;24613:11;:25;24625:12;:10;:12::i;:::-;24613:25;;;;;;;;;;;;;;;:30;;:64;;;;;;:::i;:::-;24595:13;:17;;:83;;;;:::i;:::-;24579:99;;24706:1;24692:13;:15;:39;;;;;24729:1;24709:22;;:10;;;;;;;;;;;:22;;;;24692:39;24689:122;;;24763:10;;;;;;;;;;;24747:37;;:52;24785:13;24747:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24689:122;23953:865;;;;;:::o;19850:117::-;13511:12;:10;:12::i;:::-;13500:23;;:7;:5;:7::i;:::-;:23;;;13492:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19952:7:::1;19927:14;:22;19942:6;19927:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19850:117:::0;;:::o;15978:136::-;16051:7;16078:11;:19;16090:6;16078:19;;;;;;;;;;;;;;;:28;16098:7;16078:28;;;;;;;;;;;;;;;;16071:35;;15978:136;;;;:::o;17116:200::-;17177:4;13511:12;:10;:12::i;:::-;13500:23;;:7;:5;:7::i;:::-;:23;;;13492:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17215:4:::1;17201:18;;17209:1;17201:18;;;;:44;;;;;17235:10;;;;;;;;;;;17221:24;;17229:1;17221:24;;;17201:44;17193:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17282:4;17269:10;;:17;;;;;;;;;;;;;;;;;;17304:4;17297:11;;17116:200:::0;;;:::o;16857:251::-;16923:4;13511:12;:10;:12::i;:::-;13500:23;;:7;:5;:7::i;:::-;:23;;;13492:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16961:5:::1;;;;;;;;;;;16947:19;;16955:1;16947:19;;;:41;;;;;16982:6;;;;;;;;;;;16968:20;;16976:1;16968:20;;;16947:41;:57;;;;;17002:1;16990:14;;:2;:14;;;;16947:57;:74;;;;;17019:1;17006:15;;:3;:15;;;;16947:74;16939:95;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17053:2;17045:5;;:10;;;;;;;;;;;;;;;;;;17075:3;17066:6;;:12;;;;;;;;;;;;;;;;;;17096:4;17089:11;;16857:251:::0;;;;:::o;16443:198::-;16534:1;16514:22;;:8;:22;;;;:48;;;;;16556:6;;;;;;;;;;;16540:22;;:12;:10;:12::i;:::-;:22;;;16514:48;16506:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16625:8;16616:6;;:17;;;;;;;;;;;;;;;;;;16443:198;:::o;14491:98::-;14536:15;14571:10;14564:17;;14491:98;:::o;18193:340::-;18306:1;18288:20;;:6;:20;;;;18280:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18387:1;18368:21;;:7;:21;;;;18360:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18470:6;18439:11;:19;18451:6;18439:19;;;;;;;;;;;;;;;:28;18459:7;18439:28;;;;;;;;;;;;;;;:37;;;;18509:7;18492:33;;18501:6;18492:33;;;18518:6;18492:33;;;;;;;;;;;;;;;;;;18193:340;;;:::o;6915:157::-;6994:7;7020:44;7040:23;7051:7;7059:3;7040:10;:23::i;:::-;7020:7;:15;;;:19;;:44;;;;:::i;:::-;7013:51;;6915:157;;;;:::o;900:179::-;958:7;978:9;994:1;990;:5;978:17;;1019:1;1014;:6;;1006:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1070:1;1063:8;;;900:179;;;;:::o;20457:822::-;20573:1;20555:20;;:6;:20;;;;20547:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20657:1;20636:23;;:9;:23;;;;20628:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20733:1;20713:10;:18;20724:6;20713:18;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;20710:165;;;20774:1;20758:6;:14;20765:6;20758:14;;;;;;;;;;;;;;;;;;;;;;;;;:17;;;;:36;;;;;20793:1;20777:6;:14;20784:6;20777:14;;;;;;;;;;;;;;;;;;;;;;;;;:17;;;;20758:36;:58;;;;;20815:1;20796:6;:17;20803:9;20796:17;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;;20758:58;:80;;;;;20837:1;20818:6;:17;20825:9;20818:17;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;;20758:80;20750:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20710:165;20898:9;;;;;;;;;;;20895:140;;;20943:29;20965:6;20943:9;:17;20953:6;20943:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;20923:9;:17;20933:6;20923:17;;;;;;;;;;;;;;;:49;;;;20895:140;;;21003:20;21009:6;21016;21003:5;:20::i;:::-;20895:140;21072:1;21048:14;:22;21063:6;21048:22;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;21045:176;;;21089:34;21106:9;21116:6;21089:16;:34::i;:::-;;21045:176;;;21177:32;21202:6;21177:9;:20;21187:9;21177:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;21154:9;:20;21164:9;21154:20;;;;;;;;;;;;;;;:55;;;;21045:176;21253:9;21236:35;;21245:6;21236:35;;;21264:6;21236:35;;;;;;;;;;;;;;;;;;20457:822;;;:::o;3110:166::-;3196:7;3229:1;3224;:6;;3232:12;3216:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3267:1;3263;:5;3256:12;;3110:166;;;;;:::o;8584:749::-;8684:21;8742:1;8720:24;;:7;:12;;;;;;;;;;;;:24;;;8717:74;;;8775:4;8760:7;:12;;;:19;;;;;;;;;;;;;;;;;;8717:74;8801:14;8818:8;8801:25;;8837:14;8854:23;8865:7;8873:3;8854:10;:23::i;:::-;8837:40;;8904;8938:5;8904:29;8915:3;:17;;;8904:6;:10;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;8888:56;;8964:25;8975:13;8964:6;:10;;:25;;;;:::i;:::-;8955:34;;9000:13;9016:27;9027:3;:15;;;9016:6;:10;;:27;;;;:::i;:::-;9000:43;;9072:26;9092:5;9072:3;:15;;;:19;;:26;;;;:::i;:::-;9054:3;:15;;:44;;;;9125:24;9143:5;9125:7;:13;;;:17;;:24;;;;:::i;:::-;9109:7;:13;;:40;;;;9177:15;9160:7;:14;;:32;;;;9220:1;9203:7;:14;;;:18;;;;;;;;;;;;;;;;;;9246:23;9262:6;9246:7;:11;;;:15;;:23;;;;:::i;:::-;9232:7;:11;;:37;;;;9298:27;9318:6;9298:7;:15;;;:19;;:27;;;;:::i;:::-;9280:7;:15;;:45;;;;8584:749;;;;;;;;;:::o;1362:158::-;1420:7;1453:1;1448;:6;;1440:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1511:1;1507;:5;1500:12;;1362:158;;;;:::o;9341:703::-;9415:21;9448:14;9465:21;9474:7;9482:3;9465:8;:21::i;:::-;9448:38;;9507:1;9500:6;:8;9497:540;;;9541:26;9560:6;9541:7;:14;;;:18;;:26;;;;:::i;:::-;9524:7;:14;;:43;;;;9598:40;9632:5;9598:29;9609:3;:17;;;9598:6;:10;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;9582:56;;9662:25;9673:13;9662:6;:10;;:25;;;;:::i;:::-;9653:34;;9702:13;9718:27;9729:3;:15;;;9718:6;:10;;:27;;;;:::i;:::-;9702:43;;9778:26;9798:5;9778:3;:15;;;:19;;:26;;;;:::i;:::-;9760:3;:15;;:44;;;;9835:24;9853:5;9835:7;:13;;;:17;;:24;;;;:::i;:::-;9819:7;:13;;:40;;;;9891:15;9874:7;:14;;:32;;;;9938:1;9921:7;:14;;;:18;;;;;;;;;;;;;;;;;;9968:23;9984:6;9968:7;:11;;;:15;;:23;;;;:::i;:::-;9954:7;:11;;:37;;;;10024:1;10006:7;:15;;:19;;;;9497:540;;9341:703;;;;;:::o;26904:624::-;26944:7;26985:10;26996:11;;26985:23;;;;;;;;;;;;;;;;;;:31;;;26966:15;:50;26963:511;;27032:10;27048:363;;;;;;;;27089:10;27100:11;;27089:23;;;;;;;;;;;;;;;;;;:31;;;27048:363;;;;27171:11;;27139:10;27150:11;;27139:23;;;;;;;;;;;;;;;;;;:31;;;:43;27048:363;;;;27241:11;;27201:10;27212:11;;27201:23;;;;;;;;;;;;;;;;;;:39;;;:51;27048:363;;;;27323:12;;27311:11;;27271:10;27282:11;;27271:23;;;;;;;;;;;;;;;;;;:39;;;:51;:64;27048:363;;;;27354:56;27404:5;27354:45;27388:10;;27354;27365:11;;27354:23;;;;;;;;;;;;;;;;;;:29;;;:33;;:45;;;;:::i;:::-;:49;;:56;;;;:::i;:::-;27048:363;;;27032:380;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27461:1;27441:10;:17;;;;:21;27427:11;:35;;;;26963:511;27491:10;27502:11;;27491:23;;;;;;;;;;;;;;;;;;:29;;;27484:36;;26904:624;:::o;1779:220::-;1837:7;1866:1;1861;:6;1857:20;;;1876:1;1869:8;;;;1857:20;1888:9;1904:1;1900;:5;1888:17;;1933:1;1928;1924;:5;;;;;;:10;1916:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1990:1;1983:8;;;1779:220;;;;;:::o;28447:168::-;28521:4;28537:48;28578:6;28537:14;:23;28552:7;28537:23;;;;;;;;;;;;;;;:36;28561:11;;28537:36;;;;;;;;;;;:40;;:48;;;;:::i;:::-;;28603:4;28596:11;;28447:168;;;;:::o;7741:835::-;7814:14;7829:21;7871;7880:7;7888:3;7871:8;:21::i;:::-;7862:30;;7919:1;7903:17;;7941:1;7934:6;:8;7931:638;;;7975:26;7994:6;7975:7;:14;;;:18;;:26;;;;:::i;:::-;7958:7;:14;;:43;;;;8034:34;8054:7;:13;;;8034:3;:15;;;:19;;:34;;;;:::i;:::-;8016:3;:15;;:52;;;;8099:1;8083:7;:13;;:17;;;;8132:15;8115:7;:14;;:32;;;;8179:1;8162:7;:14;;;:18;;;;;;;;;;;;;;;;;;8209:1;8195:7;:11;;:15;;;;8243:1;8225:7;:15;;:19;;;;8286:1;8262:26;;:7;:12;;;;;;;;;;;;:26;;;8259:299;;8320:21;8311:6;:30;8308:107;;;8374:21;8365:30;;8308:107;8449:40;8483:5;8449:29;8460:3;:17;;;8449:6;:10;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;8433:56;;8517:25;8528:13;8517:6;:10;;:25;;;;:::i;:::-;8508:34;;8259:299;7931:638;7741:835;;;;;:::o;4712:1082::-;4809:7;4828:15;4846:1;4828:19;;4875:1;4861:5;:12;;;;;;;;;;;;:15;;;:58;;;;;4894:9;:25;;;4878:15;:41;4861:58;4858:904;;;4935:11;4965;4979:54;5007:9;:25;;;4979:9;:23;;;:27;;:54;;;;:::i;:::-;4965:68;;5056:1;5051:3;:6;5048:59;;5084:7;5077:14;;;;;;;5048:59;5143:9;:23;;;5124:15;:42;5121:226;;5218:9;:25;;;5192:9;:23;;;:51;5186:57;;5121:226;;;5306:9;:25;;;5288:15;:43;5282:49;;5121:226;5368:1;5364:3;:5;:14;;;;;5375:3;5371;:7;5364:14;5361:390;;;5408:29;5433:3;5408:20;5424:3;5408:5;:11;;;:15;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;5398:39;;5467:5;:11;;;5459:7;:19;5456:158;;;5512:24;5524:5;:11;;;5512:7;:11;;:24;;;;:::i;:::-;5502:34;;5456:158;;;5593:1;5583:11;;5456:158;5361:390;;;5641:1;5637:3;:5;:15;;;;;5649:3;5644;:8;;5637:15;:40;;;;;5666:5;:11;;;5654:5;:11;;;:23;5637:40;5634:117;;;5707:28;5723:5;:11;;;5707:5;:11;;;:15;;:28;;;;:::i;:::-;5697:38;;5634:117;5361:390;4858:904;;;5779:7;5772:14;;;4712:1082;;;;;:::o;2477:153::-;2535:7;2567:1;2563;:5;2555:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2621:1;2617;:5;;;;;;2610:12;;2477:153;;;;:::o;7080:653::-;7159:14;7225:1;7207:7;:14;;;;;;;;;;;;:19;;;:40;;;;;7246:1;7230:7;:13;;;:17;7207:40;:76;;;;;7269:7;:14;;;7251:15;:32;7207:76;7204:522;;;7299:11;7313:35;7333:7;:14;;;7313:15;:19;;:35;;;;:::i;:::-;7299:49;;7370:7;7366:3;:11;7363:352;;;7406:43;7433:3;:15;;;7406:22;7424:3;7406:7;:13;;;:17;;:22;;;;:::i;:::-;:26;;:43;;;;:::i;:::-;7397:52;;7474:16;7482:7;7474:3;:7;;:16;;;;:::i;:::-;7468:22;;7518:90;7529:78;7590:16;7598:7;7590:3;:7;;:16;;;;:::i;:::-;7529:56;7577:7;7529:43;7556:3;:15;;;7529:22;7547:3;7529:7;:13;;;:17;;:22;;;;:::i;:::-;:26;;:43;;;;:::i;:::-;:47;;:56;;;;:::i;:::-;:60;;:78;;;;:::i;:::-;7518:6;:10;;:90;;;;:::i;:::-;7509:99;;7363:352;;;7656:43;7683:3;:15;;;7656:22;7674:3;7656:7;:13;;;:17;;:22;;;;:::i;:::-;:26;;:43;;;;:::i;:::-;7647:52;;7363:352;7204:522;;7080:653;;;;:::o;28623:1016::-;28719:6;28697:18;28707:7;28697:9;:18::i;:::-;:28;;28689:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28767:15;28785:6;28767:24;;28824:1;28805:9;:18;28815:7;28805:18;;;;;;;;;;;;;;;;:20;28802:349;;;28864:7;28844:9;:18;28854:7;28844:18;;;;;;;;;;;;;;;;:27;28841:299;;28912:61;28935:7;28912:61;;;;;;;;;;;;;;;;;:9;:18;28922:7;28912:18;;;;;;;;;;;;;;;;:22;;:61;;;;;:::i;:::-;28891:9;:18;28901:7;28891:18;;;;;;;;;;;;;;;:82;;;;29002:1;28992:11;;28841:299;;;29052:31;29064:9;:18;29074:7;29064:18;;;;;;;;;;;;;;;;29052:7;:11;;:31;;;;:::i;:::-;29042:41;;29123:1;29102:9;:18;29112:7;29102:18;;;;;;;;;;;;;;;:22;;;;28841:299;28802:349;29172:1;29164:7;:9;29161:411;;;29226:7;29197:25;29214:7;29197:16;:25::i;:::-;:36;;29189:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29283:9;29279:282;29298:10;:17;;;;29295:1;:20;29279:282;;29382:1;29342:14;:28;29357:12;:10;:12::i;:::-;29342:28;;;;;;;;;;;;;;;:31;29371:1;29342:31;;;;;;;;;;;:38;;;;;;;;;;;;:41;;;29339:207;;;29407:15;29425:61;29464:10;29475:1;29464:13;;;;;;;;;;;;;;;;;;29425:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29478:7;29425:14;:28;29440:12;:10;:12::i;:::-;29425:28;;;;;;;;;;;;;;;:31;29454:1;29425:31;;;;;;;;;;;:38;;:61;;;;;:::i;:::-;29407:79;;29519:7;29509:17;;29339:207;;29316:3;;;;;;;29279:282;;;;29161:411;29599:1;29590:7;:10;29582:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28623:1016;;;:::o;4468:236::-;4541:7;4574:23;4590:6;4574:5;:11;;;:15;;:23;;;;:::i;:::-;4560:5;:11;;:37;;;;4625:1;4611:5;:12;;;;;;;;;;;;:15;;;4608:60;;4655:1;4642:5;:12;;;:14;;;;;;;;;;;;;;;;;;4608:60;4685:5;:11;;;4678:18;;4468:236;;;;:::o;5802:640::-;5905:15;5964:1;5957:6;:8;5954:481;;;5981:15;5999:27;6010:5;6016:9;5999:10;:27::i;:::-;5981:45;;6051:7;6044:6;:14;6041:245;;;6088:19;6099:7;6088:6;:10;;:19;;;;:::i;:::-;6078:29;;6140:24;6156:7;6140:5;:11;;;:15;;:24;;;;:::i;:::-;6126:5;:11;;:38;;;;6041:245;;;6213:1;6203:11;;6247:23;6263:6;6247:5;:11;;;:15;;:23;;;;:::i;:::-;6233:5;:11;;:37;;;;6041:245;6316:5;:11;;;6303:5;:11;;;:24;6300:77;;6360:1;6347:5;:12;;;:14;;;;;;;;;;;;;;;;;;6300:77;5954:481;;;;6417:6;6407:16;;5954:481;5802:640;;;;;:::o

Swarm Source

ipfs://39fdbb9a376b9308c111e8eb346d0e0d959bdbf80f966227c2884c664818f86e
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.