ETH Price: $1,911.41 (+4.44%)
 

Overview

ETH Balance

0.0040684946113622 ETH

Eth Value

$7.78 (@ $1,911.41/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Swap Token95069252020-02-18 11:45:022198 days ago1582026302IN
0x9bb37b61...c940Ce5Fc
0 ETH0.001541619
Mining Token95069132020-02-18 11:43:242198 days ago1582026204IN
0x9bb37b61...c940Ce5Fc
0 ETH0.001298059.5
Mining Token95068632020-02-18 11:35:242198 days ago1582025724IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000814885
Set Level S95068122020-02-18 11:23:382198 days ago1582025018IN
0x9bb37b61...c940Ce5Fc
0 ETH0.0003060910
Mining Token94822262020-02-14 16:27:162202 days ago1581697636IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000533275
Ai Set Token G394821282020-02-14 16:07:102202 days ago1581696430IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000153795
Mining Token94820892020-02-14 15:59:292202 days ago1581695969IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000533335
Mining Token94815862020-02-14 14:14:172202 days ago1581689657IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000533335
Mining Token94815092020-02-14 13:58:222202 days ago1581688702IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000533275
Mining Token94806322020-02-14 10:31:492202 days ago1581676309IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000819676
Mining Token94806232020-02-14 10:29:412202 days ago1581676181IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000614726
Mining Token94804592020-02-14 9:58:442202 days ago1581674324IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000377384
Mining Token94804492020-02-14 9:56:342202 days ago1581674194IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000533335
Mining Token94804492020-02-14 9:56:342202 days ago1581674194IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000533275
Mining Token94803622020-02-14 9:35:432202 days ago1581672943IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000533335
Mining Token94798052020-02-14 7:23:262202 days ago1581665006IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000533335
Mining Token94796942020-02-14 7:01:252202 days ago1581663685IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000853328
Mining Token94787192020-02-14 3:26:572203 days ago1581650817IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000133811.1
Mining Token94782682020-02-14 1:46:522203 days ago1581644812IN
0x9bb37b61...c940Ce5Fc
0 ETH0.00020492
Mining Token94778752020-02-14 0:20:172203 days ago1581639617IN
0x9bb37b61...c940Ce5Fc
0 ETH0.00024591.8
Mining Token94778542020-02-14 0:14:012203 days ago1581639241IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000117311.1
Join Package Via...94759602020-02-13 17:12:472203 days ago1581613967IN
0x9bb37b61...c940Ce5Fc
0 ETH0.007086415
Join Package Via...94757212020-02-13 16:16:502203 days ago1581610610IN
0x9bb37b61...c940Ce5Fc
0 ETH0.004807336.25
Mining Token94756942020-02-13 16:09:242203 days ago1581610164IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000683125
Mining Token94756912020-02-13 16:09:072203 days ago1581610147IN
0x9bb37b61...c940Ce5Fc
0 ETH0.000758065
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-95069252020-02-18 11:45:022198 days ago1582026302
0x9bb37b61...c940Ce5Fc
618.37 ETH
-94754752020-02-13 15:21:392203 days ago1581607299
0x9bb37b61...c940Ce5Fc
0.1382269 ETH
-94682512020-02-12 12:54:552204 days ago1581512095
0x9bb37b61...c940Ce5Fc
1.61190328 ETH
-94628622020-02-11 16:42:202205 days ago1581439340
0x9bb37b61...c940Ce5Fc
0.0148791 ETH
-94577002020-02-10 21:50:532206 days ago1581371453
0x9bb37b61...c940Ce5Fc
0.10043397 ETH
-94560492020-02-10 15:58:432206 days ago1581350323
0x9bb37b61...c940Ce5Fc
0.18611111 ETH
-94230072020-02-05 13:49:272211 days ago1580910567
0x9bb37b61...c940Ce5Fc
1.96606217 ETH
-94228982020-02-05 13:27:212211 days ago1580909241
0x9bb37b61...c940Ce5Fc
0.19870466 ETH
-94227562020-02-05 12:55:222211 days ago1580907322
0x9bb37b61...c940Ce5Fc
1.14533678 ETH
-94227302020-02-05 12:51:212211 days ago1580907081
0x9bb37b61...c940Ce5Fc
0.12176165 ETH
-94227192020-02-05 12:49:042211 days ago1580906944
0x9bb37b61...c940Ce5Fc
0.60621761 ETH
-94227152020-02-05 12:48:132211 days ago1580906893
0x9bb37b61...c940Ce5Fc
0.34145077 ETH
-94226482020-02-05 12:34:342211 days ago1580906074
0x9bb37b61...c940Ce5Fc
2.59067357 ETH
-94226482020-02-05 12:34:342211 days ago1580906074
0x9bb37b61...c940Ce5Fc
3.36787564 ETH
-94226132020-02-05 12:26:592211 days ago1580905619
0x9bb37b61...c940Ce5Fc
0.20621761 ETH
-94225372020-02-05 12:06:002211 days ago1580904360
0x9bb37b61...c940Ce5Fc
0.28720207 ETH
-94224942020-02-05 11:58:202211 days ago1580903900
0x9bb37b61...c940Ce5Fc
0.10621761 ETH
-94224132020-02-05 11:40:312211 days ago1580902831
0x9bb37b61...c940Ce5Fc
0.61632124 ETH
-94219712020-02-05 10:06:142211 days ago1580897174
0x9bb37b61...c940Ce5Fc
0.56994818 ETH
-94218652020-02-05 9:43:382211 days ago1580895818
0x9bb37b61...c940Ce5Fc
1.14404145 ETH
-94216992020-02-05 9:06:062211 days ago1580893566
0x9bb37b61...c940Ce5Fc
0.35751295 ETH
-94212952020-02-05 7:33:442211 days ago1580888024
0x9bb37b61...c940Ce5Fc
3.88601036 ETH
-94212032020-02-05 7:13:532211 days ago1580886833
0x9bb37b61...c940Ce5Fc
0.64766839 ETH
-94211872020-02-05 7:11:112211 days ago1580886671
0x9bb37b61...c940Ce5Fc
1.176943 ETH
-94211152020-02-05 6:58:082211 days ago1580885888
0x9bb37b61...c940Ce5Fc
0.26943005 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ReserveFund

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2019-12-18
*/

pragma solidity 0.4.25;

contract Auth {

    address internal mainAdmin;
    address internal contractAdmin;

    event OwnershipTransferred(address indexed _previousOwner, address indexed _newOwner);

    constructor(
        address _mainAdmin,
        address _contractAdmin
    )
    internal
    {
        mainAdmin = _mainAdmin;
        contractAdmin = _contractAdmin;
    }

    modifier onlyAdmin() {
        require(isMainAdmin() || isContractAdmin(), "onlyAdmin");
        _;
    }

    modifier onlyMainAdmin() {
        require(isMainAdmin(), "onlyMainAdmin");
        _;
    }

    modifier onlyContractAdmin() {
        require(isContractAdmin(), "onlyContractAdmin");
        _;
    }

    function transferOwnership(address _newOwner) onlyContractAdmin internal {
        require(_newOwner != address(0x0));
        contractAdmin = _newOwner;
        emit OwnershipTransferred(msg.sender, _newOwner);
    }

    function isMainAdmin() public view returns (bool) {
        return msg.sender == mainAdmin;
    }

    function isContractAdmin() public view returns (bool) {
        return msg.sender == contractAdmin;
    }
}

library Math {
    function abs(int number) internal pure returns (uint) {
        if (number < 0) {
            return uint(number * - 1);
        }
        return uint(number);
    }
}

library StringUtil {
    struct slice {
        uint _length;
        uint _pointer;
    }

    function validateUserName(string memory _username)
    internal
    pure
    returns (bool)
    {
        uint8 len = uint8(bytes(_username).length);
        if ((len < 4) || (len > 18)) return false;

        // only contain A-Z 0-9
        for (uint8 i = 0; i < len; i++) {
            if (
                (uint8(bytes(_username)[i]) < 48) ||
                (uint8(bytes(_username)[i]) > 57 && uint8(bytes(_username)[i]) < 65) ||
                (uint8(bytes(_username)[i]) > 90)
            ) return false;
        }
        // First char != '0'
        return uint8(bytes(_username)[0]) != 48;
    }
}

library SafeMath {
    /**
     * @dev Multiplies two unsigned integers, reverts on overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath mul error");

        return c;
    }

    /**
     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath div error");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath sub error");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Adds two unsigned integers, reverts on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath add error");

        return c;
    }

    /**
     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
     * reverts when dividing by zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath mod error");
        return a % b;
    }
}

interface IWallet {

    function deposit(address _to, uint _deposited, uint8 _source, uint _sourceAmount) external;

    function getInvestorLastDeposited(address _investor) external view returns (uint);

    function getUserWallet(address _investor) external view returns (uint, uint[], uint, uint, uint, uint, uint, uint);

    function getProfitBalance(address _investor) external view returns (uint);

}

interface IWalletStore {

    function bonusForAdminWhenUserBuyPackageViaDollar(uint _amount, address _admin) external;

    function mineToken(address _from, uint _amount) external;

    function increaseETHWithdrew(uint _amount) external;

    function increaseETHWithdrewOfInvestor(address _investor, uint _ethWithdrew) external;

    function getTD(address _investor) external view returns (uint);
}

interface ICitizen {

    function addF1DepositedToInviter(address _invitee, uint _amount) external;

    function addNetworkDepositedToInviter(address _inviter, uint _amount, uint _source, uint _sourceAmount) external;

    function checkInvestorsInTheSameReferralTree(address _inviter, address _invitee) external view returns (bool);

    function getF1Deposited(address _investor) external view returns (uint);

    function getId(address _investor) external view returns (uint);

    function getInvestorCount() external view returns (uint);

    function getInviter(address _investor) external view returns (address);

    function getDirectlyInvitee(address _investor) external view returns (address[]);

    function getDirectlyInviteeHaveJoinedPackage(address _investor) external view returns (address[]);

    function getNetworkDeposited(address _investor) external view returns (uint);

    function getRank(address _investor) external view returns (uint);

    function getRankBonus(uint _index) external view returns (uint);

    function getUserAddresses(uint _index) external view returns (address);

    function getSubscribers(address _investor) external view returns (uint);

    function increaseInviterF1HaveJoinedPackage(address _invitee) external;

    function increaseInviterF1HaveJoinedPackageForUserVIP(address userVIP, address _invitee) external;

    function isCitizen(address _user) view external returns (bool);

    function register(address _user, string _userName, address _inviter) external returns (uint);

    function showInvestorInfo(address _investorAddress) external view returns (uint, string memory, address, address[], uint, uint, uint, uint);
}

interface IReserveFund {

    function register(string _userName, address _inviter) external;

    function miningToken(uint _tokenAmount) external;

    function swapToken(uint _amount) external;
}

/**
 * @title ERC20 interface
 * @dev see https://eips.ethereum.org/EIPS/eip-20
 */
contract IERC20 {
    function transfer(address to, uint256 value) public returns (bool);

    function approve(address spender, uint256 value) public returns (bool);

    function transferFrom(address from, address to, uint256 value) public returns (bool);

    function balanceOf(address who) public view returns (uint256);

    function allowance(address owner, address spender) public view returns (uint256);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ReserveFund is Auth {
    using StringUtil for *;
    using Math for int;
    using SafeMath for uint;

    enum Lock {
        UNLOCKED,
        PROFIT,
        MINING_TOKEN,
        BOTH
    }

    struct MTracker {
        uint time;
        uint amount;
    }

    struct STracker {
        uint time;
        uint amount;
    }

    struct LevelS {
        uint minTotalDeposited;
        uint maxTotalDeposited;
        uint maxS;
    }

    mapping(address => MTracker[]) private mTracker;
    mapping(address => STracker[]) private sTracker;
    LevelS[] public levelS;

    mapping(address => Lock) public lockedAccounts;
    uint private miningDifficulty = 200000; // $200
    uint private transferDifficulty = 1000; // $1
    uint private aiTokenG3; // 1 ETH = aiTokenG3 SFU
    uint public aiTokenG2; // in mili-dollar (1/1000 dollar)
    uint public minJoinPackage = 200000; // $200
    uint public maxJoinPackage = 50000000; // $50k
    uint public currentETHPrice;
    bool public enableJoinPackageViaEther = true;
    address public burnToken;

    ICitizen private citizen;
    IWallet private wallet;
    IWalletStore private walletStore;
    IERC20 public sfuToken;
    IReserveFund private oldRF;

    event AccountsLocked(address[] addresses, uint8 lockingType);
    event AITokenG2Set(uint rate);
    event AITokenG3Set(uint rate);
    event ETHPriceSet(uint ethPrice);
    event MinJoinPackageSet(uint minJoinPackage);
    event MaxJoinPackageSet(uint maxJoinPackage);
    event EnableJoinPackageViaEtherSwitched(bool enabled);
    event EtherPriceUpdated(uint currentETHPrice);
    event MiningDifficultySet(uint rate);
    event TransferDifficultySet(uint value);
    event PackageJoinedViaEther(address buyer, address receiver, uint amount);
    event PackageJoinedViaToken(address buyer, address receiver, uint amount);
    event PackageJoinedViaDollar(address buyer, address receiver, uint amount);
    event Registered(uint id, string userName, address userAddress, address inviter);
    event TokenMined(address buyer, uint amount, uint walletAmount);
    event TokenSwapped(address seller, uint amount, uint ethAmount);

    constructor (
        address _oldRF,
        address _mainAdmin,
        uint _currentETHPrice
    )
    Auth(_mainAdmin, msg.sender)
    public
    {
        oldRF = IReserveFund(_oldRF);
        currentETHPrice = _currentETHPrice;

        levelS.push(LevelS(200 * 1000, 5000 * 1000, 4 * (10 ** 18)));
        levelS.push(LevelS(5000 * 1000, 10000 * 1000, 8 * (10 ** 18)));
        levelS.push(LevelS(10000 * 1000, 30000 * 1000, 16 * (10 ** 18)));
        levelS.push(LevelS(30000 * 1000, 0, 32 * (10 ** 18)));
    }

    // ADMINS FUNCTIONS

    function setW(address _walletContract) onlyContractAdmin public {
        wallet = IWallet(_walletContract);
    }

    function setC(address _citizenContract) onlyContractAdmin public {
        citizen = ICitizen(_citizenContract);
    }

    function setWS(address _walletStore) onlyContractAdmin public {
        walletStore = IWalletStore(_walletStore);
    }

    function setSFUToken(address _sfuToken) onlyContractAdmin public {
        sfuToken = IERC20(_sfuToken);
    }

    function setBurnToken(address _burnToken) onlyContractAdmin public {
        burnToken = _burnToken;
    }

    function updateETHPrice(uint _currentETHPrice) onlyAdmin public {
        require(_currentETHPrice > 0, "Must be > 0");
        require(_currentETHPrice != currentETHPrice, "Must be new value");
        currentETHPrice = _currentETHPrice;
        emit ETHPriceSet(currentETHPrice);
    }

    function updateContractAdmin(address _newAddress) onlyContractAdmin public {
        transferOwnership(_newAddress);
    }

    function setMinJoinPackage(uint _minJoinPackage) onlyAdmin public {
        require(_minJoinPackage > 0, "Must be > 0");
        require(_minJoinPackage < maxJoinPackage, "Must be < maxJoinPackage");
        require(_minJoinPackage != minJoinPackage, "Must be new value");
        minJoinPackage = _minJoinPackage;
        emit MinJoinPackageSet(minJoinPackage);
    }

    function setMaxJoinPackage(uint _maxJoinPackage) onlyAdmin public {
        require(_maxJoinPackage > minJoinPackage, "Must be > minJoinPackage");
        require(_maxJoinPackage != maxJoinPackage, "Must be new value");
        maxJoinPackage = _maxJoinPackage;
        emit MaxJoinPackageSet(maxJoinPackage);
    }

    function setEnableJoinPackageViaEther(bool _enableJoinPackageViaEther) onlyAdmin public {
        require(_enableJoinPackageViaEther != enableJoinPackageViaEther, "Must be new value");
        enableJoinPackageViaEther = _enableJoinPackageViaEther;
        emit EnableJoinPackageViaEtherSwitched(enableJoinPackageViaEther);
    }

    function setLevelS(uint _index, uint _maxS) onlyAdmin public {
        require(_maxS > 0, "Must be > 0");
        require(_index < levelS.length, "Must be <= 4");
        LevelS storage level = levelS[_index];
        level.maxS = _maxS;
    }

    function aiSetTokenG2(uint _rate) onlyAdmin public {
        require(_rate > 0, "aiTokenG2 must be > 0");
        require(_rate != aiTokenG2, "aiTokenG2 must be new value");
        aiTokenG2 = _rate;
        emit AITokenG2Set(aiTokenG2);
    }

    function aiSetTokenG3(uint _rate) onlyAdmin public {
        require(_rate > 0, "aiTokenG3 must be > 0");
        require(_rate != aiTokenG3, "aiTokenG3 must be new value");
        aiTokenG3 = _rate;
        emit AITokenG3Set(aiTokenG3);
    }

    function setMiningDifficulty(uint _miningDifficulty) onlyAdmin public {
        require(_miningDifficulty > 0, "miningDifficulty must be > 0");
        require(_miningDifficulty != miningDifficulty, "miningDifficulty must be new value");
        miningDifficulty = _miningDifficulty;
        emit MiningDifficultySet(miningDifficulty);
    }

    function setTransferDifficulty(uint _transferDifficulty) onlyAdmin public {
        require(_transferDifficulty > 0, "MinimumBuy must be > 0");
        require(_transferDifficulty != transferDifficulty, "transferDifficulty must be new value");
        transferDifficulty = _transferDifficulty;
        emit TransferDifficultySet(transferDifficulty);
    }

    function lockAccounts(address[] _addresses, uint8 _type) onlyAdmin public {
        require(_addresses.length > 0, "Address cannot be empty");
        require(_addresses.length <= 256, "Maximum users per action is 256");
        require(_type >= 0 && _type <= 3, "Type is invalid");
        for (uint8 i = 0; i < _addresses.length; i++) {
            require(_addresses[i] != msg.sender, "You cannot lock yourself");
            lockedAccounts[_addresses[i]] = Lock(_type);
        }
        emit AccountsLocked(_addresses, _type);
    }

    function sr(string memory _n, address _i) onlyMainAdmin public {
        oldRF.register(_n, _i);
    }

    function sm(uint _a) onlyMainAdmin public {
        oldRF.miningToken(_a);
    }

    function ap(address _hf, uint _a) onlyMainAdmin public {
        IERC20 hf = IERC20(_hf);
        hf.approve(address(oldRF), _a);
    }

    function ss(uint _a) onlyMainAdmin public {
        oldRF.swapToken(_a);
    }


    // PUBLIC FUNCTIONS

    function() public payable {}

    function getAITokenG3() view public returns (uint) {
        return aiTokenG3;
    }

    function getMiningDifficulty() view public returns (uint) {
        return miningDifficulty;
    }

    function getTransferDifficulty() view public returns (uint) {
        return transferDifficulty;
    }

    function getLockedStatus(address _investor) view public returns (uint8) {
        return uint8(lockedAccounts[_investor]);
    }


    function register(string memory _userName, address _inviter) public {
        require(citizen.isCitizen(_inviter), "Inviter did not registered.");
        require(_inviter != msg.sender, "Cannot referral yourself");
        uint id = citizen.register(msg.sender, _userName, _inviter);
        emit Registered(id, _userName, msg.sender, _inviter);
    }

    function showMe() public view returns (uint, string memory, address, address[], uint, uint, uint, uint) {
        return citizen.showInvestorInfo(msg.sender);
    }

    function joinPackageViaEther(uint _rate, address _to) payable public {
        require(enableJoinPackageViaEther, "Can not buy via Ether now");
        validateJoinPackage(msg.sender, _to);
        require(_rate > 0, "Rate must be > 0");
        validateAmount((msg.value * _rate) / (10 ** 18));
        bool rateHigherUnder3Percents = (int(currentETHPrice - _rate).abs() * 100 / _rate) <= uint(3);
        bool rateLowerUnder5Percents = (int(_rate - currentETHPrice).abs() * 100 / currentETHPrice) <= uint(5);
        bool validRate = rateHigherUnder3Percents && rateLowerUnder5Percents;
        require(validRate, "Invalid rate, please check again!");
        doJoinViaEther(msg.sender, _to, msg.value, _rate);
    }

    function joinPackageViaDollar(uint _amount, address _to) public {
        validateJoinPackage(msg.sender, _to);
        validateAmount(_amount);
        validateProfitBalance(msg.sender, _amount);
        wallet.deposit(_to, _amount, 2, _amount);
        walletStore.bonusForAdminWhenUserBuyPackageViaDollar(_amount / 5, mainAdmin);
        emit PackageJoinedViaDollar(msg.sender, _to, _amount);
    }

    function joinPackageViaToken(uint _amount, address _to) public {
        validateJoinPackage(msg.sender, _to);
        validateAmount(_amount);
        uint tokenAmount = (_amount / aiTokenG2) * (10 ** 18);
        require(sfuToken.allowance(msg.sender, address(this)) >= tokenAmount, "You must call approve() first");
        uint userOldBalance = sfuToken.balanceOf(msg.sender);
        require(userOldBalance >= tokenAmount, "You have not enough tokens");
        require(sfuToken.transferFrom(msg.sender, address(this), tokenAmount), "Transfer token failed");
        require(sfuToken.transfer(mainAdmin, tokenAmount / 5), "Transfer token to admin failed");
        wallet.deposit(_to, _amount, 1, tokenAmount);
        emit PackageJoinedViaToken(msg.sender, _to, _amount);
    }

    function miningToken(uint _tokenAmount) public {
        require(aiTokenG2 > 0, "Invalid aiTokenG2, please contact admin");
        require(citizen.isCitizen(msg.sender), "Please register first");
        validateLockingMiningToken(msg.sender);
        uint fiatAmount = (_tokenAmount * aiTokenG2) / (10 ** 18);
        validateMAmount(fiatAmount);
        require(fiatAmount >= miningDifficulty, "Amount must be >= miningDifficulty");
        validateProfitBalance(msg.sender, fiatAmount);

        walletStore.mineToken(msg.sender, fiatAmount);
        uint userOldBalance = sfuToken.balanceOf(msg.sender);
        require(sfuToken.transfer(msg.sender, _tokenAmount), "Transfer token to user failed");
        require(sfuToken.balanceOf(msg.sender) == userOldBalance + _tokenAmount, "User token changed invalid");
        emit TokenMined(msg.sender, _tokenAmount, fiatAmount);
    }

    function swapToken(uint _amount) public {
        require(_amount > 0, "Invalid amount to swap");
        require(sfuToken.balanceOf(msg.sender) >= _amount, "You have not enough balance");
        uint etherAmount = getEtherAmountFromToken(_amount);
        require(address(this).balance >= etherAmount, "The contract have not enough balance");
        validateSAmount(etherAmount);
        require(sfuToken.allowance(msg.sender, address(this)) >= _amount, "You must call approve() first");
        require(sfuToken.transferFrom(msg.sender, burnToken, _amount), "Transfer token failed");
        msg.sender.transfer(etherAmount);

        walletStore.increaseETHWithdrew(etherAmount);
        walletStore.increaseETHWithdrewOfInvestor(msg.sender, etherAmount);
        emit TokenSwapped(msg.sender, _amount, etherAmount);
    }

    function getCurrentEthPrice() public view returns (uint) {
        return currentETHPrice;
    }

    // PRIVATE FUNCTIONS

    function getEtherAmountFromToken(uint _amount) private view returns (uint) {
        require(aiTokenG3 > 0, "Invalid aiTokenG3, please contact admin");
        return _amount / aiTokenG3;
    }

    function doJoinViaEther(address _from, address _to, uint _etherAmountInWei, uint _rate) private {
        uint etherForAdmin = _etherAmountInWei / 5;
        uint packageValue = (_etherAmountInWei * _rate) / (10 ** 18);
        wallet.deposit(_to, packageValue, 0, _etherAmountInWei);
        mainAdmin.transfer(etherForAdmin);
        emit PackageJoinedViaEther(_from, _to, packageValue);
    }

    function validateAmount(uint _packageValue) public view {
        require(_packageValue > 0, "Amount must be > 0");
        require(_packageValue <= maxJoinPackage, "Can not join with amount that greater max join package");
        require(_packageValue >= minJoinPackage, "Minimum for first join is $200");
    }

    function validateJoinPackage(address _from, address _to) private view {
        require(citizen.isCitizen(_from), "Please register first");
        require(citizen.isCitizen(_to), "You can only buy for an exists member");
        if (_from != _to) {
            require(citizen.checkInvestorsInTheSameReferralTree(_from, _to), "This user isn't in your referral tree");
        }
        require(currentETHPrice > 0, "Invalid currentETHPrice, please contact admin!");
    }

    function validateLockingMiningToken(address _from) private view {
        bool canBuy = lockedAccounts[_from] != Lock.MINING_TOKEN && lockedAccounts[_from] != Lock.BOTH;
        require(canBuy, "Your account get locked from mining token");
    }

    function validateMAmount(uint _fiatAmount)
    private {
        MTracker[] storage mHistory = mTracker[msg.sender];
        uint maxM = 4 * walletStore.getTD(msg.sender);
        if (mHistory.length == 0) {
            require(_fiatAmount <= maxM, "Today: You can only mine maximum 4x of your total deposited");
        } else {
            uint totalMInLast24Hour = 0;
            uint countTrackerNotInLast24Hour = 0;
            uint length = mHistory.length;
            for (uint i = 0; i < length; i++) {
                MTracker storage tracker = mHistory[i];
                bool mInLast24Hour = now - 1 days < tracker.time;
                if (mInLast24Hour) {
                    totalMInLast24Hour = totalMInLast24Hour.add(tracker.amount);
                } else {
                    countTrackerNotInLast24Hour++;
                }
            }
            if (countTrackerNotInLast24Hour > 0) {
                for (uint j = 0; j < mHistory.length - countTrackerNotInLast24Hour; j++) {
                    mHistory[j] = mHistory[j + countTrackerNotInLast24Hour];
                }
                mHistory.length -= countTrackerNotInLast24Hour;
            }
            require(totalMInLast24Hour.add(_fiatAmount) <= maxM, "Today: You can only mine maximum 4x of your total deposited");
        }
        mHistory.push(MTracker(now, _fiatAmount));
    }

    function validateSAmount(uint _amount)
    private {
        STracker[] storage sHistory = sTracker[msg.sender];
        uint maxS = 0;
        uint td = walletStore.getTD(msg.sender);
        for (uint i = 0; i < levelS.length; i++) {
            LevelS storage level = levelS[i];
            if (i == levelS.length - 1) {
                maxS = level.maxS;
                break;
            }
            if (level.minTotalDeposited <= td && td < level.maxTotalDeposited) {
                maxS = level.maxS;
                break;
            }
        }
        require(maxS > 0, "Invalid maxS, maybe you have not joined package or please contact admin");
        if (sHistory.length == 0) {
            require(_amount <= maxS, "Amount is invalid");
        } else {
            uint totalSInLast24Hour = 0;
            uint countTrackerNotInLast24Hour = 0;
            uint length = sHistory.length;
            for (i = 0; i < length; i++) {
                STracker storage tracker = sHistory[i];
                bool sInLast24Hour = now - 1 days < tracker.time;
                if (sInLast24Hour) {
                    totalSInLast24Hour = totalSInLast24Hour.add(tracker.amount);
                } else {
                    countTrackerNotInLast24Hour++;
                }
            }
            if (countTrackerNotInLast24Hour > 0) {
                for (uint j = 0; j < sHistory.length - countTrackerNotInLast24Hour; j++) {
                    sHistory[j] = sHistory[j + countTrackerNotInLast24Hour];
                }
                sHistory.length -= countTrackerNotInLast24Hour;
            }
            require(totalSInLast24Hour.add(_amount) <= maxS, "Too much for today");
        }
        sHistory.push(STracker(now, _amount));
    }

    function validateProfitBalance(address _user, uint _amount) private view {
        uint profitBalance = wallet.getProfitBalance(_user);
        require(profitBalance >= _amount, "You have not enough balance");
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"updateContractAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_miningDifficulty","type":"uint256"}],"name":"setMiningDifficulty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isMainAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningDifficulty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_userName","type":"string"},{"name":"_inviter","type":"address"}],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAITokenG3","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sfuToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_citizenContract","type":"address"}],"name":"setC","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"enableJoinPackageViaEther","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_to","type":"address"}],"name":"joinPackageViaToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAmount","type":"uint256"}],"name":"miningToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"swapToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTransferDifficulty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_transferDifficulty","type":"uint256"}],"name":"setTransferDifficulty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"},{"name":"_to","type":"address"}],"name":"joinPackageViaEther","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_to","type":"address"}],"name":"joinPackageViaDollar","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_enableJoinPackageViaEther","type":"bool"}],"name":"setEnableJoinPackageViaEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_walletStore","type":"address"}],"name":"setWS","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_walletContract","type":"address"}],"name":"setW","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"},{"name":"_maxS","type":"uint256"}],"name":"setLevelS","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentEthPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_currentETHPrice","type":"uint256"}],"name":"updateETHPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_a","type":"uint256"}],"name":"ss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxJoinPackage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"showMe","outputs":[{"name":"","type":"uint256"},{"name":"","type":"string"},{"name":"","type":"address"},{"name":"","type":"address[]"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_a","type":"uint256"}],"name":"sm","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_hf","type":"address"},{"name":"_a","type":"uint256"}],"name":"ap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sfuToken","type":"address"}],"name":"setSFUToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"aiSetTokenG3","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_n","type":"string"},{"name":"_i","type":"address"}],"name":"sr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_minJoinPackage","type":"uint256"}],"name":"setMinJoinPackage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"},{"name":"_type","type":"uint8"}],"name":"lockAccounts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_maxJoinPackage","type":"uint256"}],"name":"setMaxJoinPackage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"levelS","outputs":[{"name":"minTotalDeposited","type":"uint256"},{"name":"maxTotalDeposited","type":"uint256"},{"name":"maxS","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minJoinPackage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_burnToken","type":"address"}],"name":"setBurnToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_packageValue","type":"uint256"}],"name":"validateAmount","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"aiTokenG2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isContractAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"aiSetTokenG2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentETHPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lockedAccounts","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_investor","type":"address"}],"name":"getLockedStatus","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_oldRF","type":"address"},{"name":"_mainAdmin","type":"address"},{"name":"_currentETHPrice","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addresses","type":"address[]"},{"indexed":false,"name":"lockingType","type":"uint8"}],"name":"AccountsLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rate","type":"uint256"}],"name":"AITokenG2Set","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rate","type":"uint256"}],"name":"AITokenG3Set","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethPrice","type":"uint256"}],"name":"ETHPriceSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minJoinPackage","type":"uint256"}],"name":"MinJoinPackageSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"maxJoinPackage","type":"uint256"}],"name":"MaxJoinPackageSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"enabled","type":"bool"}],"name":"EnableJoinPackageViaEtherSwitched","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"currentETHPrice","type":"uint256"}],"name":"EtherPriceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rate","type":"uint256"}],"name":"MiningDifficultySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"value","type":"uint256"}],"name":"TransferDifficultySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PackageJoinedViaEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PackageJoinedViaToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PackageJoinedViaDollar","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"userName","type":"string"},{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"inviter","type":"address"}],"name":"Registered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"walletAmount","type":"uint256"}],"name":"TokenMined","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"TokenSwapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_previousOwner","type":"address"},{"indexed":true,"name":"_newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405262030d4060068190556103e8600755600a556302faf080600b55600d805460ff1916600117905534801561003757600080fd5b5060405160608061492b83398101604081815282516020808501519483015160008054600160a060020a03978816600160a060020a03199182161782556001805482163317815560128054999096169890911697909717909355600c556060808501845262030d408552624c4b40828601818152673782dace9d90000086880190815260048054808b01825581885298516003998a027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8181019290925593517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c8086019190915592517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d9485015588518087018a5294855262989680858801818152676f05b59d3b200000878c019081528454808f018655858c529751978d0280850198909855905187860155519585019590955588518087018a529485526301c9c38085880181815267de0b6b3a76400000878c019081528454808f018655858c529751978d02808501989098559051878601555195850195909555885195860189529385529484018681526801bc16d674ec8000009785019788528554998a0186559490955291519690950294850195909555519083015551910155614706806102256000396000f3006080604052600436106102195763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302e65b8a811461021b5780630a4cb9391461023c5780631168222b1461025457806317da485f1461027d5780631e59c529146102a457806325b67947146103085780632f8dda7b1461031d57806332620c271461034e57806334aed0651461036f5780633bef6e1e1461038457806348f79607146103a85780634bbf3a7a146103c057806350a4947b146103d857806358e4bdeb146103ed57806359450ff514610405578063621b46e51461041c57806369cf6b2c14610440578063785169b61461045a5780638d425e1d1461047b57806390b054261461049c5780639125009d146104b7578063924bb1d0146104cc578063989d12b6146104e45780639cb5c7b9146104fc578063a34cc93614610511578063a51ec1a21461061b578063ac85ae0614610633578063af00a86514610657578063b27ee41014610678578063b373767a14610690578063b7a400d3146106f4578063bae2fb131461070c578063bb0ea95a14610766578063bc8865bb1461077e578063bca3583d146107b4578063c3587980146107c9578063c3c563f4146107ea578063cf99ad4a14610802578063d3184e8014610817578063d31e1ff51461082c578063e9a158a614610844578063ebd0d82014610859578063ed153dc51461089e578063faa0a264146108d5575b005b34801561022757600080fd5b50610219600160a060020a03600435166108ea565b34801561024857600080fd5b50610219600435610942565b34801561026057600080fd5b50610269610aaf565b604080519115158252519081900360200190f35b34801561028957600080fd5b50610292610ac1565b60408051918252519081900360200190f35b3480156102b057600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261021994369492936024939284019190819084018382808284375094975050509235600160a060020a03169350610ac792505050565b34801561031457600080fd5b50610292610dd1565b34801561032957600080fd5b50610332610dd7565b60408051600160a060020a039092168252519081900360200190f35b34801561035a57600080fd5b50610219600160a060020a0360043516610de6565b34801561037b57600080fd5b50610269610e61565b34801561039057600080fd5b50610219600435600160a060020a0360243516610e6a565b3480156103b457600080fd5b50610219600435611344565b3480156103cc57600080fd5b50610219600435611852565b3480156103e457600080fd5b50610292611d6f565b3480156103f957600080fd5b50610219600435611d75565b610219600435600160a060020a0360243516611ee1565b34801561042857600080fd5b50610219600435600160a060020a036024351661209b565b34801561044c57600080fd5b506102196004351515612220565b34801561046657600080fd5b50610219600160a060020a0360043516612315565b34801561048757600080fd5b50610219600160a060020a0360043516612390565b3480156104a857600080fd5b5061021960043560243561240b565b3480156104c357600080fd5b50610292612541565b3480156104d857600080fd5b50610219600435612547565b3480156104f057600080fd5b5061021960043561267c565b34801561050857600080fd5b50610292612742565b34801561051d57600080fd5b50610526612748565b604051808981526020018060200188600160a060020a0316600160a060020a031681526020018060200187815260200186815260200185815260200184815260200183810383528a818151815260200191508051906020019080838360005b8381101561059d578181015183820152602001610585565b50505050905090810190601f1680156105ca5780820380516001836020036101000a031916815260200191505b508381038252885181528851602091820191808b01910280838360005b838110156105ff5781810151838201526020016105e7565b505050509050019a505050505050505050505060405180910390f35b34801561062757600080fd5b506102196004356128ec565b34801561063f57600080fd5b50610219600160a060020a036004351660243561299e565b34801561066357600080fd5b50610219600160a060020a0360043516612a86565b34801561068457600080fd5b50610219600435612b01565b34801561069c57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261021994369492936024939284019190819084018382808284375094975050509235600160a060020a03169350612c4892505050565b34801561070057600080fd5b50610219600435612d7d565b34801561071857600080fd5b5060408051602060048035808201358381028086018501909652808552610219953695939460249493850192918291850190849080828437509497505050923560ff169350612f0b92505050565b34801561077257600080fd5b50610219600435613204565b34801561078a57600080fd5b5061079660043561333a565b60408051938452602084019290925282820152519081900360600190f35b3480156107c057600080fd5b5061029261336b565b3480156107d557600080fd5b50610219600160a060020a0360043516613371565b3480156107f657600080fd5b506102196004356133f2565b34801561080e57600080fd5b50610292613524565b34801561082357600080fd5b5061026961352a565b34801561083857600080fd5b5061021960043561353b565b34801561085057600080fd5b50610292613682565b34801561086557600080fd5b5061087a600160a060020a0360043516613688565b6040518082600381111561088a57fe5b60ff16815260200191505060405180910390f35b3480156108aa57600080fd5b506108bf600160a060020a036004351661369d565b6040805160ff9092168252519081900360200190f35b3480156108e157600080fd5b506103326136cc565b6108f261352a565b1515610936576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b61093f816136e0565b50565b61094a610aaf565b80610958575061095861352a565b151561099c576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600081116109f4576040805160e560020a62461bcd02815260206004820152601c60248201527f6d696e696e67446966666963756c7479206d757374206265203e203000000000604482015290519081900360640190fd5b600654811415610a74576040805160e560020a62461bcd02815260206004820152602260248201527f6d696e696e67446966666963756c7479206d757374206265206e65772076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60068190556040805182815290517fc804b872dd5bd76fe759786fc915ef19c21e73e434f957897f682d670412a81e9181900360200190a150565b600054600160a060020a031633145b90565b60065490565b600e546040805160e060020a63f3caad03028152600160a060020a0384811660048301529151600093929092169163f3caad039160248082019260209290919082900301818787803b158015610b1c57600080fd5b505af1158015610b30573d6000803e3d6000fd5b505050506040513d6020811015610b4657600080fd5b50511515610b9e576040805160e560020a62461bcd02815260206004820152601b60248201527f496e766974657220646964206e6f7420726567697374657265642e0000000000604482015290519081900360640190fd5b600160a060020a038216331415610bff576040805160e560020a62461bcd02815260206004820152601860248201527f43616e6e6f7420726566657272616c20796f757273656c660000000000000000604482015290519081900360640190fd5b600e546040517f97294e580000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a03868116604485015260606024850190815288516064860152885191909516946397294e58948993899390929160840190602086019080838360005b83811015610c8b578181015183820152602001610c73565b50505050905090810190601f168015610cb85780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015610cd957600080fd5b505af1158015610ced573d6000803e3d6000fd5b505050506040513d6020811015610d0357600080fd5b50516040805182815233918101829052600160a060020a03851660608201526080602082810182815288519284019290925287519495507f6cddf760a0682a65b93ab75a1c92afba3c310bdab72fe56a81949110dc6ac8619486948994909389939192909160a08401919087019080838360005b83811015610d8f578181015183820152602001610d77565b50505050905090810190601f168015610dbc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050565b60085490565b601154600160a060020a031681565b610dee61352a565b1515610e32576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600d5460ff1681565b600080610e77338461379a565b610e80846133f2565b60095484811515610e8d57fe5b601154604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152905193909204670de0b6b3a76400000294508492600160a060020a039091169163dd62ed3e9160448083019260209291908290030181600087803b158015610f0a57600080fd5b505af1158015610f1e573d6000803e3d6000fd5b505050506040513d6020811015610f3457600080fd5b50511015610f8c576040805160e560020a62461bcd02815260206004820152601d60248201527f596f75206d7573742063616c6c20617070726f76652829206669727374000000604482015290519081900360640190fd5b6011546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b505050506040513d602081101561100657600080fd5b5051905081811015611062576040805160e560020a62461bcd02815260206004820152601a60248201527f596f752068617665206e6f7420656e6f75676820746f6b656e73000000000000604482015290519081900360640190fd5b601154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050506040513d60208110156110ff57600080fd5b50511515611157576040805160e560020a62461bcd02815260206004820152601560248201527f5472616e7366657220746f6b656e206661696c65640000000000000000000000604482015290519081900360640190fd5b601154600054600160a060020a039182169163a9059cbb9116600585046040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b505050506040513d602081101561120957600080fd5b50511515611261576040805160e560020a62461bcd02815260206004820152601e60248201527f5472616e7366657220746f6b656e20746f2061646d696e206661696c65640000604482015290519081900360640190fd5b600f54604080517ff1f89e92000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820188905260016044830152606482018690529151919092169163f1f89e9291608480830192600092919082900301818387803b1580156112dd57600080fd5b505af11580156112f1573d6000803e3d6000fd5b505060408051338152600160a060020a038716602082015280820188905290517f6a26ed261f93dd650629e9362d6ed42670d1ea1f869fbdbd077eb1b310a242369350908190036060019150a150505050565b60008060006009541115156113c9576040805160e560020a62461bcd02815260206004820152602760248201527f496e76616c6964206169546f6b656e47322c20706c6561736520636f6e74616360448201527f742061646d696e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e546040805160e060020a63f3caad030281523360048201529051600160a060020a039092169163f3caad03916024808201926020929091908290030181600087803b15801561141957600080fd5b505af115801561142d573d6000803e3d6000fd5b505050506040513d602081101561144357600080fd5b5051151561149b576040805160e560020a62461bcd02815260206004820152601560248201527f506c656173652072656769737465722066697273740000000000000000000000604482015290519081900360640190fd5b6114a433613b17565b600954670de0b6b3a76400009084020491506114bf82613bf6565b60065482101561153f576040805160e560020a62461bcd02815260206004820152602260248201527f416d6f756e74206d757374206265203e3d206d696e696e67446966666963756c60448201527f7479000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6115493383613eff565b601054604080517f23e85bfb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a03909216916323e85bfb9160448082019260009290919082900301818387803b1580156115b557600080fd5b505af11580156115c9573d6000803e3d6000fd5b50506011546040805160e060020a6370a082310281523360048201529051600160a060020a0390921693506370a0823192506024808201926020929091908290030181600087803b15801561161d57600080fd5b505af1158015611631573d6000803e3d6000fd5b505050506040513d602081101561164757600080fd5b5051601154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051929350600160a060020a039091169163a9059cbb916044808201926020929091908290030181600087803b1580156116b957600080fd5b505af11580156116cd573d6000803e3d6000fd5b505050506040513d60208110156116e357600080fd5b5051151561173b576040805160e560020a62461bcd02815260206004820152601d60248201527f5472616e7366657220746f6b656e20746f2075736572206661696c6564000000604482015290519081900360640190fd5b6011546040805160e060020a6370a08231028152336004820152905183860192600160a060020a0316916370a082319160248083019260209291908290030181600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b505050506040513d60208110156117b657600080fd5b50511461180d576040805160e560020a62461bcd02815260206004820152601a60248201527f5573657220746f6b656e206368616e67656420696e76616c6964000000000000604482015290519081900360640190fd5b604080513381526020810185905280820184905290517f7fb08210da114cf38e2518a9feafd477ad944ed7eb08ce5bc794ce918f3409c39181900360600190a1505050565b60008082116118ab576040805160e560020a62461bcd02815260206004820152601660248201527f496e76616c696420616d6f756e7420746f207377617000000000000000000000604482015290519081900360640190fd5b6011546040805160e060020a6370a0823102815233600482015290518492600160a060020a0316916370a082319160248083019260209291908290030181600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506040513d602081101561192457600080fd5b5051101561197c576040805160e560020a62461bcd02815260206004820152601b60248201527f596f752068617665206e6f7420656e6f7567682062616c616e63650000000000604482015290519081900360640190fd5b61198582613ff5565b90503031811115611a05576040805160e560020a62461bcd028152602060048201526024808201527f54686520636f6e74726163742068617665206e6f7420656e6f7567682062616c60448201527f616e636500000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b611a0e8161408c565b601154604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290518492600160a060020a03169163dd62ed3e9160448083019260209291908290030181600087803b158015611a7957600080fd5b505af1158015611a8d573d6000803e3d6000fd5b505050506040513d6020811015611aa357600080fd5b50511015611afb576040805160e560020a62461bcd02815260206004820152601d60248201527f596f75206d7573742063616c6c20617070726f76652829206669727374000000604482015290519081900360640190fd5b601154600d54604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152610100909204600160a060020a0390811660248401526044830186905290519216916323b872dd916064808201926020929091908290030181600087803b158015611b7857600080fd5b505af1158015611b8c573d6000803e3d6000fd5b505050506040513d6020811015611ba257600080fd5b50511515611bfa576040805160e560020a62461bcd02815260206004820152601560248201527f5472616e7366657220746f6b656e206661696c65640000000000000000000000604482015290519081900360640190fd5b604051339082156108fc029083906000818181858888f19350505050158015611c27573d6000803e3d6000fd5b50601054604080517fc61d04a1000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a039092169163c61d04a19160248082019260009290919082900301818387803b158015611c8e57600080fd5b505af1158015611ca2573d6000803e3d6000fd5b5050601054604080517f9395a7be000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a039092169350639395a7be925060448082019260009290919082900301818387803b158015611d1257600080fd5b505af1158015611d26573d6000803e3d6000fd5b5050604080513381526020810186905280820185905290517fd5a1cd88ddd329cc1ddf861a21708efa9ef3136b88e1420c21f91ef6f95ad0249350908190036060019150a15050565b60075490565b611d7d610aaf565b80611d8b5750611d8b61352a565b1515611dcf576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b60008111611e27576040805160e560020a62461bcd02815260206004820152601660248201527f4d696e696d756d427579206d757374206265203e203000000000000000000000604482015290519081900360640190fd5b600754811415611ea6576040805160e560020a62461bcd028152602060048201526024808201527f7472616e73666572446966666963756c7479206d757374206265206e6577207660448201527f616c756500000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60078190556040805182815290517f741043be2f72a75deedbedc540854fc311e7466fd47a155c39f3fb22dc0353d99181900360200190a150565b600d546000908190819060ff161515611f44576040805160e560020a62461bcd02815260206004820152601960248201527f43616e206e6f742062757920766961204574686572206e6f7700000000000000604482015290519081900360640190fd5b611f4e338561379a565b60008511611fa6576040805160e560020a62461bcd02815260206004820152601060248201527f52617465206d757374206265203e203000000000000000000000000000000000604482015290519081900360640190fd5b611fbb670de0b6b3a7640000348702046133f2565b600385611fcb87600c5403614465565b606402811515611fd757fe5b04111592506005600c54611fee600c548803614465565b606402811515611ffa57fe5b04111591508280156120095750815b9050801515612088576040805160e560020a62461bcd02815260206004820152602160248201527f496e76616c696420726174652c20706c6561736520636865636b20616761696e60448201527f2100000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6120943385348861447f565b5050505050565b6120a5338261379a565b6120ae826133f2565b6120b83383613eff565b600f54604080517ff1f89e92000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301526024820186905260026044830152606482018690529151919092169163f1f89e9291608480830192600092919082900301818387803b15801561213457600080fd5b505af1158015612148573d6000803e3d6000fd5b505060105460008054604080517f5e5205fe000000000000000000000000000000000000000000000000000000008152600589046004820152600160a060020a0392831660248201529051919093169450635e5205fe935060448084019382900301818387803b1580156121bb57600080fd5b505af11580156121cf573d6000803e3d6000fd5b505060408051338152600160a060020a038516602082015280820186905290517f7b2f4de0cb94d605245e79183c85ba07e8c449476a547bbd4fe9904e790c93709350908190036060019150a15050565b612228610aaf565b80612236575061223661352a565b151561227a576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600d5460ff16151581151514156122c9576040805160e560020a62461bcd02815260206004820152601160248201526000805160206146bb833981519152604482015290519081900360640190fd5b600d805460ff191682151517908190556040805160ff90921615158252517f3a8c20227c3a1c9a24b3da37d5e1b2c111f9d1b476c219cad9febe092cee4c25916020908290030190a150565b61231d61352a565b1515612361576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b6010805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b61239861352a565b15156123dc576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000612415610aaf565b80612423575061242361352a565b1515612467576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600082116124bf576040805160e560020a62461bcd02815260206004820152600b60248201527f4d757374206265203e2030000000000000000000000000000000000000000000604482015290519081900360640190fd5b6004548310612518576040805160e560020a62461bcd02815260206004820152600c60248201527f4d757374206265203c3d20340000000000000000000000000000000000000000604482015290519081900360640190fd5b600480548490811061252657fe5b60009182526020909120600260039092020101919091555050565b600c5490565b61254f610aaf565b8061255d575061255d61352a565b15156125a1576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600081116125f9576040805160e560020a62461bcd02815260206004820152600b60248201527f4d757374206265203e2030000000000000000000000000000000000000000000604482015290519081900360640190fd5b600c54811415612641576040805160e560020a62461bcd02815260206004820152601160248201526000805160206146bb833981519152604482015290519081900360640190fd5b600c8190556040805182815290517f37dcffad3b06af912e7fda69320a919573d0c99e0ba3ae2ae8e5be21be88d9fb9181900360200190a150565b612684610aaf565b15156126c8576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061469b833981519152604482015290519081900360640190fd5b601254604080517f4bbf3a7a000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a0390921691634bbf3a7a9160248082019260009290919082900301818387803b15801561272e57600080fd5b505af1158015612094573d6000803e3d6000fd5b600b5481565b600e54604080517f72fbc8510000000000000000000000000000000000000000000000000000000081523360048201529051600092606092849284928492839283928392600160a060020a03909116916372fbc85191602480820192869290919082900301818387803b1580156127be57600080fd5b505af11580156127d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101008110156127fc57600080fd5b81516020830180519193928301929164010000000081111561281d57600080fd5b8201602081018481111561283057600080fd5b815164010000000081118282018710171561284a57600080fd5b5050602082015160409092018051919492939164010000000081111561286f57600080fd5b8201602081018481111561288257600080fd5b815185602082028301116401000000008211171561289f57600080fd5b505092919060200180519060200190929190805190602001909291908051906020019092919080519060200190929190505050975097509750975097509750975097509091929394959697565b6128f4610aaf565b1515612938576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061469b833981519152604482015290519081900360640190fd5b601254604080517f48f79607000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916348f796079160248082019260009290919082900301818387803b15801561272e57600080fd5b60006129a8610aaf565b15156129ec576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061469b833981519152604482015290519081900360640190fd5b50601254604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018490529051849283169163095ea7b39160448083019260209291908290030181600087803b158015612a5c57600080fd5b505af1158015612a70573d6000803e3d6000fd5b505050506040513d602081101561209457600080fd5b612a8e61352a565b1515612ad2576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b6011805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b612b09610aaf565b80612b175750612b1761352a565b1515612b5b576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b60008111612bb3576040805160e560020a62461bcd02815260206004820152601560248201527f6169546f6b656e4733206d757374206265203e20300000000000000000000000604482015290519081900360640190fd5b600854811415612c0d576040805160e560020a62461bcd02815260206004820152601b60248201527f6169546f6b656e4733206d757374206265206e65772076616c75650000000000604482015290519081900360640190fd5b60088190556040805182815290517fd3d81cad3cdf5cf5bc2d3bdd083728dca5f3049f3ec44298b0248c8217a561999181900360200190a150565b612c50610aaf565b1515612c94576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061469b833981519152604482015290519081900360640190fd5b601254604080517f1e59c529000000000000000000000000000000000000000000000000000000008152600160a060020a03848116602483015260048201928352855160448301528551931692631e59c5299286928692829160640190602086019080838360005b83811015612d14578181015183820152602001612cfc565b50505050905090810190601f168015612d415780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612d6157600080fd5b505af1158015612d75573d6000803e3d6000fd5b505050505050565b612d85610aaf565b80612d935750612d9361352a565b1515612dd7576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b60008111612e2f576040805160e560020a62461bcd02815260206004820152600b60248201527f4d757374206265203e2030000000000000000000000000000000000000000000604482015290519081900360640190fd5b600b548110612e88576040805160e560020a62461bcd02815260206004820152601860248201527f4d757374206265203c206d61784a6f696e5061636b6167650000000000000000604482015290519081900360640190fd5b600a54811415612ed0576040805160e560020a62461bcd02815260206004820152601160248201526000805160206146bb833981519152604482015290519081900360640190fd5b600a8190556040805182815290517fdbecd9aa4d7a32d8b26e95c265a7edff020bfd6e09c914833f5f7208270237369181900360200190a150565b6000612f15610aaf565b80612f235750612f2361352a565b1515612f67576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b8251600010612fc0576040805160e560020a62461bcd02815260206004820152601760248201527f416464726573732063616e6e6f7420626520656d707479000000000000000000604482015290519081900360640190fd5b8251610100101561301b576040805160e560020a62461bcd02815260206004820152601f60248201527f4d6178696d756d2075736572732070657220616374696f6e2069732032353600604482015290519081900360640190fd5b60008260ff1610158015613033575060038260ff1611155b1515613089576040805160e560020a62461bcd02815260206004820152600f60248201527f5479706520697320696e76616c69640000000000000000000000000000000000604482015290519081900360640190fd5b5060005b82518160ff16101561317c5782513390849060ff84169081106130ac57fe5b60209081029091010151600160a060020a03161415613115576040805160e560020a62461bcd02815260206004820152601860248201527f596f752063616e6e6f74206c6f636b20796f757273656c660000000000000000604482015290519081900360640190fd5b8160ff16600381111561312457fe5b60056000858460ff1681518110151561313957fe5b6020908102909101810151600160a060020a03168252810191909152604001600020805460ff1916600183600381111561316f57fe5b021790555060010161308d565b7fa4c25a558ef9057d52f5288f1a06611914cbed6bab5e47ab7ef302ba37ccdf2d838360405180806020018360ff1660ff168152602001828103825284818151815260200191508051906020019060200280838360005b838110156131eb5781810151838201526020016131d3565b50505050905001935050505060405180910390a1505050565b61320c610aaf565b8061321a575061321a61352a565b151561325e576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600a5481116132b7576040805160e560020a62461bcd02815260206004820152601860248201527f4d757374206265203e206d696e4a6f696e5061636b6167650000000000000000604482015290519081900360640190fd5b600b548114156132ff576040805160e560020a62461bcd02815260206004820152601160248201526000805160206146bb833981519152604482015290519081900360640190fd5b600b8190556040805182815290517f12b9aff014569f32de919545171daec25b5e27ba47fba531f23351b0142be0579181900360200190a150565b600480548290811061334857fe5b600091825260209091206003909102018054600182015460029092015490925083565b600a5481565b61337961352a565b15156133bd576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b600d8054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b6000811161344a576040805160e560020a62461bcd02815260206004820152601260248201527f416d6f756e74206d757374206265203e20300000000000000000000000000000604482015290519081900360640190fd5b600b548111156134ca576040805160e560020a62461bcd02815260206004820152603660248201527f43616e206e6f74206a6f696e207769746820616d6f756e74207468617420677260448201527f6561746572206d6178206a6f696e207061636b61676500000000000000000000606482015290519081900360840190fd5b600a5481101561093f576040805160e560020a62461bcd02815260206004820152601e60248201527f4d696e696d756d20666f72206669727374206a6f696e20697320243230300000604482015290519081900360640190fd5b60095481565b600154600160a060020a0316331490565b613543610aaf565b80613551575061355161352a565b1515613595576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600081116135ed576040805160e560020a62461bcd02815260206004820152601560248201527f6169546f6b656e4732206d757374206265203e20300000000000000000000000604482015290519081900360640190fd5b600954811415613647576040805160e560020a62461bcd02815260206004820152601b60248201527f6169546f6b656e4732206d757374206265206e65772076616c75650000000000604482015290519081900360640190fd5b60098190556040805182815290517fe68a407f4fb9369152f192537dafac2e63a2e5e54014b93eec900db34a67ab0d9181900360200190a150565b600c5481565b60056020526000908152604090205460ff1681565b600160a060020a03811660009081526005602052604081205460ff1660038111156136c457fe5b90505b919050565b600d546101009004600160a060020a031681565b6136e861352a565b151561372c576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b600160a060020a038116151561374157600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b600e546040805160e060020a63f3caad03028152600160a060020a0385811660048301529151919092169163f3caad039160248083019260209291908290030181600087803b1580156137ec57600080fd5b505af1158015613800573d6000803e3d6000fd5b505050506040513d602081101561381657600080fd5b5051151561386e576040805160e560020a62461bcd02815260206004820152601560248201527f506c656173652072656769737465722066697273740000000000000000000000604482015290519081900360640190fd5b600e546040805160e060020a63f3caad03028152600160a060020a0384811660048301529151919092169163f3caad039160248083019260209291908290030181600087803b1580156138c057600080fd5b505af11580156138d4573d6000803e3d6000fd5b505050506040513d60208110156138ea57600080fd5b50511515613968576040805160e560020a62461bcd02815260206004820152602560248201527f596f752063616e206f6e6c792062757920666f7220616e20657869737473206d60448201527f656d626572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382811690821614613a9357600e54604080517fda9c9ba7000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301529151919092169163da9c9ba79160448083019260209291908290030181600087803b1580156139eb57600080fd5b505af11580156139ff573d6000803e3d6000fd5b505050506040513d6020811015613a1557600080fd5b50511515613a93576040805160e560020a62461bcd02815260206004820152602560248201527f5468697320757365722069736e277420696e20796f757220726566657272616c60448201527f2074726565000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600c54600010613b13576040805160e560020a62461bcd02815260206004820152602e60248201527f496e76616c69642063757272656e7445544850726963652c20706c656173652060448201527f636f6e746163742061646d696e21000000000000000000000000000000000000606482015290519081900360840190fd5b5050565b60006002600160a060020a03831660009081526005602052604090205460ff166003811115613b4257fe5b14158015613b7757506003600160a060020a03831660009081526005602052604090205460ff166003811115613b7457fe5b14155b9050801515613b13576040805160e560020a62461bcd02815260206004820152602960248201527f596f7572206163636f756e7420676574206c6f636b65642066726f6d206d696e60448201527f696e6720746f6b656e0000000000000000000000000000000000000000000000606482015290519081900360840190fd5b33600081815260026020908152604080832060105482517ff372f84c0000000000000000000000000000000000000000000000000000000081526004810196909652915190948493849384938493849384938493600160a060020a039091169263f372f84c92602480830193919282900301818787803b158015613c7957600080fd5b505af1158015613c8d573d6000803e3d6000fd5b505050506040513d6020811015613ca357600080fd5b50518954600490910298501515613d3757878a1115613d32576040805160e560020a62461bcd02815260206004820152603b60248201527f546f6461793a20596f752063616e206f6e6c79206d696e65206d6178696d756d60448201527f203478206f6620796f757220746f74616c206465706f73697465640000000000606482015290519081900360840190fd5b613eb7565b88546000975087965094508593505b84841015613daf578884815481101515613d5c57fe5b9060005260206000209060020201925082600001546201518042031091508115613d9d576001830154613d9690889063ffffffff6145b216565b9650613da4565b6001909501945b600190930192613d46565b6000861115613e2a575060005b8854869003811015613e195788868201815481101515613dd857fe5b90600052602060002090600202018982815481101515613df457fe5b6000918252602090912082546002909202019081556001918201549082015501613dbc565b8854869003613e288a82614616565b505b87613e3b888c63ffffffff6145b216565b1115613eb7576040805160e560020a62461bcd02815260206004820152603b60248201527f546f6461793a20596f752063616e206f6e6c79206d696e65206d6178696d756d60448201527f203478206f6620796f757220746f74616c206465706f73697465640000000000606482015290519081900360840190fd5b5050604080518082019091524281526020808201998a52885460018181018b5560009a8b52919099209151600290990290910197885597519690970195909555505050505050565b600f54604080517fbb1937c0000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151600093929092169163bb1937c09160248082019260209290919082900301818787803b158015613f6a57600080fd5b505af1158015613f7e573d6000803e3d6000fd5b505050506040513d6020811015613f9457600080fd5b5051905081811015613ff0576040805160e560020a62461bcd02815260206004820152601b60248201527f596f752068617665206e6f7420656e6f7567682062616c616e63650000000000604482015290519081900360640190fd5b505050565b600080600854111515614078576040805160e560020a62461bcd02815260206004820152602760248201527f496e76616c6964206169546f6b656e47332c20706c6561736520636f6e74616360448201527f742061646d696e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6008548281151561408557fe5b0492915050565b33600081815260036020908152604080832060105482517ff372f84c000000000000000000000000000000000000000000000000000000008152600481019690965291519094849384938493849384938493849384938493600160a060020a039093169263f372f84c9260248084019382900301818787803b15801561411157600080fd5b505af1158015614125573d6000803e3d6000fd5b505050506040513d602081101561413b57600080fd5b50519850600097505b6004548810156141b857600480548990811061415c57fe5b9060005260206000209060030201965060016004805490500388141561418857866002015499506141b8565b8654891080159061419c5750866001015489105b156141ad57866002015499506141b8565b600190970196614144565b60008a1161425c576040805160e560020a62461bcd02815260206004820152604760248201527f496e76616c6964206d6178532c206d6179626520796f752068617665206e6f7460448201527f206a6f696e6564207061636b616765206f7220706c6561736520636f6e74616360648201527f742061646d696e00000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b8a5415156142c157898c11156142bc576040805160e560020a62461bcd02815260206004820152601160248201527f416d6f756e7420697320696e76616c6964000000000000000000000000000000604482015290519081900360640190fd5b61441b565b8a546000985088965086955093505b83881015614339578a888154811015156142e657fe5b906000526020600020906002020192508260000154620151804203109150811561432757600183015461432090879063ffffffff6145b216565b955061432e565b6001909401935b6001909701966142d0565b60008511156143b4575060005b8a548590038110156143a3578a85820181548110151561436257fe5b90600052602060002090600202018b8281548110151561437e57fe5b6000918252602090912082546002909202019081556001918201549082015501614346565b8a548590036143b28c82614616565b505b896143c5878e63ffffffff6145b216565b111561441b576040805160e560020a62461bcd02815260206004820152601260248201527f546f6f206d75636820666f7220746f6461790000000000000000000000000000604482015290519081900360640190fd5b50506040805180820190915242815260208082019b8c528a5460018181018d5560009c8d5291909b2091516002909b02909101998a55995198909901979097555050505050505050565b60008082121561447b57816000190290506136c7565b5090565b600f54604080517ff1f89e92000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152670de0b6b3a7640000858702046024830181905260006044840181905260648401889052935160058804959194929091169263f1f89e9292608480830193919282900301818387803b15801561450e57600080fd5b505af1158015614522573d6000803e3d6000fd5b505060008054604051600160a060020a03909116935085156108fc0292508591818181858888f1935050505015801561455f573d6000803e3d6000fd5b5060408051600160a060020a0380891682528716602082015280820183905290517f2ced4e9f0876fb793bc9670927e9d22151fe5f129df989c2d4946ef5a59a97db9181900360600190a1505050505050565b60008282018381101561460f576040805160e560020a62461bcd02815260206004820152601260248201527f536166654d61746820616464206572726f720000000000000000000000000000604482015290519081900360640190fd5b9392505050565b815481835581811115613ff057600083815260209020613ff091610abe9160029182028101918502015b8082111561447b576000808255600182015560020161464056006f6e6c7941646d696e00000000000000000000000000000000000000000000006f6e6c79436f6e747261637441646d696e0000000000000000000000000000006f6e6c794d61696e41646d696e000000000000000000000000000000000000004d757374206265206e65772076616c7565000000000000000000000000000000a165627a7a72305820807c27551c0fdba70b2ac314afc14a5999e8347a31faa7664f5f4e1ed0b004610029000000000000000000000000b143b1b4c1355f400351e914feaec965d17947700000000000000000000000007f464a81db1c5eb975227b6953daf6b216fbc561000000000000000000000000000000000000000000000000000000000001d8a8

Deployed Bytecode

0x6080604052600436106102195763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302e65b8a811461021b5780630a4cb9391461023c5780631168222b1461025457806317da485f1461027d5780631e59c529146102a457806325b67947146103085780632f8dda7b1461031d57806332620c271461034e57806334aed0651461036f5780633bef6e1e1461038457806348f79607146103a85780634bbf3a7a146103c057806350a4947b146103d857806358e4bdeb146103ed57806359450ff514610405578063621b46e51461041c57806369cf6b2c14610440578063785169b61461045a5780638d425e1d1461047b57806390b054261461049c5780639125009d146104b7578063924bb1d0146104cc578063989d12b6146104e45780639cb5c7b9146104fc578063a34cc93614610511578063a51ec1a21461061b578063ac85ae0614610633578063af00a86514610657578063b27ee41014610678578063b373767a14610690578063b7a400d3146106f4578063bae2fb131461070c578063bb0ea95a14610766578063bc8865bb1461077e578063bca3583d146107b4578063c3587980146107c9578063c3c563f4146107ea578063cf99ad4a14610802578063d3184e8014610817578063d31e1ff51461082c578063e9a158a614610844578063ebd0d82014610859578063ed153dc51461089e578063faa0a264146108d5575b005b34801561022757600080fd5b50610219600160a060020a03600435166108ea565b34801561024857600080fd5b50610219600435610942565b34801561026057600080fd5b50610269610aaf565b604080519115158252519081900360200190f35b34801561028957600080fd5b50610292610ac1565b60408051918252519081900360200190f35b3480156102b057600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261021994369492936024939284019190819084018382808284375094975050509235600160a060020a03169350610ac792505050565b34801561031457600080fd5b50610292610dd1565b34801561032957600080fd5b50610332610dd7565b60408051600160a060020a039092168252519081900360200190f35b34801561035a57600080fd5b50610219600160a060020a0360043516610de6565b34801561037b57600080fd5b50610269610e61565b34801561039057600080fd5b50610219600435600160a060020a0360243516610e6a565b3480156103b457600080fd5b50610219600435611344565b3480156103cc57600080fd5b50610219600435611852565b3480156103e457600080fd5b50610292611d6f565b3480156103f957600080fd5b50610219600435611d75565b610219600435600160a060020a0360243516611ee1565b34801561042857600080fd5b50610219600435600160a060020a036024351661209b565b34801561044c57600080fd5b506102196004351515612220565b34801561046657600080fd5b50610219600160a060020a0360043516612315565b34801561048757600080fd5b50610219600160a060020a0360043516612390565b3480156104a857600080fd5b5061021960043560243561240b565b3480156104c357600080fd5b50610292612541565b3480156104d857600080fd5b50610219600435612547565b3480156104f057600080fd5b5061021960043561267c565b34801561050857600080fd5b50610292612742565b34801561051d57600080fd5b50610526612748565b604051808981526020018060200188600160a060020a0316600160a060020a031681526020018060200187815260200186815260200185815260200184815260200183810383528a818151815260200191508051906020019080838360005b8381101561059d578181015183820152602001610585565b50505050905090810190601f1680156105ca5780820380516001836020036101000a031916815260200191505b508381038252885181528851602091820191808b01910280838360005b838110156105ff5781810151838201526020016105e7565b505050509050019a505050505050505050505060405180910390f35b34801561062757600080fd5b506102196004356128ec565b34801561063f57600080fd5b50610219600160a060020a036004351660243561299e565b34801561066357600080fd5b50610219600160a060020a0360043516612a86565b34801561068457600080fd5b50610219600435612b01565b34801561069c57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261021994369492936024939284019190819084018382808284375094975050509235600160a060020a03169350612c4892505050565b34801561070057600080fd5b50610219600435612d7d565b34801561071857600080fd5b5060408051602060048035808201358381028086018501909652808552610219953695939460249493850192918291850190849080828437509497505050923560ff169350612f0b92505050565b34801561077257600080fd5b50610219600435613204565b34801561078a57600080fd5b5061079660043561333a565b60408051938452602084019290925282820152519081900360600190f35b3480156107c057600080fd5b5061029261336b565b3480156107d557600080fd5b50610219600160a060020a0360043516613371565b3480156107f657600080fd5b506102196004356133f2565b34801561080e57600080fd5b50610292613524565b34801561082357600080fd5b5061026961352a565b34801561083857600080fd5b5061021960043561353b565b34801561085057600080fd5b50610292613682565b34801561086557600080fd5b5061087a600160a060020a0360043516613688565b6040518082600381111561088a57fe5b60ff16815260200191505060405180910390f35b3480156108aa57600080fd5b506108bf600160a060020a036004351661369d565b6040805160ff9092168252519081900360200190f35b3480156108e157600080fd5b506103326136cc565b6108f261352a565b1515610936576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b61093f816136e0565b50565b61094a610aaf565b80610958575061095861352a565b151561099c576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600081116109f4576040805160e560020a62461bcd02815260206004820152601c60248201527f6d696e696e67446966666963756c7479206d757374206265203e203000000000604482015290519081900360640190fd5b600654811415610a74576040805160e560020a62461bcd02815260206004820152602260248201527f6d696e696e67446966666963756c7479206d757374206265206e65772076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60068190556040805182815290517fc804b872dd5bd76fe759786fc915ef19c21e73e434f957897f682d670412a81e9181900360200190a150565b600054600160a060020a031633145b90565b60065490565b600e546040805160e060020a63f3caad03028152600160a060020a0384811660048301529151600093929092169163f3caad039160248082019260209290919082900301818787803b158015610b1c57600080fd5b505af1158015610b30573d6000803e3d6000fd5b505050506040513d6020811015610b4657600080fd5b50511515610b9e576040805160e560020a62461bcd02815260206004820152601b60248201527f496e766974657220646964206e6f7420726567697374657265642e0000000000604482015290519081900360640190fd5b600160a060020a038216331415610bff576040805160e560020a62461bcd02815260206004820152601860248201527f43616e6e6f7420726566657272616c20796f757273656c660000000000000000604482015290519081900360640190fd5b600e546040517f97294e580000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a03868116604485015260606024850190815288516064860152885191909516946397294e58948993899390929160840190602086019080838360005b83811015610c8b578181015183820152602001610c73565b50505050905090810190601f168015610cb85780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015610cd957600080fd5b505af1158015610ced573d6000803e3d6000fd5b505050506040513d6020811015610d0357600080fd5b50516040805182815233918101829052600160a060020a03851660608201526080602082810182815288519284019290925287519495507f6cddf760a0682a65b93ab75a1c92afba3c310bdab72fe56a81949110dc6ac8619486948994909389939192909160a08401919087019080838360005b83811015610d8f578181015183820152602001610d77565b50505050905090810190601f168015610dbc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050565b60085490565b601154600160a060020a031681565b610dee61352a565b1515610e32576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600d5460ff1681565b600080610e77338461379a565b610e80846133f2565b60095484811515610e8d57fe5b601154604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152905193909204670de0b6b3a76400000294508492600160a060020a039091169163dd62ed3e9160448083019260209291908290030181600087803b158015610f0a57600080fd5b505af1158015610f1e573d6000803e3d6000fd5b505050506040513d6020811015610f3457600080fd5b50511015610f8c576040805160e560020a62461bcd02815260206004820152601d60248201527f596f75206d7573742063616c6c20617070726f76652829206669727374000000604482015290519081900360640190fd5b6011546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b505050506040513d602081101561100657600080fd5b5051905081811015611062576040805160e560020a62461bcd02815260206004820152601a60248201527f596f752068617665206e6f7420656e6f75676820746f6b656e73000000000000604482015290519081900360640190fd5b601154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050506040513d60208110156110ff57600080fd5b50511515611157576040805160e560020a62461bcd02815260206004820152601560248201527f5472616e7366657220746f6b656e206661696c65640000000000000000000000604482015290519081900360640190fd5b601154600054600160a060020a039182169163a9059cbb9116600585046040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b505050506040513d602081101561120957600080fd5b50511515611261576040805160e560020a62461bcd02815260206004820152601e60248201527f5472616e7366657220746f6b656e20746f2061646d696e206661696c65640000604482015290519081900360640190fd5b600f54604080517ff1f89e92000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820188905260016044830152606482018690529151919092169163f1f89e9291608480830192600092919082900301818387803b1580156112dd57600080fd5b505af11580156112f1573d6000803e3d6000fd5b505060408051338152600160a060020a038716602082015280820188905290517f6a26ed261f93dd650629e9362d6ed42670d1ea1f869fbdbd077eb1b310a242369350908190036060019150a150505050565b60008060006009541115156113c9576040805160e560020a62461bcd02815260206004820152602760248201527f496e76616c6964206169546f6b656e47322c20706c6561736520636f6e74616360448201527f742061646d696e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e546040805160e060020a63f3caad030281523360048201529051600160a060020a039092169163f3caad03916024808201926020929091908290030181600087803b15801561141957600080fd5b505af115801561142d573d6000803e3d6000fd5b505050506040513d602081101561144357600080fd5b5051151561149b576040805160e560020a62461bcd02815260206004820152601560248201527f506c656173652072656769737465722066697273740000000000000000000000604482015290519081900360640190fd5b6114a433613b17565b600954670de0b6b3a76400009084020491506114bf82613bf6565b60065482101561153f576040805160e560020a62461bcd02815260206004820152602260248201527f416d6f756e74206d757374206265203e3d206d696e696e67446966666963756c60448201527f7479000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6115493383613eff565b601054604080517f23e85bfb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a03909216916323e85bfb9160448082019260009290919082900301818387803b1580156115b557600080fd5b505af11580156115c9573d6000803e3d6000fd5b50506011546040805160e060020a6370a082310281523360048201529051600160a060020a0390921693506370a0823192506024808201926020929091908290030181600087803b15801561161d57600080fd5b505af1158015611631573d6000803e3d6000fd5b505050506040513d602081101561164757600080fd5b5051601154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051929350600160a060020a039091169163a9059cbb916044808201926020929091908290030181600087803b1580156116b957600080fd5b505af11580156116cd573d6000803e3d6000fd5b505050506040513d60208110156116e357600080fd5b5051151561173b576040805160e560020a62461bcd02815260206004820152601d60248201527f5472616e7366657220746f6b656e20746f2075736572206661696c6564000000604482015290519081900360640190fd5b6011546040805160e060020a6370a08231028152336004820152905183860192600160a060020a0316916370a082319160248083019260209291908290030181600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b505050506040513d60208110156117b657600080fd5b50511461180d576040805160e560020a62461bcd02815260206004820152601a60248201527f5573657220746f6b656e206368616e67656420696e76616c6964000000000000604482015290519081900360640190fd5b604080513381526020810185905280820184905290517f7fb08210da114cf38e2518a9feafd477ad944ed7eb08ce5bc794ce918f3409c39181900360600190a1505050565b60008082116118ab576040805160e560020a62461bcd02815260206004820152601660248201527f496e76616c696420616d6f756e7420746f207377617000000000000000000000604482015290519081900360640190fd5b6011546040805160e060020a6370a0823102815233600482015290518492600160a060020a0316916370a082319160248083019260209291908290030181600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506040513d602081101561192457600080fd5b5051101561197c576040805160e560020a62461bcd02815260206004820152601b60248201527f596f752068617665206e6f7420656e6f7567682062616c616e63650000000000604482015290519081900360640190fd5b61198582613ff5565b90503031811115611a05576040805160e560020a62461bcd028152602060048201526024808201527f54686520636f6e74726163742068617665206e6f7420656e6f7567682062616c60448201527f616e636500000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b611a0e8161408c565b601154604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290518492600160a060020a03169163dd62ed3e9160448083019260209291908290030181600087803b158015611a7957600080fd5b505af1158015611a8d573d6000803e3d6000fd5b505050506040513d6020811015611aa357600080fd5b50511015611afb576040805160e560020a62461bcd02815260206004820152601d60248201527f596f75206d7573742063616c6c20617070726f76652829206669727374000000604482015290519081900360640190fd5b601154600d54604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152610100909204600160a060020a0390811660248401526044830186905290519216916323b872dd916064808201926020929091908290030181600087803b158015611b7857600080fd5b505af1158015611b8c573d6000803e3d6000fd5b505050506040513d6020811015611ba257600080fd5b50511515611bfa576040805160e560020a62461bcd02815260206004820152601560248201527f5472616e7366657220746f6b656e206661696c65640000000000000000000000604482015290519081900360640190fd5b604051339082156108fc029083906000818181858888f19350505050158015611c27573d6000803e3d6000fd5b50601054604080517fc61d04a1000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a039092169163c61d04a19160248082019260009290919082900301818387803b158015611c8e57600080fd5b505af1158015611ca2573d6000803e3d6000fd5b5050601054604080517f9395a7be000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a039092169350639395a7be925060448082019260009290919082900301818387803b158015611d1257600080fd5b505af1158015611d26573d6000803e3d6000fd5b5050604080513381526020810186905280820185905290517fd5a1cd88ddd329cc1ddf861a21708efa9ef3136b88e1420c21f91ef6f95ad0249350908190036060019150a15050565b60075490565b611d7d610aaf565b80611d8b5750611d8b61352a565b1515611dcf576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b60008111611e27576040805160e560020a62461bcd02815260206004820152601660248201527f4d696e696d756d427579206d757374206265203e203000000000000000000000604482015290519081900360640190fd5b600754811415611ea6576040805160e560020a62461bcd028152602060048201526024808201527f7472616e73666572446966666963756c7479206d757374206265206e6577207660448201527f616c756500000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60078190556040805182815290517f741043be2f72a75deedbedc540854fc311e7466fd47a155c39f3fb22dc0353d99181900360200190a150565b600d546000908190819060ff161515611f44576040805160e560020a62461bcd02815260206004820152601960248201527f43616e206e6f742062757920766961204574686572206e6f7700000000000000604482015290519081900360640190fd5b611f4e338561379a565b60008511611fa6576040805160e560020a62461bcd02815260206004820152601060248201527f52617465206d757374206265203e203000000000000000000000000000000000604482015290519081900360640190fd5b611fbb670de0b6b3a7640000348702046133f2565b600385611fcb87600c5403614465565b606402811515611fd757fe5b04111592506005600c54611fee600c548803614465565b606402811515611ffa57fe5b04111591508280156120095750815b9050801515612088576040805160e560020a62461bcd02815260206004820152602160248201527f496e76616c696420726174652c20706c6561736520636865636b20616761696e60448201527f2100000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6120943385348861447f565b5050505050565b6120a5338261379a565b6120ae826133f2565b6120b83383613eff565b600f54604080517ff1f89e92000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301526024820186905260026044830152606482018690529151919092169163f1f89e9291608480830192600092919082900301818387803b15801561213457600080fd5b505af1158015612148573d6000803e3d6000fd5b505060105460008054604080517f5e5205fe000000000000000000000000000000000000000000000000000000008152600589046004820152600160a060020a0392831660248201529051919093169450635e5205fe935060448084019382900301818387803b1580156121bb57600080fd5b505af11580156121cf573d6000803e3d6000fd5b505060408051338152600160a060020a038516602082015280820186905290517f7b2f4de0cb94d605245e79183c85ba07e8c449476a547bbd4fe9904e790c93709350908190036060019150a15050565b612228610aaf565b80612236575061223661352a565b151561227a576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600d5460ff16151581151514156122c9576040805160e560020a62461bcd02815260206004820152601160248201526000805160206146bb833981519152604482015290519081900360640190fd5b600d805460ff191682151517908190556040805160ff90921615158252517f3a8c20227c3a1c9a24b3da37d5e1b2c111f9d1b476c219cad9febe092cee4c25916020908290030190a150565b61231d61352a565b1515612361576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b6010805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b61239861352a565b15156123dc576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000612415610aaf565b80612423575061242361352a565b1515612467576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600082116124bf576040805160e560020a62461bcd02815260206004820152600b60248201527f4d757374206265203e2030000000000000000000000000000000000000000000604482015290519081900360640190fd5b6004548310612518576040805160e560020a62461bcd02815260206004820152600c60248201527f4d757374206265203c3d20340000000000000000000000000000000000000000604482015290519081900360640190fd5b600480548490811061252657fe5b60009182526020909120600260039092020101919091555050565b600c5490565b61254f610aaf565b8061255d575061255d61352a565b15156125a1576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600081116125f9576040805160e560020a62461bcd02815260206004820152600b60248201527f4d757374206265203e2030000000000000000000000000000000000000000000604482015290519081900360640190fd5b600c54811415612641576040805160e560020a62461bcd02815260206004820152601160248201526000805160206146bb833981519152604482015290519081900360640190fd5b600c8190556040805182815290517f37dcffad3b06af912e7fda69320a919573d0c99e0ba3ae2ae8e5be21be88d9fb9181900360200190a150565b612684610aaf565b15156126c8576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061469b833981519152604482015290519081900360640190fd5b601254604080517f4bbf3a7a000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a0390921691634bbf3a7a9160248082019260009290919082900301818387803b15801561272e57600080fd5b505af1158015612094573d6000803e3d6000fd5b600b5481565b600e54604080517f72fbc8510000000000000000000000000000000000000000000000000000000081523360048201529051600092606092849284928492839283928392600160a060020a03909116916372fbc85191602480820192869290919082900301818387803b1580156127be57600080fd5b505af11580156127d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101008110156127fc57600080fd5b81516020830180519193928301929164010000000081111561281d57600080fd5b8201602081018481111561283057600080fd5b815164010000000081118282018710171561284a57600080fd5b5050602082015160409092018051919492939164010000000081111561286f57600080fd5b8201602081018481111561288257600080fd5b815185602082028301116401000000008211171561289f57600080fd5b505092919060200180519060200190929190805190602001909291908051906020019092919080519060200190929190505050975097509750975097509750975097509091929394959697565b6128f4610aaf565b1515612938576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061469b833981519152604482015290519081900360640190fd5b601254604080517f48f79607000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916348f796079160248082019260009290919082900301818387803b15801561272e57600080fd5b60006129a8610aaf565b15156129ec576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061469b833981519152604482015290519081900360640190fd5b50601254604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018490529051849283169163095ea7b39160448083019260209291908290030181600087803b158015612a5c57600080fd5b505af1158015612a70573d6000803e3d6000fd5b505050506040513d602081101561209457600080fd5b612a8e61352a565b1515612ad2576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b6011805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b612b09610aaf565b80612b175750612b1761352a565b1515612b5b576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b60008111612bb3576040805160e560020a62461bcd02815260206004820152601560248201527f6169546f6b656e4733206d757374206265203e20300000000000000000000000604482015290519081900360640190fd5b600854811415612c0d576040805160e560020a62461bcd02815260206004820152601b60248201527f6169546f6b656e4733206d757374206265206e65772076616c75650000000000604482015290519081900360640190fd5b60088190556040805182815290517fd3d81cad3cdf5cf5bc2d3bdd083728dca5f3049f3ec44298b0248c8217a561999181900360200190a150565b612c50610aaf565b1515612c94576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061469b833981519152604482015290519081900360640190fd5b601254604080517f1e59c529000000000000000000000000000000000000000000000000000000008152600160a060020a03848116602483015260048201928352855160448301528551931692631e59c5299286928692829160640190602086019080838360005b83811015612d14578181015183820152602001612cfc565b50505050905090810190601f168015612d415780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612d6157600080fd5b505af1158015612d75573d6000803e3d6000fd5b505050505050565b612d85610aaf565b80612d935750612d9361352a565b1515612dd7576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b60008111612e2f576040805160e560020a62461bcd02815260206004820152600b60248201527f4d757374206265203e2030000000000000000000000000000000000000000000604482015290519081900360640190fd5b600b548110612e88576040805160e560020a62461bcd02815260206004820152601860248201527f4d757374206265203c206d61784a6f696e5061636b6167650000000000000000604482015290519081900360640190fd5b600a54811415612ed0576040805160e560020a62461bcd02815260206004820152601160248201526000805160206146bb833981519152604482015290519081900360640190fd5b600a8190556040805182815290517fdbecd9aa4d7a32d8b26e95c265a7edff020bfd6e09c914833f5f7208270237369181900360200190a150565b6000612f15610aaf565b80612f235750612f2361352a565b1515612f67576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b8251600010612fc0576040805160e560020a62461bcd02815260206004820152601760248201527f416464726573732063616e6e6f7420626520656d707479000000000000000000604482015290519081900360640190fd5b8251610100101561301b576040805160e560020a62461bcd02815260206004820152601f60248201527f4d6178696d756d2075736572732070657220616374696f6e2069732032353600604482015290519081900360640190fd5b60008260ff1610158015613033575060038260ff1611155b1515613089576040805160e560020a62461bcd02815260206004820152600f60248201527f5479706520697320696e76616c69640000000000000000000000000000000000604482015290519081900360640190fd5b5060005b82518160ff16101561317c5782513390849060ff84169081106130ac57fe5b60209081029091010151600160a060020a03161415613115576040805160e560020a62461bcd02815260206004820152601860248201527f596f752063616e6e6f74206c6f636b20796f757273656c660000000000000000604482015290519081900360640190fd5b8160ff16600381111561312457fe5b60056000858460ff1681518110151561313957fe5b6020908102909101810151600160a060020a03168252810191909152604001600020805460ff1916600183600381111561316f57fe5b021790555060010161308d565b7fa4c25a558ef9057d52f5288f1a06611914cbed6bab5e47ab7ef302ba37ccdf2d838360405180806020018360ff1660ff168152602001828103825284818151815260200191508051906020019060200280838360005b838110156131eb5781810151838201526020016131d3565b50505050905001935050505060405180910390a1505050565b61320c610aaf565b8061321a575061321a61352a565b151561325e576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600a5481116132b7576040805160e560020a62461bcd02815260206004820152601860248201527f4d757374206265203e206d696e4a6f696e5061636b6167650000000000000000604482015290519081900360640190fd5b600b548114156132ff576040805160e560020a62461bcd02815260206004820152601160248201526000805160206146bb833981519152604482015290519081900360640190fd5b600b8190556040805182815290517f12b9aff014569f32de919545171daec25b5e27ba47fba531f23351b0142be0579181900360200190a150565b600480548290811061334857fe5b600091825260209091206003909102018054600182015460029092015490925083565b600a5481565b61337961352a565b15156133bd576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b600d8054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b6000811161344a576040805160e560020a62461bcd02815260206004820152601260248201527f416d6f756e74206d757374206265203e20300000000000000000000000000000604482015290519081900360640190fd5b600b548111156134ca576040805160e560020a62461bcd02815260206004820152603660248201527f43616e206e6f74206a6f696e207769746820616d6f756e74207468617420677260448201527f6561746572206d6178206a6f696e207061636b61676500000000000000000000606482015290519081900360840190fd5b600a5481101561093f576040805160e560020a62461bcd02815260206004820152601e60248201527f4d696e696d756d20666f72206669727374206a6f696e20697320243230300000604482015290519081900360640190fd5b60095481565b600154600160a060020a0316331490565b613543610aaf565b80613551575061355161352a565b1515613595576040805160e560020a62461bcd028152602060048201526009602482015260008051602061465b833981519152604482015290519081900360640190fd5b600081116135ed576040805160e560020a62461bcd02815260206004820152601560248201527f6169546f6b656e4732206d757374206265203e20300000000000000000000000604482015290519081900360640190fd5b600954811415613647576040805160e560020a62461bcd02815260206004820152601b60248201527f6169546f6b656e4732206d757374206265206e65772076616c75650000000000604482015290519081900360640190fd5b60098190556040805182815290517fe68a407f4fb9369152f192537dafac2e63a2e5e54014b93eec900db34a67ab0d9181900360200190a150565b600c5481565b60056020526000908152604090205460ff1681565b600160a060020a03811660009081526005602052604081205460ff1660038111156136c457fe5b90505b919050565b600d546101009004600160a060020a031681565b6136e861352a565b151561372c576040805160e560020a62461bcd028152602060048201526011602482015260008051602061467b833981519152604482015290519081900360640190fd5b600160a060020a038116151561374157600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b600e546040805160e060020a63f3caad03028152600160a060020a0385811660048301529151919092169163f3caad039160248083019260209291908290030181600087803b1580156137ec57600080fd5b505af1158015613800573d6000803e3d6000fd5b505050506040513d602081101561381657600080fd5b5051151561386e576040805160e560020a62461bcd02815260206004820152601560248201527f506c656173652072656769737465722066697273740000000000000000000000604482015290519081900360640190fd5b600e546040805160e060020a63f3caad03028152600160a060020a0384811660048301529151919092169163f3caad039160248083019260209291908290030181600087803b1580156138c057600080fd5b505af11580156138d4573d6000803e3d6000fd5b505050506040513d60208110156138ea57600080fd5b50511515613968576040805160e560020a62461bcd02815260206004820152602560248201527f596f752063616e206f6e6c792062757920666f7220616e20657869737473206d60448201527f656d626572000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382811690821614613a9357600e54604080517fda9c9ba7000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301529151919092169163da9c9ba79160448083019260209291908290030181600087803b1580156139eb57600080fd5b505af11580156139ff573d6000803e3d6000fd5b505050506040513d6020811015613a1557600080fd5b50511515613a93576040805160e560020a62461bcd02815260206004820152602560248201527f5468697320757365722069736e277420696e20796f757220726566657272616c60448201527f2074726565000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600c54600010613b13576040805160e560020a62461bcd02815260206004820152602e60248201527f496e76616c69642063757272656e7445544850726963652c20706c656173652060448201527f636f6e746163742061646d696e21000000000000000000000000000000000000606482015290519081900360840190fd5b5050565b60006002600160a060020a03831660009081526005602052604090205460ff166003811115613b4257fe5b14158015613b7757506003600160a060020a03831660009081526005602052604090205460ff166003811115613b7457fe5b14155b9050801515613b13576040805160e560020a62461bcd02815260206004820152602960248201527f596f7572206163636f756e7420676574206c6f636b65642066726f6d206d696e60448201527f696e6720746f6b656e0000000000000000000000000000000000000000000000606482015290519081900360840190fd5b33600081815260026020908152604080832060105482517ff372f84c0000000000000000000000000000000000000000000000000000000081526004810196909652915190948493849384938493849384938493600160a060020a039091169263f372f84c92602480830193919282900301818787803b158015613c7957600080fd5b505af1158015613c8d573d6000803e3d6000fd5b505050506040513d6020811015613ca357600080fd5b50518954600490910298501515613d3757878a1115613d32576040805160e560020a62461bcd02815260206004820152603b60248201527f546f6461793a20596f752063616e206f6e6c79206d696e65206d6178696d756d60448201527f203478206f6620796f757220746f74616c206465706f73697465640000000000606482015290519081900360840190fd5b613eb7565b88546000975087965094508593505b84841015613daf578884815481101515613d5c57fe5b9060005260206000209060020201925082600001546201518042031091508115613d9d576001830154613d9690889063ffffffff6145b216565b9650613da4565b6001909501945b600190930192613d46565b6000861115613e2a575060005b8854869003811015613e195788868201815481101515613dd857fe5b90600052602060002090600202018982815481101515613df457fe5b6000918252602090912082546002909202019081556001918201549082015501613dbc565b8854869003613e288a82614616565b505b87613e3b888c63ffffffff6145b216565b1115613eb7576040805160e560020a62461bcd02815260206004820152603b60248201527f546f6461793a20596f752063616e206f6e6c79206d696e65206d6178696d756d60448201527f203478206f6620796f757220746f74616c206465706f73697465640000000000606482015290519081900360840190fd5b5050604080518082019091524281526020808201998a52885460018181018b5560009a8b52919099209151600290990290910197885597519690970195909555505050505050565b600f54604080517fbb1937c0000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151600093929092169163bb1937c09160248082019260209290919082900301818787803b158015613f6a57600080fd5b505af1158015613f7e573d6000803e3d6000fd5b505050506040513d6020811015613f9457600080fd5b5051905081811015613ff0576040805160e560020a62461bcd02815260206004820152601b60248201527f596f752068617665206e6f7420656e6f7567682062616c616e63650000000000604482015290519081900360640190fd5b505050565b600080600854111515614078576040805160e560020a62461bcd02815260206004820152602760248201527f496e76616c6964206169546f6b656e47332c20706c6561736520636f6e74616360448201527f742061646d696e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6008548281151561408557fe5b0492915050565b33600081815260036020908152604080832060105482517ff372f84c000000000000000000000000000000000000000000000000000000008152600481019690965291519094849384938493849384938493849384938493600160a060020a039093169263f372f84c9260248084019382900301818787803b15801561411157600080fd5b505af1158015614125573d6000803e3d6000fd5b505050506040513d602081101561413b57600080fd5b50519850600097505b6004548810156141b857600480548990811061415c57fe5b9060005260206000209060030201965060016004805490500388141561418857866002015499506141b8565b8654891080159061419c5750866001015489105b156141ad57866002015499506141b8565b600190970196614144565b60008a1161425c576040805160e560020a62461bcd02815260206004820152604760248201527f496e76616c6964206d6178532c206d6179626520796f752068617665206e6f7460448201527f206a6f696e6564207061636b616765206f7220706c6561736520636f6e74616360648201527f742061646d696e00000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b8a5415156142c157898c11156142bc576040805160e560020a62461bcd02815260206004820152601160248201527f416d6f756e7420697320696e76616c6964000000000000000000000000000000604482015290519081900360640190fd5b61441b565b8a546000985088965086955093505b83881015614339578a888154811015156142e657fe5b906000526020600020906002020192508260000154620151804203109150811561432757600183015461432090879063ffffffff6145b216565b955061432e565b6001909401935b6001909701966142d0565b60008511156143b4575060005b8a548590038110156143a3578a85820181548110151561436257fe5b90600052602060002090600202018b8281548110151561437e57fe5b6000918252602090912082546002909202019081556001918201549082015501614346565b8a548590036143b28c82614616565b505b896143c5878e63ffffffff6145b216565b111561441b576040805160e560020a62461bcd02815260206004820152601260248201527f546f6f206d75636820666f7220746f6461790000000000000000000000000000604482015290519081900360640190fd5b50506040805180820190915242815260208082019b8c528a5460018181018d5560009c8d5291909b2091516002909b02909101998a55995198909901979097555050505050505050565b60008082121561447b57816000190290506136c7565b5090565b600f54604080517ff1f89e92000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152670de0b6b3a7640000858702046024830181905260006044840181905260648401889052935160058804959194929091169263f1f89e9292608480830193919282900301818387803b15801561450e57600080fd5b505af1158015614522573d6000803e3d6000fd5b505060008054604051600160a060020a03909116935085156108fc0292508591818181858888f1935050505015801561455f573d6000803e3d6000fd5b5060408051600160a060020a0380891682528716602082015280820183905290517f2ced4e9f0876fb793bc9670927e9d22151fe5f129df989c2d4946ef5a59a97db9181900360600190a1505050505050565b60008282018381101561460f576040805160e560020a62461bcd02815260206004820152601260248201527f536166654d61746820616464206572726f720000000000000000000000000000604482015290519081900360640190fd5b9392505050565b815481835581811115613ff057600083815260209020613ff091610abe9160029182028101918502015b8082111561447b576000808255600182015560020161464056006f6e6c7941646d696e00000000000000000000000000000000000000000000006f6e6c79436f6e747261637441646d696e0000000000000000000000000000006f6e6c794d61696e41646d696e000000000000000000000000000000000000004d757374206265206e65772076616c7565000000000000000000000000000000a165627a7a72305820807c27551c0fdba70b2ac314afc14a5999e8347a31faa7664f5f4e1ed0b004610029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000b143b1b4c1355f400351e914feaec965d17947700000000000000000000000007f464a81db1c5eb975227b6953daf6b216fbc561000000000000000000000000000000000000000000000000000000000001d8a8

-----Decoded View---------------
Arg [0] : _oldRF (address): 0xb143b1B4C1355F400351e914FeAEC965D1794770
Arg [1] : _mainAdmin (address): 0x7f464A81db1c5Eb975227B6953DaF6b216fbc561
Arg [2] : _currentETHPrice (uint256): 121000

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000b143b1b4c1355f400351e914feaec965d1794770
Arg [1] : 0000000000000000000000007f464a81db1c5eb975227b6953daf6b216fbc561
Arg [2] : 000000000000000000000000000000000000000000000000000000000001d8a8


Deployed Bytecode Sourcemap

7491:17398:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11208:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11208:124:0;-1:-1:-1;;;;;11208:124:0;;;;;13161:346;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13161:346:0;;;;;969:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;969:99:0;;;;;;;;;;;;;;;;;;;;;;15032:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15032:100:0;;;;;;;;;;;;;;;;;;;;15392:357;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15392:357:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15392:357:0;;-1:-1:-1;;;15392:357:0;;-1:-1:-1;;;;;15392:357:0;;-1:-1:-1;15392:357:0;;-1:-1:-1;;;15392:357:0;14938:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14938:86:0;;;;8707:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8707:22:0;;;;;;;;-1:-1:-1;;;;;8707:22:0;;;;;;;;;;;;;;10415:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10415:120:0;-1:-1:-1;;;;;10415:120:0;;;;;8524:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8524:44:0;;;;17083:794;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17083:794:0;;;-1:-1:-1;;;;;17083:794:0;;;;;17885:898;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17885:898:0;;;;;18791:840;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18791:840:0;;;;;15140:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15140:104:0;;;;13515:360;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13515:360:0;;;;;15931:728;;;;-1:-1:-1;;;;;15931:728:0;;;;;16667:408;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16667:408:0;;;-1:-1:-1;;;;;16667:408:0;;;;;12050:333;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12050:333:0;;;;;;;10543:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10543:121:0;-1:-1:-1;;;;;10543:121:0;;;;;10291:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10291:116:0;-1:-1:-1;;;;;10291:116:0;;;;;12391:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12391:248:0;;;;;;;19639:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19639:98:0;;;;10908:292;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10908:292:0;;;;;14785:80;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14785:80:0;;;;;8438:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8438:37:0;;;;15757:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15757:166:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15757:166:0;-1:-1:-1;;;;;15757:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15757:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15757:166:0;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15757:166:0;;;;;;;;;;;;;;;;;;;;;;;;;14549:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14549:82:0;;;;;14639:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14639:138:0;-1:-1:-1;;;;;14639:138:0;;;;;;;10672:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10672:112:0;-1:-1:-1;;;;;10672:112:0;;;;;12904:249;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12904:249:0;;;;;14437:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14437:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14437:104:0;;-1:-1:-1;;;14437:104:0;;-1:-1:-1;;;;;14437:104:0;;-1:-1:-1;14437:104:0;;-1:-1:-1;;;14437:104:0;11340:374;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11340:374:0;;;;;13883:546;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13883:546:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13883:546:0;;-1:-1:-1;;;13883:546:0;;;;;-1:-1:-1;13883:546:0;;-1:-1:-1;;;13883:546:0;11722:320;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11722:320:0;;;;;8084:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8084:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8388:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8388:35:0;;;;10792:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10792:108:0;-1:-1:-1;;;;;10792:108:0;;;;;20386:317;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20386:317:0;;;;;8326:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8326:21:0;;;;1076:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1076:107:0;;;;12647:249;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12647:249:0;;;;;8490:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8490:27:0;;;;8115:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8115:46:0;-1:-1:-1;;;;;8115:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15252:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15252:130:0;-1:-1:-1;;;;;15252:130:0;;;;;;;;;;;;;;;;;;;;;;;;8575:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8575:24:0;;;;11208:124;673:17;:15;:17::i;:::-;665:47;;;;;;;-1:-1:-1;;;;;665:47:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;665:47:0;;;;;;;;;;;;;;;11294:30;11312:11;11294:17;:30::i;:::-;11208:124;:::o;13161:346::-;446:13;:11;:13::i;:::-;:34;;;;463:17;:15;:17::i;:::-;438:56;;;;;;;-1:-1:-1;;;;;438:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;438:56:0;;;;;;;;;;;;;;;13270:1;13250:21;;13242:62;;;;;-1:-1:-1;;;;;13242:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13344:16;;13323:37;;;13315:84;;;;;-1:-1:-1;;;;;13315:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13410:16;:36;;;13462:37;;;;;;;;;;;;;;;;;13161:346;:::o;969:99::-;1013:4;1051:9;-1:-1:-1;;;;;1051:9:0;1037:10;:23;969:99;;:::o;15032:100::-;15108:16;;15032:100;:::o;15392:357::-;15479:7;;:27;;;-1:-1:-1;;;;;15479:27:0;;-1:-1:-1;;;;;15479:27:0;;;;;;;;;15619:7;;15479;;;;;:17;;:27;;;;;;;;;;;;;;;15619:7;15479;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;15479:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15479:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15479:27:0;15471:67;;;;;;;-1:-1:-1;;;;;15471:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15557:22:0;;15569:10;15557:22;;15549:59;;;;;-1:-1:-1;;;;;15549:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15629:7;;:49;;;;;15646:10;15629:49;;;;;;-1:-1:-1;;;;;15629:49:0;;;;;;;;;;;;;;;;;;;;;;:7;;;;;:16;;15658:9;;15669:8;;15629:49;;;;;;;;;;;;;:7;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15629:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15629:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15629:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15629:49:0;15694:47;;;;;;15720:10;15694:47;;;;;;-1:-1:-1;;;;;15694:47:0;;;;;;;15629:49;15694:47;;;;;;;;;;;;;;;;;15629:49;;-1:-1:-1;15694:47:0;;15629:49;;15709:9;;15720:10;;15732:8;;15694:47;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15694:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15392:357;;;:::o;14938:86::-;15007:9;;14938:86;:::o;8707:22::-;;;-1:-1:-1;;;;;8707:22:0;;:::o;10415:120::-;673:17;:15;:17::i;:::-;665:47;;;;;;;-1:-1:-1;;;;;665:47:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;665:47:0;;;;;;;;;;;;;;;10491:7;:36;;-1:-1:-1;;10491:36:0;-1:-1:-1;;;;;10491:36:0;;;;;;;;;;10415:120::o;8524:44::-;;;;;;:::o;17083:794::-;17238:16;17415:19;17157:36;17177:10;17189:3;17157:19;:36::i;:::-;17204:23;17219:7;17204:14;:23::i;:::-;17268:9;;17258:7;:19;;;;;;;17310:8;;:45;;;;;;17329:10;17310:45;;;;17349:4;17310:45;;;;;;17258:19;;;;17282:8;17257:34;;-1:-1:-1;17257:34:0;;-1:-1:-1;;;;;17310:8:0;;;;:18;;:45;;;;;;;;;;;;;;-1:-1:-1;17310:8:0;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;17310:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17310:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17310:45:0;:60;;17302:102;;;;;-1:-1:-1;;;;;17302:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17437:8;;:30;;;-1:-1:-1;;;;;17437:30:0;;17456:10;17437:30;;;;;;-1:-1:-1;;;;;17437:8:0;;;;:18;;:30;;;;;;;;;;;;;;;:8;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;17437:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17437:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17437:30:0;;-1:-1:-1;17486:29:0;;;;17478:68;;;;;-1:-1:-1;;;;;17478:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17565:8;;:61;;;;;;17587:10;17565:61;;;;17607:4;17565:61;;;;;;;;;;;;-1:-1:-1;;;;;17565:8:0;;;;:21;;:61;;;;;;;;;;;;;;;:8;;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;17565:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17565:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17565:61:0;17557:95;;;;;;;-1:-1:-1;;;;;17557:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17671:8;;;17689:9;-1:-1:-1;;;;;17671:8:0;;;;:17;;17689:9;17714:1;17700:11;:15;17671:45;;;;;;;;;;;;;-1:-1:-1;;;;;17671:45:0;-1:-1:-1;;;;;17671:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17671:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17671:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17671:45:0;17663:88;;;;;;;-1:-1:-1;;;;;17663:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17762:6;;:44;;;;;;-1:-1:-1;;;;;17762:44:0;;;;;;;;;;;;;:6;:44;;;;;;;;;;;;:6;;;;;:14;;:44;;;;;:6;;:44;;;;;;;:6;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;17762:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;17822:47:0;;;17844:10;17822:47;;-1:-1:-1;;;;;17822:47:0;;;;;;;;;;;;;;;;-1:-1:-1;17822:47:0;;;;;;;-1:-1:-1;17822:47:0;17083:794;;;;:::o;17885:898::-;18142:15;18450:19;17963:1;17951:9;;:13;17943:65;;;;;;;-1:-1:-1;;;;;17943:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18027:7;;:29;;;-1:-1:-1;;;;;18027:29:0;;18045:10;18027:29;;;;;;-1:-1:-1;;;;;18027:7:0;;;;:17;;:29;;;;;;;;;;;;;;;:7;;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;18027:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18027:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18027:29:0;18019:63;;;;;;;-1:-1:-1;;;;;18019:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18093:38;18120:10;18093:26;:38::i;:::-;18176:9;;18190:8;;18161:24;;18160:39;18142:57;;18210:27;18226:10;18210:15;:27::i;:::-;18270:16;;18256:30;;;18248:77;;;;;-1:-1:-1;;;;;18248:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18336:45;18358:10;18370;18336:21;:45::i;:::-;18394:11;;:45;;;;;;18416:10;18394:45;;;;;;;;;;;;-1:-1:-1;;;;;18394:11:0;;;;:21;;:45;;;;;:11;;:45;;;;;;;;:11;;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;18394:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;18472:8:0;;:30;;;-1:-1:-1;;;;;18472:30:0;;18491:10;18472:30;;;;;;-1:-1:-1;;;;;18472:8:0;;;;-1:-1:-1;18472:18:0;;-1:-1:-1;18472:30:0;;;;;;;;;;;;;;;:8;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18472:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18472:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18472:30:0;18521:8;;:43;;;;;;18539:10;18521:43;;;;;;;;;;;;18472:30;;-1:-1:-1;;;;;;18521:8:0;;;;:17;;:43;;;;;18472:30;;18521:43;;;;;;;;:8;;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;18521:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18521:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18521:43:0;18513:85;;;;;;;-1:-1:-1;;;;;18513:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18617:8;;:30;;;-1:-1:-1;;;;;18617:30:0;;18636:10;18617:30;;;;;;18651:29;;;;-1:-1:-1;;;;;18617:8:0;;:18;;:30;;;;;;;;;;;;;;:8;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18617:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18617:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18617:30:0;:63;18609:102;;;;;-1:-1:-1;;;;;18609:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18727:48;;;18738:10;18727:48;;;;;;;;;;;;;;;;;;;;;;;;;17885:898;;;:::o;18791:840::-;18991:16;18850:11;;;18842:46;;;;;-1:-1:-1;;;;;18842:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18907:8;;:30;;;-1:-1:-1;;;;;18907:30:0;;18926:10;18907:30;;;;;;18941:7;;-1:-1:-1;;;;;18907:8:0;;:18;;:30;;;;;;;;;;;;;;:8;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18907:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18907:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18907:30:0;:41;;18899:81;;;;;-1:-1:-1;;;;;18899:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19010:32;19034:7;19010:23;:32::i;:::-;18991:51;-1:-1:-1;19069:4:0;19061:21;:36;-1:-1:-1;19061:36:0;19053:85;;;;;-1:-1:-1;;;;;19053:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19149:28;19165:11;19149:15;:28::i;:::-;19196:8;;:45;;;;;;19215:10;19196:45;;;;19235:4;19196:45;;;;;;19245:7;;-1:-1:-1;;;;;19196:8:0;;:18;;:45;;;;;;;;;;;;;;:8;;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;19196:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19196:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19196:45:0;:56;;19188:98;;;;;-1:-1:-1;;;;;19188:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19305:8;;19339:9;;19305:53;;;;;;19327:10;19305:53;;;;:8;19339:9;;;-1:-1:-1;;;;;19339:9:0;;;19305:53;;;;;;;;;;;;:8;;;:21;;:53;;;;;;;;;;;;;;;:8;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;19305:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19305:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19305:53:0;19297:87;;;;;;;-1:-1:-1;;;;;19297:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19395:32;;:10;;:32;;;;;19415:11;;19395:32;;;;19415:11;19395:10;:32;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;19440:11:0;;:44;;;;;;;;;;;;;;-1:-1:-1;;;;;19440:11:0;;;;:31;;:44;;;;;:11;;:44;;;;;;;;:11;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;19440:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;19495:11:0;;:66;;;;;;19537:10;19495:66;;;;;;;;;;;;-1:-1:-1;;;;;19495:11:0;;;;-1:-1:-1;19495:41:0;;-1:-1:-1;19495:66:0;;;;;:11;;:66;;;;;;;;:11;;:66;;;5:2:-1;;;;30:1;27;20:12;5:2;19495:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;19577:46:0;;;19590:10;19577:46;;;;;;;;;;;;;;;;;;-1:-1:-1;19577:46:0;;;;;;;-1:-1:-1;19577:46:0;18791:840;;:::o;15140:104::-;15218:18;;15140:104;:::o;13515:360::-;446:13;:11;:13::i;:::-;:34;;;;463:17;:15;:17::i;:::-;438:56;;;;;;;-1:-1:-1;;;;;438:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;438:56:0;;;;;;;;;;;;;;;13630:1;13608:23;;13600:58;;;;;-1:-1:-1;;;;;13600:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13700:18;;13677:41;;;13669:90;;;;;-1:-1:-1;;;;;13669:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13770:18;:40;;;13826:41;;;;;;;;;;;;;;;;;13515:360;:::o;15931:728::-;16019:25;;16240:29;;;;;;16019:25;;16011:63;;;;;;;-1:-1:-1;;;;;16011:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16085:36;16105:10;16117:3;16085:19;:36::i;:::-;16148:1;16140:9;;16132:38;;;;;-1:-1:-1;;;;;16132:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16181:48;16219:8;16197:9;:17;;16196:32;16181:14;:48::i;:::-;16331:1;16316:5;16273:34;16295:5;16277:15;;:23;16273:32;:34::i;:::-;16310:3;16273:40;:48;;;;;;;;16272:61;;16240:93;;16444:1;16419:15;;16376:34;16388:15;;16380:5;:23;16376:32;:34::i;:::-;16413:3;16376:40;:58;;;;;;;;16375:71;;16344:102;;16474:24;:51;;;;;16502:23;16474:51;16457:68;;16544:9;16536:55;;;;;;;-1:-1:-1;;;;;16536:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16602:49;16617:10;16629:3;16634:9;16645:5;16602:14;:49::i;:::-;15931:728;;;;;:::o;16667:408::-;16742:36;16762:10;16774:3;16742:19;:36::i;:::-;16789:23;16804:7;16789:14;:23::i;:::-;16823:42;16845:10;16857:7;16823:21;:42::i;:::-;16876:6;;:40;;;;;;-1:-1:-1;;;;;16876:40:0;;;;;;;;;;;;;16905:1;16876:40;;;;;;;;;;;;:6;;;;;:14;;:40;;;;;:6;;:40;;;;;;;:6;;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16876:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;16927:11:0;;16993:9;;;16927:76;;;;;;16990:1;16980:11;;16927:76;;;;-1:-1:-1;;;;;16993:9:0;;;16927:76;;;;;;:11;;;;;-1:-1:-1;16927:52:0;;-1:-1:-1;16927:76:0;;;;;;;;;;16993:9;16927:11;:76;;;5:2:-1;;;;30:1;27;20:12;5:2;16927:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;17019:48:0;;;17042:10;17019:48;;-1:-1:-1;;;;;17019:48:0;;;;;;;;;;;;;;;;-1:-1:-1;17019:48:0;;;;;;;-1:-1:-1;17019:48:0;16667:408;;:::o;12050:333::-;446:13;:11;:13::i;:::-;:34;;;;463:17;:15;:17::i;:::-;438:56;;;;;;;-1:-1:-1;;;;;438:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;438:56:0;;;;;;;;;;;;;;;12187:25;;;;12157:55;;;;;;;12149:85;;;;;-1:-1:-1;;;;;12149:85:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12149:85:0;;;;;;;;;;;;;;;12245:25;:54;;-1:-1:-1;;12245:54:0;;;;;;;;;12315:60;;;12245:54;12349:25;;;12315:60;;;;;;;;;;;;;;;12050:333;:::o;10543:121::-;673:17;:15;:17::i;:::-;665:47;;;;;;;-1:-1:-1;;;;;665:47:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;665:47:0;;;;;;;;;;;;;;;10616:11;:40;;-1:-1:-1;;10616:40:0;-1:-1:-1;;;;;10616:40:0;;;;;;;;;;10543:121::o;10291:116::-;673:17;:15;:17::i;:::-;665:47;;;;;;;-1:-1:-1;;;;;665:47:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;665:47:0;;;;;;;;;;;;;;;10366:6;:33;;-1:-1:-1;;10366:33:0;-1:-1:-1;;;;;10366:33:0;;;;;;;;;;10291:116::o;12391:248::-;12565:20;446:13;:11;:13::i;:::-;:34;;;;463:17;:15;:17::i;:::-;438:56;;;;;;;-1:-1:-1;;;;;438:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;438:56:0;;;;;;;;;;;;;;;12479:1;12471:9;;12463:33;;;;;-1:-1:-1;;;;;12463:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12524:6;:13;12515:22;;12507:47;;;;;-1:-1:-1;;;;;12507:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12588:6;:14;;12595:6;;12588:14;;;;;;;;;;;;;;12613:10;12588:14;;;;;12613:10;:18;;;;-1:-1:-1;;12391:248:0:o;19639:98::-;19714:15;;19639:98;:::o;10908:292::-;446:13;:11;:13::i;:::-;:34;;;;463:17;:15;:17::i;:::-;438:56;;;;;;;-1:-1:-1;;;;;438:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;438:56:0;;;;;;;;;;;;;;;11010:1;10991:20;;10983:44;;;;;-1:-1:-1;;;;;10983:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11066:15;;11046:35;;;11038:65;;;;;-1:-1:-1;;;;;11038:65:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11038:65:0;;;;;;;;;;;;;;;11114:15;:34;;;11164:28;;;;;;;;;;;;;;;;;10908:292;:::o;14785:80::-;566:13;:11;:13::i;:::-;558:39;;;;;;;-1:-1:-1;;;;;558:39:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;558:39:0;;;;;;;;;;;;;;;14838:5;;:19;;;;;;;;;;;;;;-1:-1:-1;;;;;14838:5:0;;;;:15;;:19;;;;;:5;;:19;;;;;;;;:5;;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;14838:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;8438:37:0;;;;:::o;15757:166::-;15879:7;;:36;;;;;;15904:10;15879:36;;;;;;15796:4;;15802:6;;15796:4;;15802:6;;15796:4;;;;;;;;-1:-1:-1;;;;;15879:7:0;;;;:24;;:36;;;;;15796:4;;15879:36;;;;;;;;15796:4;15879:7;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;15879:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15879:36:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;15879:36:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;15879:36:0;;;;;;;;;;;;;;20:11:-1;12:20;;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;218:10;;268:11;251:29;;293:43;;;290:58;-1:-1;239:118;236:2;;;370:1;367;360:12;236:2;-1:-1;;15879:36:0;;;;;;;;;;;;;;;20:11:-1;12:20;;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;224:3;218:10;339:9;333:2;319:12;315:21;297:16;293:44;290:59;268:11;254:12;251:29;239:119;236:2;;;371:1;368;361:12;236:2;0:383;;15879:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15872:43;;;;;;;;;;;;;;;;15757:166;;;;;;;;:::o;14549:82::-;566:13;:11;:13::i;:::-;558:39;;;;;;;-1:-1:-1;;;;;558:39:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;558:39:0;;;;;;;;;;;;;;;14602:5;;:21;;;;;;;;;;;;;;-1:-1:-1;;;;;14602:5:0;;;;:17;;:21;;;;;:5;;:21;;;;;;;;:5;;:21;;;5:2:-1;;;;30:1;27;20:12;14639:138:0;14705:9;566:13;:11;:13::i;:::-;558:39;;;;;;;-1:-1:-1;;;;;558:39:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;558:39:0;;;;;;;;;;;;;;;-1:-1:-1;14758:5:0;;14739:30;;;;;;-1:-1:-1;;;;;14758:5:0;;;14739:30;;;;;;;;;;;;14724:3;;14739:10;;;;;:30;;;;;;;;;;;;;;14758:5;14739:10;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;14739:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14739:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;10672:112:0;673:17;:15;:17::i;:::-;665:47;;;;;;;-1:-1:-1;;;;;665:47:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;665:47:0;;;;;;;;;;;;;;;10748:8;:28;;-1:-1:-1;;10748:28:0;-1:-1:-1;;;;;10748:28:0;;;;;;;;;;10672:112::o;12904:249::-;446:13;:11;:13::i;:::-;:34;;;;463:17;:15;:17::i;:::-;438:56;;;;;;;-1:-1:-1;;;;;438:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;438:56:0;;;;;;;;;;;;;;;12982:1;12974:9;;12966:43;;;;;-1:-1:-1;;;;;12966:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13037:9;;13028:18;;;13020:58;;;;;-1:-1:-1;;;;;13020:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13089:9;:17;;;13122:23;;;;;;;;;;;;;;;;;12904:249;:::o;14437:104::-;566:13;:11;:13::i;:::-;558:39;;;;;;;-1:-1:-1;;;;;558:39:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;558:39:0;;;;;;;;;;;;;;;14511:5;;:22;;;;;;-1:-1:-1;;;;;14511:22:0;;;;;;;;;;;;;;;;;;;;;:5;;;:14;;14526:2;;14530;;14511:22;;;;;;;;;;;;:5;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14511:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14511:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14511:22:0;;;;14437:104;;:::o;11340:374::-;446:13;:11;:13::i;:::-;:34;;;;463:17;:15;:17::i;:::-;438:56;;;;;;;-1:-1:-1;;;;;438:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;438:56:0;;;;;;;;;;;;;;;11443:1;11425:19;;11417:43;;;;;-1:-1:-1;;;;;11417:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11497:14;;11479:32;;11471:69;;;;;-1:-1:-1;;;;;11471:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11578:14;;11559:33;;;11551:63;;;;;-1:-1:-1;;;;;11551:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11551:63:0;;;;;;;;;;;;;;;11625:14;:32;;;11673:33;;;;;;;;;;;;;;;;;11340:374;:::o;13883:546::-;14183:7;446:13;:11;:13::i;:::-;:34;;;;463:17;:15;:17::i;:::-;438:56;;;;;;;-1:-1:-1;;;;;438:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;438:56:0;;;;;;;;;;;;;;;13976:17;;13996:1;-1:-1:-1;13968:57:0;;;;;-1:-1:-1;;;;;13968:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14044:17;;14065:3;-1:-1:-1;14044:24:0;14036:68;;;;;-1:-1:-1;;;;;14036:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14132:1;14123:5;:10;;;;:24;;;;;14146:1;14137:5;:10;;;;14123:24;14115:52;;;;;;;-1:-1:-1;;;;;14115:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14193:1:0;14178:195;14200:10;:17;14196:1;:21;;;14178:195;;;14247:13;;14264:10;;14247;;:13;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14247:27:0;;;14239:64;;;;;-1:-1:-1;;;;;14239:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14355:5;14350:11;;;;;;;;;;14318:14;:29;14333:10;14344:1;14333:13;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14318:29:0;;;;;;;;;;;-1:-1:-1;14318:29:0;:43;;-1:-1:-1;;14318:43:0;;;;;;;;;;;;;;;-1:-1:-1;14219:3:0;;14178:195;;;14388:33;14403:10;14415:5;14388:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14388:33:0;;;;;;;;;;;;;;;;;;13883:546;;;:::o;11722:320::-;446:13;:11;:13::i;:::-;:34;;;;463:17;:15;:17::i;:::-;438:56;;;;;;;-1:-1:-1;;;;;438:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;438:56:0;;;;;;;;;;;;;;;11825:14;;11807:32;;11799:69;;;;;-1:-1:-1;;;;;11799:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11906:14;;11887:33;;;11879:63;;;;;-1:-1:-1;;;;;11879:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11879:63:0;;;;;;;;;;;;;;;11953:14;:32;;;12001:33;;;;;;;;;;;;;;;;;11722:320;:::o;8084:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8084:22:0;:::o;8388:35::-;;;;:::o;10792:108::-;673:17;:15;:17::i;:::-;665:47;;;;;;;-1:-1:-1;;;;;665:47:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;665:47:0;;;;;;;;;;;;;;;10870:9;:22;;-1:-1:-1;;;;;10870:22:0;;;;;-1:-1:-1;;10870:22:0;;;;;;;;;10792:108::o;20386:317::-;20477:1;20461:17;;20453:48;;;;;-1:-1:-1;;;;;20453:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20537:14;;20520:31;;;20512:98;;;;;-1:-1:-1;;;;;20512:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20646:14;;20629:31;;;20621:74;;;;;-1:-1:-1;;;;;20621:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8326:21;;;;:::o;1076:107::-;1162:13;;-1:-1:-1;;;;;1162:13:0;1148:10;:27;;1076:107::o;12647:249::-;446:13;:11;:13::i;:::-;:34;;;;463:17;:15;:17::i;:::-;438:56;;;;;;;-1:-1:-1;;;;;438:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;438:56:0;;;;;;;;;;;;;;;12725:1;12717:9;;12709:43;;;;;-1:-1:-1;;;;;12709:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12780:9;;12771:18;;;12763:58;;;;;-1:-1:-1;;;;;12763:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12832:9;:17;;;12865:23;;;;;;;;;;;;;;;;;12647:249;:::o;8490:27::-;;;;:::o;8115:46::-;;;;;;;;;;;;;;;:::o;15252:130::-;-1:-1:-1;;;;;15348:25:0;;15317:5;15348:25;;;:14;:25;;;;;;;;15342:32;;;;;;;;15335:39;;15252:130;;;;:::o;8575:24::-;;;;;;-1:-1:-1;;;;;8575:24:0;;:::o;740:221::-;673:17;:15;:17::i;:::-;665:47;;;;;;;-1:-1:-1;;;;;665:47:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;665:47:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;832:25:0;;;;824:34;;;;;;869:13;:25;;-1:-1:-1;;869:25:0;-1:-1:-1;;;;;869:25:0;;;;;;;;910:43;;931:10;;910:43;;-1:-1:-1;;910:43:0;740:221;:::o;20711:479::-;20800:7;;:24;;;-1:-1:-1;;;;;20800:24:0;;-1:-1:-1;;;;;20800:24:0;;;;;;;;;:7;;;;;:17;;:24;;;;;;;;;;;;;;:7;;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;20800:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20800:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20800:24:0;20792:58;;;;;;;-1:-1:-1;;;;;20792:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20869:7;;:22;;;-1:-1:-1;;;;;20869:22:0;;-1:-1:-1;;;;;20869:22:0;;;;;;;;;:7;;;;;:17;;:22;;;;;;;;;;;;;;:7;;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;20869:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20869:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20869:22:0;20861:72;;;;;;;-1:-1:-1;;;;;20861:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20948:12:0;;;;;;;20944:150;;20985:7;;:55;;;;;;-1:-1:-1;;;;;20985:55:0;;;;;;;;;;;;;;;;:7;;;;;:43;;:55;;;;;;;;;;;;;;:7;;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;20985:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20985:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20985:55:0;20977:105;;;;;;;-1:-1:-1;;;;;20977:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21112:15;;21130:1;-1:-1:-1;21104:78:0;;;;;-1:-1:-1;;;;;21104:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20711:479;;:::o;21198:248::-;21273:11;21312:17;-1:-1:-1;;;;;21287:21:0;;;;;;:14;:21;;;;;;;;:42;;;;;;;;;;:80;;;;-1:-1:-1;21358:9:0;-1:-1:-1;;;;;21333:21:0;;;;;;:14;:21;;;;;;;;:34;;;;;;;;;;21287:80;21273:94;;21386:6;21378:60;;;;;;;-1:-1:-1;;;;;21378:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21454:1398;21560:10;21521:27;21551:20;;;:8;:20;;;;;;;;21598:11;;:29;;;;;;;;;;;;;;21551:20;;21521:27;;;;;;;;;;;;;;-1:-1:-1;;;;;21598:11:0;;;;:17;;:29;;;;;21551:20;;21598:29;;;;;21521:27;21598:11;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;21598:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21598:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21598:29:0;21642:15;;21594:1;:33;;;;-1:-1:-1;21642:20:0;21638:1155;;;21687:19;;;;21679:91;;;;;-1:-1:-1;;;;;21679:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21638:1155;;;21910:15;;21829:1;;-1:-1:-1;21829:1:0;;-1:-1:-1;21910:15:0;-1:-1:-1;21829:1:0;;-1:-1:-1;21940:391:0;21961:6;21957:1;:10;21940:391;;;22020:8;22029:1;22020:11;;;;;;;;;;;;;;;;;;;;21993:38;;22086:7;:12;;;22077:6;22071:3;:12;:27;22050:48;;22121:13;22117:199;;;22203:14;;;;22180:38;;:18;;:38;:22;:38;:::i;:::-;22159:59;;22117:199;;;22267:29;;;;;22117:199;21969:3;;;;;21940:391;;;22379:1;22349:27;:31;22345:307;;;-1:-1:-1;22415:1:0;22401:171;22422:15;;:45;;;22418:49;;22401:171;;;22511:8;22524:27;22520:1;:31;22511:41;;;;;;;;;;;;;;;;;;;;22497:8;22506:1;22497:11;;;;;;;;;;;;;;;;;;:55;;:11;;;;;:55;;;;;;;;;;;;22469:3;22401:171;;;22590:46;;;;;;:8;:46;;:::i;:::-;;22345:307;22713:4;22674:35;:18;22697:11;22674:35;:22;:35;:::i;:::-;:43;;22666:115;;;;;-1:-1:-1;;;;;22666:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22817:26:0;;;;;;;;;22826:3;22817:26;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;22803:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21454:1398:0:o;24668:218::-;24773:6;;:30;;;;;;-1:-1:-1;;;;;24773:30:0;;;;;;;;;24752:18;;24773:6;;;;;:23;;:30;;;;;;;;;;;;;;;24752:18;24773:6;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;24773:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24773:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24773:30:0;;-1:-1:-1;24822:24:0;;;;24814:64;;;;;-1:-1:-1;;;;;24814:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24668:218;;;:::o;19773:196::-;19842:4;19879:1;19867:9;;:13;19859:65;;;;;;;-1:-1:-1;;;;;19859:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19952:9;;19942:7;:19;;;;;;;;;19773:196;-1:-1:-1;;19773:196:0:o;22860:1800::-;22962:10;22923:27;22953:20;;;:8;:20;;;;;;;;23018:11;;:29;;;;;;;;;;;;;;22953:20;;22923:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23018:11:0;;;;:17;;:29;;;;;;;;;;22923:27;23018:11;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;23018:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23018:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23018:29:0;;-1:-1:-1;23072:1:0;;-1:-1:-1;23058:375:0;23079:6;:13;23075:17;;23058:375;;;23137:6;:9;;23144:1;;23137:9;;;;;;;;;;;;;;;;23114:32;;23186:1;23170:6;:13;;;;:17;23165:1;:22;23161:104;;;23215:5;:10;;;23208:17;;23244:5;;23161:104;23283:23;;:29;-1:-1:-1;23283:29:0;;;:61;;;23321:5;:23;;;23316:2;:28;23283:61;23279:143;;;23372:5;:10;;;23365:17;;23401:5;;23279:143;23094:3;;;;;23058:375;;;23458:1;23451:8;;23443:92;;;;;-1:-1:-1;;;;;23443:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23550:15;;:20;23546:1059;;;23595:15;;;;23587:45;;;;;-1:-1:-1;;;;;23587:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23546:1059;;;23772:15;;23691:1;;-1:-1:-1;23691:1:0;;-1:-1:-1;23691:1:0;;-1:-1:-1;23772:15:0;-1:-1:-1;23802:386:0;23818:6;23814:1;:10;23802:386;;;23877:8;23886:1;23877:11;;;;;;;;;;;;;;;;;;;;23850:38;;23943:7;:12;;;23934:6;23928:3;:12;:27;23907:48;;23978:13;23974:199;;;24060:14;;;;24037:38;;:18;;:38;:22;:38;:::i;:::-;24016:59;;23974:199;;;24124:29;;;;;23974:199;23826:3;;;;;23802:386;;;24236:1;24206:27;:31;24202:307;;;-1:-1:-1;24272:1:0;24258:171;24279:15;;:45;;;24275:49;;24258:171;;;24368:8;24381:27;24377:1;:31;24368:41;;;;;;;;;;;;;;;;;;;;24354:8;24363:1;24354:11;;;;;;;;;;;;;;;;;;:55;;:11;;;;;:55;;;;;;;;;;;;24326:3;24258:171;;;24447:46;;;;;;:8;:46;;:::i;:::-;;24202:307;24566:4;24531:31;:18;24554:7;24531:31;:22;:31;:::i;:::-;:39;;24523:70;;;;;-1:-1:-1;;;;;24523:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24629:22:0;;;;;;;;;24638:3;24629:22;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;24615:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;22860:1800:0:o;1210:170::-;1258:4;1288:1;1279:6;:10;1275:68;;;1318:6;-1:-1:-1;;1318:12:0;1306:25;;;;1275:68;-1:-1:-1;1365:6:0;1210:170::o;19977:401::-;20208:6;;:55;;;;;;-1:-1:-1;;;;;20208:55:0;;;;;;;20188:8;20158:25;;;20157:40;20208:55;;;;;;20084:18;20208:55;;;;;;;;;;;;;;20125:1;20105:21;;;20157:40;;20208:6;;;;;:14;;:55;;;;;20084:18;;20208:55;;;;;20084:18;20208:6;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;20208:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;20274:9:0;;;:33;;-1:-1:-1;;;;;20274:9:0;;;;-1:-1:-1;20274:33:0;;;;;-1:-1:-1;20293:13:0;;20274:33;:9;:33;20293:13;20274:9;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;20323:47:0;;;-1:-1:-1;;;;;20323:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19977:401;;;;;;:::o;3542:172::-;3600:7;3632:5;;;3656:6;;;;3648:37;;;;;-1:-1:-1;;;;;3648:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:1;3542:172;-1:-1:-1;;;3542:172:0:o;7491:17398::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://807c27551c0fdba70b2ac314afc14a5999e8347a31faa7664f5f4e1ed0b00461

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.