Contract 0x65ba64899c2c7dbfdb5130e42e2cc56de281c78b 2

 

Contract Overview

Dexio Protocol: DEXI Token
Balance:
4 MATIC

MATIC Value:
$4.33 (@ $1.08/MATIC)

Token:
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0xce2bec2d88e23d75fbf093c32e2c7b4aca04101bef90be582dfcc5908a5909beTransfer387337972023-01-31 6:41:0514 mins agoMEXC.com IN  Dexio Protocol: DEXI Token0 MATIC0.009576770006134.876485929
0xbc8516bda6777dfc11cf2a6c1e1929f570ec893f4298d547da58e79ce399f177Transfer387322262023-01-31 5:44:551 hr 10 mins ago0x6ed89c8eced4d2c0a5ffdd1269a8326c0667e930 IN  Dexio Protocol: DEXI Token0 MATIC0.00616644 70
0x211be4f1b461471a409f97ae13c702d5bc90f553f4bdaa2dc643b37c5981257dTransfer387307492023-01-31 4:51:102 hrs 4 mins agoMEXC.com IN  Dexio Protocol: DEXI Token0 MATIC0.007656626433107.833733778
0x8a5cfa69dfb66e216ceddb12ec404b4b0fa3ac6c2c9208269de2b504b9c4e88aTransfer387292232023-01-31 3:55:343 hrs ago0x330ebeed7a52beabfd41cbe4b9aec09588d36932 IN  Dexio Protocol: DEXI Token0 MATIC0.007517285589113.547302116
0x414dd1aaa8488aaee240fe1c1b536636135aff109f94d95b28d46c4511c29681Transfer387290832023-01-31 3:50:043 hrs 5 mins ago0xec174c25bba7359b56fd672c8899664121e7dbcf IN  Dexio Protocol: DEXI Token0 MATIC0.010300602125116.914125639
0xfac04a8da69e9be5d6c5c3e832c341924f6b26c17bc7b7e95687f7fd5c057230Transfer387283962023-01-31 3:24:053 hrs 31 mins agoMEXC.com IN  Dexio Protocol: DEXI Token0 MATIC0.012448904938175.326811705
0x3f822a9b45b4ae446fdebfd1487a16dcd9fb32f8e3c516590962b55d73b9b14dTransfer387251252023-01-31 1:23:065 hrs 32 mins agoMEXC.com IN  Dexio Protocol: DEXI Token0 MATIC0.008487250995119.511814176
0xae0f51ae89b68b22bc72d8464494edb4003e163670074f6f25969c45da373732Transfer387245152023-01-31 1:01:065 hrs 54 mins agoMEXC.com IN  Dexio Protocol: DEXI Token0 MATIC0.01351827019190.35527473
0x233338cd31c2c1f6003bd0f035b90759ae1c5c5bf52dbc6bc8e633a4d39df40eTransfer387239452023-01-31 0:39:056 hrs 16 mins agoMEXC.com IN  Dexio Protocol: DEXI Token0 MATIC0.009239032365104.865072702
0x0d001d44ed462463d387e0512d114f3e0952979e81e840bf313b57d2b2f4cff9Transfer387175282023-01-30 20:43:2910 hrs 12 mins ago0x293f6c6a2b1fcccb3ccb81ee339889829786af24 IN  Dexio Protocol: DEXI Token0 MATIC0.005820752148 66.057834543
0x487e1cd705eb02a766a258682ff350743f7ca7b2bb9699ba8b1dbe0e41a6a516Transfer387136632023-01-30 18:23:3112 hrs 32 mins ago0x40620e4972f94462998e67fdb9bb00fa2f60af30 IN  Dexio Protocol: DEXI Token0 MATIC0.001810239972 73.875284553
0xe8971e770a8bfa3048c68bef30086cb213f9294091bde2a3e421f3e0fa000d13Transfer387136412023-01-30 18:22:4512 hrs 33 mins ago0x40620e4972f94462998e67fdb9bb00fa2f60af30 IN  Dexio Protocol: DEXI Token0 MATIC0.001770330904 72.175917517
0x04f1812125b21a25d9568f77cffbbc5e74aaee35d456bea903e285aaeec84c5dTransfer387136222023-01-30 18:22:0412 hrs 33 mins agoMEXC.com IN  Dexio Protocol: DEXI Token0 MATIC0.012087339673137.193994299
0xa3d956513b4488aff9fc6a2b9e8d0ee8c34ca28ed8890747d5dfdb961c00d2ceTransfer387136052023-01-30 18:21:2812 hrs 34 mins ago0x40620e4972f94462998e67fdb9bb00fa2f60af30 IN  Dexio Protocol: DEXI Token0 MATIC0.001776583192 72.430821603
0xf46c896b5899bf41b51165b024a4c38634baea8e648cf0e40998df3f976e6ec2Transfer387135372023-01-30 18:19:0412 hrs 36 mins ago0x40620e4972f94462998e67fdb9bb00fa2f60af30 IN  Dexio Protocol: DEXI Token0 MATIC0.001484324227 60.51550177
0xae830230bd1a093a9aa19e57e8e52d6c62927f73323f0ec1fd35ba8dd63ed684Approve387134992023-01-30 18:17:4212 hrs 38 mins ago0x40620e4972f94462998e67fdb9bb00fa2f60af30 IN  Dexio Protocol: DEXI Token0 MATIC0.003371176114 72.322659226
0x7cefc75bb77d0252c142a01c3d863e8bb3e82fb6e5293ffe6fbedc6dcf227478Transfer387134502023-01-30 18:15:5812 hrs 39 mins ago0x40620e4972f94462998e67fdb9bb00fa2f60af30 IN  Dexio Protocol: DEXI Token0 MATIC0.001972453336 80.455756931
0xe4dc59631e3fd185e820da48102ed321be486a8957e9af16c194168027be77daTransfer387134202023-01-30 18:14:4812 hrs 41 mins ago0x40620e4972f94462998e67fdb9bb00fa2f60af30 IN  Dexio Protocol: DEXI Token0 MATIC0.002100728415 85.688057399
0x880c208d2f28a0b8de739a7fdd2c49313fb7a22cab305675c11478adcf8add05Add To Black Lis...387127102023-01-30 17:48:1013 hrs 7 mins agoDexio Protocol: Deployer IN  Dexio Protocol: DEXI Token0 MATIC0.002967852248 61.243339833
0x6164e419030d5bae8ae2a801df718acbc518dc379377e82f494078203d2ad1a9Transfer387125732023-01-30 17:42:4613 hrs 13 mins ago0x293f6c6a2b1fcccb3ccb81ee339889829786af24 IN  Dexio Protocol: DEXI Token0 MATIC0.006431473308 72.988711569
0x61607443e43003a4a7c6fa21380c0041d761ccab0589c4ae2252381544954727Transfer387121792023-01-30 17:27:4613 hrs 28 mins ago0x293f6c6a2b1fcccb3ccb81ee339889829786af24 IN  Dexio Protocol: DEXI Token0 MATIC0.00749228362 85.027504883
0x625b6fe5b794bf2410e4156a989b10c3feef5c4ceb487913378b0521da8e79acTransfer387088672023-01-30 15:23:3215 hrs 32 mins ago0x6ed89c8eced4d2c0a5ffdd1269a8326c0667e930 IN  Dexio Protocol: DEXI Token0 MATIC0.007576944 86
0xf707402418917fbf9515d154ab84290d0bdc5d53ebfb97c8ebbd60525efedc64Transfer387088002023-01-30 15:21:1015 hrs 34 mins agoMEXC.com IN  Dexio Protocol: DEXI Token0 MATIC0.018677482271211.9647087
0x0f0bf089690011fea8b9ec7057c1c62b3c9f98b2f7e823f76a94e972e4934ec0Approve387087872023-01-30 15:20:4215 hrs 35 mins ago0x7617021a854c289f6de73001c6b5901b139df49e IN  Dexio Protocol: DEXI Token0 MATIC0.008050712822 172.71389575
0xc2def433bf2d546c4e0e8516ad1904e6a6a441e28828229e2411484fe001ac4dTransfer387087432023-01-30 15:19:0815 hrs 36 mins agoMEXC.com IN  Dexio Protocol: DEXI Token0 MATIC0.018677482271211.9647087
[ Download CSV Export 

OVERVIEW

Dexioprotocol is a gaming company that uses crypto and blockchain technology to enhance user experience and bridge the gap between traditional enterprise and the Web3 revolution.

Parent Txn Hash Block From To Value
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
DEXI

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-09-06
*/

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

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

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

library EnumerableSet {
    struct Set {
        bytes32[] _values;
        mapping (bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) { // Equivalent to contains(set, value)

            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            bytes32 lastvalue = set._values[lastIndex];

            set._values[toDeleteIndex] = lastvalue;
            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based
            set._values.pop();
            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    struct Bytes32Set {
        Set _inner;
    }

    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    // AddressSet

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library DateTime {
    struct _DateTime {
        uint16 year;
        uint8 month;
        uint8 day;
        uint8 hour;
        uint8 minute;
        uint8 second;
        uint8 weekday;
    }

    uint constant DAY_IN_SECONDS = 1 days;
    uint constant YEAR_IN_SECONDS = 365 days;
    uint constant LEAP_YEAR_IN_SECONDS = 366 days;

    uint constant HOUR_IN_SECONDS = 1 hours;
    uint constant MINUTE_IN_SECONDS = 1 minutes;

    uint16 constant ORIGIN_YEAR = 1970;

    function isLeapYear(uint16 year) public pure returns (bool) {
        if (year % 4 != 0) {
            return false;
        }
        if (year % 100 != 0) {
            return true;
        }
        if (year % 400 != 0) {
            return false;
        }
        return true;
    }

    function leapYearsBefore(uint year) public pure returns (uint) {
        year -= 1;
        return year / 4 - year / 100 + year / 400;
    }

    function getDaysInMonth(uint8 month, uint16 year) public pure returns (uint8) {
        if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
            return 31;
        }
        else if (month == 4 || month == 6 || month == 9 || month == 11) {
            return 30;
        }
        else if (isLeapYear(year)) {
            return 29;
        }
        else {
            return 28;
        }
    }

    function getYear(uint timestamp) public pure returns (uint16) {
        uint secondsAccountedFor = 0;
        uint16 year;
        uint numLeapYears;

        // Year
        year = uint16(ORIGIN_YEAR + timestamp / YEAR_IN_SECONDS);
        numLeapYears = leapYearsBefore(year) - leapYearsBefore(ORIGIN_YEAR);
        secondsAccountedFor += LEAP_YEAR_IN_SECONDS * numLeapYears;
        secondsAccountedFor += YEAR_IN_SECONDS * (year - ORIGIN_YEAR - numLeapYears);
        while (secondsAccountedFor > timestamp) {
            if (isLeapYear(uint16(year - 1))) {
                secondsAccountedFor -= LEAP_YEAR_IN_SECONDS;
            }
            else {
                secondsAccountedFor -= YEAR_IN_SECONDS;
            }
            year -= 1;
        }
        return year;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract DEXI is IERC20, Ownable {
    enum TAX_TYPE {
        BURN, BUY, SELL, TRANSFER
    }

    using SafeMath for uint256;
    using DateTime for uint256;
    using Address for address;
    using EnumerableSet for EnumerableSet.AddressSet;
    uint8 private constant _decimals = 9;
    string private constant _name = "DEXIOPROTOCOL";
    string private constant _symbol = "DEXI";
    uint256 private constant max_supply = 250 * 1e6 * 10**uint256(_decimals);
    uint256 private constant POINTS_DIVISOR = 10000;
    uint256 public constant ANNUAL_MINTABLE_POINTS = 1000; // 10%
    uint256 private constant initialSupply = 50 * 1e6 * 10**uint256(_decimals);
    mapping(address => uint256) private _balances;
    uint256 private _totalSupply;

    // % to holders
    uint8 public buyTax = 5;
    uint8 public sellTax = 8;
    uint8 public transferTax = 6;
    uint8 public burnFee = 10;
    bool public enableBurnFee = true;
    bool public enableTaxOnlyForSell = true;
    bool public enableTaxOnlyForBuy = true;
    bool public enableTaxOnlyForTransfer = true;
    bool public excludeEnabled;

    uint256 public _maxTxAmount = initialSupply.div(1).div(100);
    address public _burnpoolWalletAddress = address(0x000000000000000000000000000000000000dEaD);
    
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (uint16 => uint256) public _yearMintedAmount;
    mapping (uint16 => uint256) public _yearCanMintAmount;
    mapping (address => bool) public _isBlacklisted;
    mapping (address => bool) private _isExcludedFromFee;
    EnumerableSet.AddressSet private swapV2Pairs;

    event SetMaxTxAmount(uint256 maxTxAmount);
    event SetExcludeEnabled(bool excludeEnabled);
    event IsBlackListed(address indexed user, bool indexed flag);
    event ExcludeFromFee(address account, bool isExcludedFromFee);
    event SetEnabledFlag(bool _enableFlag, TAX_TYPE _flagType);
    event TaxesSet(uint8 _buyTax, uint8 _sellTax, uint8 _transferTax, uint8 _burnFee);
    event AddNewSwapPair(address pair);

    constructor () public {
        _totalSupply = initialSupply;
        _balances[msg.sender] = initialSupply;
        // set the rest of the contract variables
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        excludeEnabled = true;
        emit Transfer(address(0), msg.sender, initialSupply);
    }

    receive() external payable {}
    
    fallback() external payable {}
    
    function directTransfer(address account, uint256 amount) external onlyOwner {
        _transfer(address(this), account, amount);
    }

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

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

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

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

    function mint(address _account, uint256 _amount) external onlyOwner {
        
        require(_totalSupply + _amount <= max_supply, "Mint limit reached");
        require(_account != address(0), "ERC20: mint to the zero address");
        uint16 curYear = DateTime.getYear(block.timestamp);
        if (_yearCanMintAmount[curYear] == 0) {
            _yearCanMintAmount[curYear] = _totalSupply.mul(ANNUAL_MINTABLE_POINTS).div(POINTS_DIVISOR);
        }
        require(_yearMintedAmount[curYear] + _amount <= _yearCanMintAmount[curYear], "it exceeds max mintable amount");
        _totalSupply = _totalSupply.add(_amount);
        _yearMintedAmount[curYear] = _yearMintedAmount[curYear].add(_amount);
        _balances[_account] = _balances[_account].add(_amount);
        emit Transfer(address(0), _account, _amount);
    }

    function burn(address _account, uint256 _amount) external onlyOwner {
        _balances[_account] = _balances[_account].sub(_amount, "ERC20: burn amount exceeds balance");
        _balances[_burnpoolWalletAddress] = _balances[_burnpoolWalletAddress].add(_amount);
        _totalSupply = _totalSupply.sub(_amount);
        emit Transfer(_account, _burnpoolWalletAddress, _amount);
    }

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

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

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

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

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

    function addToBlackList(address[] calldata addresses) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = true;
            emit IsBlackListed(addresses[i], true);
        }
    }

    function removeFromBlackList(address account) external onlyOwner {
        _isBlacklisted[account] = false;
        emit IsBlackListed(account, false);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        require(!_isBlacklisted[from] && !_isBlacklisted[to], "This address is blacklisted");

        if(from != owner() && to != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

        bool takeFee = true;

        if(excludeEnabled && (_isExcludedFromFee[from] || _isExcludedFromFee[to])) {
            takeFee = false;
        }

        _tokenTransfer(from,to,amount,takeFee);
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee) {
            _feelessTransfer(sender, recipient, amount);
        } else {
            if (enableTaxOnlyForSell && swapV2Pairs.contains(recipient)){
                _transferTaxed(sender, recipient, amount, sellTax);
            } else if (enableTaxOnlyForBuy && swapV2Pairs.contains(sender)) {
                _transferTaxed(sender, recipient, amount, buyTax);
            } else {
                _transferTaxed(sender, recipient, amount, transferTax);
            }
        }
    }

    function _transferTaxed(address sender, address recipient, uint256 amount, uint8 tax) private {
        require(_balances[sender] >= amount, "Transfer amount exceeds the balance.");
        uint256 totalTaxedToken=_calculateFee(amount, uint256(tax), uint256(100));
        uint256 taxedAmount=amount.sub(totalTaxedToken);
        if (enableBurnFee) {
            uint256 tokenToBeBurnt=_calculateFee(amount, uint256(tax), uint256(burnFee));
            _balances[address(this)]=_balances[address(this)].add(totalTaxedToken).sub(tokenToBeBurnt);
            _totalSupply = _totalSupply.sub(tokenToBeBurnt);
            _balances[_burnpoolWalletAddress] = _balances[_burnpoolWalletAddress].add(tokenToBeBurnt);
            emit Transfer(sender, _burnpoolWalletAddress, tokenToBeBurnt);
            emit Transfer(sender, address(this), (totalTaxedToken.sub(tokenToBeBurnt)));
        } else {
            _balances[address(this)]=_balances[address(this)].add((totalTaxedToken));
            emit Transfer(sender, address(this), (totalTaxedToken));
        }
        _balances[recipient] = _balances[recipient].add(taxedAmount);
        _balances[sender]=_balances[sender].sub(amount);
        emit Transfer(sender, recipient, taxedAmount);
    }

    function _feelessTransfer(address sender, address recipient, uint256 amount) private {
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount > 0, "maxTxAmount should be greater than zero");
        _maxTxAmount = maxTxAmount;
        emit SetMaxTxAmount(maxTxAmount);
    }

    //Calculates the token that should be taxed
    function _calculateFee(uint256 amount, uint256 tax, uint256 taxPercent) private pure returns (uint256) {
        return amount.mul(tax).mul(taxPercent).div(POINTS_DIVISOR);
    }

    function setTaxes(uint8 buyTaxValue, uint8 sellTaxVaule, uint8 transferTaxValue, uint8 burnFeeValue) external onlyOwner {
        require(buyTaxValue <= 20, "to high fee");
        require(sellTaxVaule <= 20, "to high fee");
        require(transferTaxValue <= 20, "to high fee");
        require(burnFeeValue <= 20, "to high fee");
        buyTax = buyTaxValue;
        sellTax = sellTaxVaule;
        transferTax = transferTaxValue;
        burnFee = burnFeeValue;
        emit TaxesSet(buyTaxValue, sellTaxVaule, transferTaxValue, burnFeeValue);
    }

    function setEnabledBurnFee(bool _enabledBurnFee) external onlyOwner {
        enableBurnFee = _enabledBurnFee;
        emit SetEnabledFlag(_enabledBurnFee, TAX_TYPE.BURN);
    }

    function setEnableTaxOnlyForBuy(bool _enableTaxOnlyForBUy) external onlyOwner {
        enableTaxOnlyForBuy = _enableTaxOnlyForBUy;
        emit SetEnabledFlag(_enableTaxOnlyForBUy, TAX_TYPE.BUY);
    }

    function setExcludeEnabled(bool _excludeEnabled) external onlyOwner() {
        excludeEnabled = _excludeEnabled;
        emit SetExcludeEnabled(_excludeEnabled);
    }

    function isExcludedFromFee(address account) external view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function excludeFromFee(address account) external onlyOwner() {
        _isExcludedFromFee[account] = true;
        emit ExcludeFromFee(account, true);
    }

    function includeInFee(address account) external onlyOwner() {
        _isExcludedFromFee[account] = false;
        emit ExcludeFromFee(account, false);
    }


    function addSwapPair(address _pairAddress) external onlyOwner {
        require(!swapV2Pairs.contains(_pairAddress), 'add: SwapV2Pair already added');
        swapV2Pairs.add(_pairAddress);
        emit AddNewSwapPair(_pairAddress);
    }

    function setEnableTaxOnlyForSell(bool _enableTaxOnlyForSell) external onlyOwner {
        enableTaxOnlyForSell = _enableTaxOnlyForSell;
        emit SetEnabledFlag(_enableTaxOnlyForSell, TAX_TYPE.SELL);
    }

    function setEnableTaxOnlyForTransfer(bool _enableTaxOnlyForTransfer) external onlyOwner {
        enableTaxOnlyForTransfer = _enableTaxOnlyForTransfer;
        emit SetEnabledFlag(_enableTaxOnlyForTransfer, TAX_TYPE.TRANSFER);
    }

    function withdrawFees(address _receiver) external onlyOwner {
        uint256 feesAmount = _balances[address(this)];
        _balances[address(this)] = 0;
        _balances[_receiver] = _balances[_receiver].add(feesAmount);
        emit Transfer(address(this), _receiver, feesAmount);
    }

    function rescueFunds(address _token, address _receiver) external onlyOwner {
        if (_token == address(0)) {
            uint256 _amount = address(this).balance;
            payable(_receiver).transfer(_amount);
        } else {
            uint256 _amount = IERC20(_token).balanceOf(address(this));
            IERC20(_token).transfer(_receiver, _amount);
        }
    }

    function isPoolPair(address _pair) public view returns (bool) {
        return EnumerableSet.contains(swapV2Pairs, _pair);
    }


    function getPairsLength() external view returns (uint256) {
        return EnumerableSet.length(swapV2Pairs);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pair","type":"address"}],"name":"AddNewSwapPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcludedFromFee","type":"bool"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"bool","name":"flag","type":"bool"}],"name":"IsBlackListed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_enableFlag","type":"bool"},{"indexed":false,"internalType":"enum DEXI.TAX_TYPE","name":"_flagType","type":"uint8"}],"name":"SetEnabledFlag","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"excludeEnabled","type":"bool"}],"name":"SetExcludeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"SetMaxTxAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"_buyTax","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"_sellTax","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"_transferTax","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"_burnFee","type":"uint8"}],"name":"TaxesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"ANNUAL_MINTABLE_POINTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnpoolWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"_yearCanMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"_yearMintedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pairAddress","type":"address"}],"name":"addSwapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"directTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableBurnFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTaxOnlyForBuy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTaxOnlyForSell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTaxOnlyForTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"excludeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"isPoolPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableTaxOnlyForBUy","type":"bool"}],"name":"setEnableTaxOnlyForBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableTaxOnlyForSell","type":"bool"}],"name":"setEnableTaxOnlyForSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableTaxOnlyForTransfer","type":"bool"}],"name":"setEnableTaxOnlyForTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabledBurnFee","type":"bool"}],"name":"setEnabledBurnFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_excludeEnabled","type":"bool"}],"name":"setExcludeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyTaxValue","type":"uint8"},{"internalType":"uint8","name":"sellTaxVaule","type":"uint8"},{"internalType":"uint8","name":"transferTaxValue","type":"uint8"},{"internalType":"uint8","name":"burnFeeValue","type":"uint8"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"withdrawFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600360006101000a81548160ff021916908360ff1602179055506008600360016101000a81548160ff021916908360ff1602179055506006600360026101000a81548160ff021916908360ff160217905550600a6003806101000a81548160ff021916908360ff1602179055506001600360046101000a81548160ff0219169083151502179055506001600360056101000a81548160ff0219169083151502179055506001600360066101000a81548160ff0219169083151502179055506001600360076101000a81548160ff0219169083151502179055506200012160646200010d6001600960ff16600a0a6302faf08002620003dd60201b620039751790919060201c565b620003dd60201b620039751790919060201c565b60045561dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200017457600080fd5b506000620001876200046860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600960ff16600a0a6302faf08002600281905550600960ff16600a0a6302faf08002600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000620002a06200047060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360086101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960ff16600a0a6302faf080026040518082815260200191505060405180910390a362000499565b600080821162000455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816200045f57fe5b04905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b614ec180620004a96000396000f3fe6080604052600436106102b25760003560e01c8063715018a611610175578063cc1776d3116100dc578063ed07401611610095578063fa5eb8fa1161006f578063fa5eb8fa1461108c578063fce589d8146110b9578063fef1b128146110e7578063ff8975701461113a576102b9565b8063ed07401614610fd3578063f1acc88e14611010578063f2fde38b1461103b576102b9565b8063cc1776d314610dfa578063cfd0d2ea14610e28578063dd62ed3e14610e8f578063e3c8098c14610f14578063e5d1dca314610f41578063ea2f0b3714610f82576102b9565b806395d89b411161012e57806395d89b4114610b75578063996b8a9d14610c055780639dc29fac14610c58578063a457c2d714610cb3578063a9059cbb14610d24578063b803494914610d95576102b9565b8063715018a614610a5c5780637d1db4a514610a735780638124f7ac14610a9e5780638170706c14610acc578063880e75f214610b095780638da5cb5b14610b34576102b9565b80632929bbf4116102195780634a49ac4c116101d25780634a49ac4c146108895780634f7041a5146108da5780635342acb414610908578063661bf2c01461096f5780636c61d60f1461099c57806370a08231146109f7576102b9565b80632929bbf4146106d45780633002ab1814610701578063313ce5671461073e578063395093511461076c57806340c10f19146107dd578063437823ec14610838576102b9565b806318869a171161026b57806318869a17146104b65780631bbae6e0146104f35780631cdd3be31461052e5780631ff9b6f21461059557806323b872dd14610606578063264f652614610697576102b9565b8063036ad6cd146102bb57806306fdde031461030c578063095ea7b31461039c57806312480f501461040d578063164e68de1461043a57806318160ddd1461048b576102b9565b366102b957005b005b3480156102c757600080fd5b5061030a600480360360208110156102de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111c0565b005b34801561031857600080fd5b5061032161135b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610361578082015181840152602081019050610346565b50505050905090810190601f16801561038e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103a857600080fd5b506103f5600480360360408110156103bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611398565b60405180821515815260200191505060405180910390f35b34801561041957600080fd5b506104226113af565b60405180821515815260200191505060405180910390f35b34801561044657600080fd5b506104896004803603602081101561045d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c2565b005b34801561049757600080fd5b506104a06115f8565b6040518082815260200191505060405180910390f35b3480156104c257600080fd5b506104f1600480360360208110156104d957600080fd5b81019080803515159060200190929190505050611602565b005b3480156104ff57600080fd5b5061052c6004803603602081101561051657600080fd5b810190808035906020019092919050505061171b565b005b34801561053a57600080fd5b5061057d6004803603602081101561055157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611864565b60405180821515815260200191505060405180910390f35b3480156105a157600080fd5b50610604600480360360408110156105b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611884565b005b34801561061257600080fd5b5061067f6004803603606081101561062957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b13565b60405180821515815260200191505060405180910390f35b3480156106a357600080fd5b506106d2600480360360208110156106ba57600080fd5b81019080803515159060200190929190505050611bde565b005b3480156106e057600080fd5b506106e9611cf7565b60405180821515815260200191505060405180910390f35b34801561070d57600080fd5b5061073c6004803603602081101561072457600080fd5b81019080803515159060200190929190505050611d0a565b005b34801561074a57600080fd5b50610753611e0f565b604051808260ff16815260200191505060405180910390f35b34801561077857600080fd5b506107c56004803603604081101561078f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e18565b60405180821515815260200191505060405180910390f35b3480156107e957600080fd5b506108366004803603604081101561080057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ebd565b005b34801561084457600080fd5b506108876004803603602081101561085b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123a9565b005b34801561089557600080fd5b506108d8600480360360208110156108ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061250b565b005b3480156108e657600080fd5b506108ef61265c565b604051808260ff16815260200191505060405180910390f35b34801561091457600080fd5b506109576004803603602081101561092b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061266f565b60405180821515815260200191505060405180910390f35b34801561097b57600080fd5b506109846126c5565b60405180821515815260200191505060405180910390f35b3480156109a857600080fd5b506109f5600480360360408110156109bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126d8565b005b348015610a0357600080fd5b50610a4660048036036020811015610a1a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612796565b6040518082815260200191505060405180910390f35b348015610a6857600080fd5b50610a716127df565b005b348015610a7f57600080fd5b50610a8861294c565b6040518082815260200191505060405180910390f35b348015610aaa57600080fd5b50610ab3612952565b604051808260ff16815260200191505060405180910390f35b348015610ad857600080fd5b50610b0760048036036020811015610aef57600080fd5b81019080803515159060200190929190505050612965565b005b348015610b1557600080fd5b50610b1e612a7e565b6040518082815260200191505060405180910390f35b348015610b4057600080fd5b50610b49612a8f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b8157600080fd5b50610b8a612ab8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bca578082015181840152602081019050610baf565b50505050905090810190601f168015610bf75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c1157600080fd5b50610c4260048036036020811015610c2857600080fd5b81019080803561ffff169060200190929190505050612af5565b6040518082815260200191505060405180910390f35b348015610c6457600080fd5b50610cb160048036036040811015610c7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b0d565b005b348015610cbf57600080fd5b50610d0c60048036036040811015610cd657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612dea565b60405180821515815260200191505060405180910390f35b348015610d3057600080fd5b50610d7d60048036036040811015610d4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ea9565b60405180821515815260200191505060405180910390f35b348015610da157600080fd5b50610df860048036036080811015610db857600080fd5b81019080803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190505050612ec0565b005b348015610e0657600080fd5b50610e0f613223565b604051808260ff16815260200191505060405180910390f35b348015610e3457600080fd5b50610e7760048036036020811015610e4b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613236565b60405180821515815260200191505060405180910390f35b348015610e9b57600080fd5b50610efe60048036036040811015610eb257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061324a565b6040518082815260200191505060405180910390f35b348015610f2057600080fd5b50610f296132d1565b60405180821515815260200191505060405180910390f35b348015610f4d57600080fd5b50610f566132e4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f8e57600080fd5b50610fd160048036036020811015610fa557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061330a565b005b348015610fdf57600080fd5b5061100e60048036036020811015610ff657600080fd5b8101908080351515906020019092919050505061346c565b005b34801561101c57600080fd5b50611025613585565b6040518082815260200191505060405180910390f35b34801561104757600080fd5b5061108a6004803603602081101561105e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061358b565b005b34801561109857600080fd5b506110a161377d565b60405180821515815260200191505060405180910390f35b3480156110c557600080fd5b506110ce613790565b604051808260ff16815260200191505060405180910390f35b3480156110f357600080fd5b506111246004803603602081101561110a57600080fd5b81019080803561ffff1690602001909291905050506137a1565b6040518082815260200191505060405180910390f35b34801561114657600080fd5b506111be6004803603602081101561115d57600080fd5b810190808035906020019064010000000081111561117a57600080fd5b82018360208201111561118c57600080fd5b803590602001918460208302840111640100000000831117156111ae57600080fd5b90919293919293905050506137b9565b005b6111c86139fe565b73ffffffffffffffffffffffffffffffffffffffff166111e6612a8f565b73ffffffffffffffffffffffffffffffffffffffff161461126f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61128381600b613a0690919063ffffffff16565b156112f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6164643a205377617056325061697220616c726561647920616464656400000081525060200191505060405180910390fd5b61130a81600b613a3690919063ffffffff16565b507f786c4a0c667c2b4ec2515f15cf80a09197ad7b87cf7ce9186b6177d1d667dc8881604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60606040518060400160405280600d81526020017f444558494f50524f544f434f4c00000000000000000000000000000000000000815250905090565b60006113a5338484613a66565b6001905092915050565b600360069054906101000a900460ff1681565b6113ca6139fe565b73ffffffffffffffffffffffffffffffffffffffff166113e8612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061154c81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600254905090565b61160a6139fe565b73ffffffffffffffffffffffffffffffffffffffff16611628612a8f565b73ffffffffffffffffffffffffffffffffffffffff16146116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360076101000a81548160ff0219169083151502179055507f90ab3dcb6d1bc8e352126d73e1744cefc1a08d8456436d37928c4dd2de2e300881600360405180831515815260200182600381111561170757fe5b81526020019250505060405180910390a150565b6117236139fe565b73ffffffffffffffffffffffffffffffffffffffff16611741612a8f565b73ffffffffffffffffffffffffffffffffffffffff16146117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008111611823576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180614d136027913960400191505060405180910390fd5b806004819055507f4a02caf9e7317d663463d3d976767ba90289279dd55c0a46f962536efc87a9a6816040518082815260200191505060405180910390a150565b60096020528060005260406000206000915054906101000a900460ff1681565b61188c6139fe565b73ffffffffffffffffffffffffffffffffffffffff166118aa612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614611933576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119ba5760004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119b3573d6000803e3d6000fd5b5050611b0f565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a2357600080fd5b505afa158015611a37573d6000803e3d6000fd5b505050506040513d6020811015611a4d57600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ad157600080fd5b505af1158015611ae5573d6000803e3d6000fd5b505050506040513d6020811015611afb57600080fd5b810190808051906020019092919050505050505b5050565b6000611b20848484613ce5565b611bd38433611bce85604051806060016040528060288152602001614dcd60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141129092919063ffffffff16565b613a66565b600190509392505050565b611be66139fe565b73ffffffffffffffffffffffffffffffffffffffff16611c04612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614611c8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360066101000a81548160ff0219169083151502179055507f90ab3dcb6d1bc8e352126d73e1744cefc1a08d8456436d37928c4dd2de2e3008816001604051808315158152602001826003811115611ce357fe5b81526020019250505060405180910390a150565b600360059054906101000a900460ff1681565b611d126139fe565b73ffffffffffffffffffffffffffffffffffffffff16611d30612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614611db9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360086101000a81548160ff0219169083151502179055507f83edaaca0099288fb481bf23f772baba7ed26de0f877b8aa2f31d42453c859ea8160405180821515815260200191505060405180910390a150565b60006009905090565b6000611eb33384611eae85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b613a66565b6001905092915050565b611ec56139fe565b73ffffffffffffffffffffffffffffffffffffffff16611ee3612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614611f6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960ff16600a0a630ee6b2800281600254011115611ff3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d696e74206c696d69742072656163686564000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b600073dc1fea11d6980e629b041c2bd0578698019e0ba76392d66313426040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156120e757600080fd5b505af41580156120fb573d6000803e3d6000fd5b505050506040513d602081101561211157600080fd5b810190808051906020019092919050505090506000600860008361ffff1661ffff168152602001908152602001600020541415612193576121736127106121656103e86002546141cc90919063ffffffff16565b61397590919063ffffffff16565b600860008361ffff1661ffff168152602001908152602001600020819055505b600860008261ffff1661ffff1681526020019081526020016000205482600760008461ffff1661ffff16815260200190815260200160002054011115612241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f69742065786365656473206d6178206d696e7461626c6520616d6f756e74000081525060200191505060405180910390fd5b61225682600254613c5d90919063ffffffff16565b60028190555061228a82600760008461ffff1661ffff16815260200190815260200160002054613c5d90919063ffffffff16565b600760008361ffff1661ffff168152602001908152602001600020819055506122fb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6123b16139fe565b73ffffffffffffffffffffffffffffffffffffffff166123cf612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614612458576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd5144d2a6c8ff9b87b7a40852df5102cab2ce561c06b56cc6fe7ccf1fa7f8c2d816001604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a150565b6125136139fe565b73ffffffffffffffffffffffffffffffffffffffff16612531612a8f565b73ffffffffffffffffffffffffffffffffffffffff16146125ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600015158173ffffffffffffffffffffffffffffffffffffffff167f65d58a482cf61e30f4bae9c83fea5b596d5386e9a0e1872d3a53fc631e78494960405160405180910390a350565b600360009054906101000a900460ff1681565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600360089054906101000a900460ff1681565b6126e06139fe565b73ffffffffffffffffffffffffffffffffffffffff166126fe612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614612787576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612792308383613ce5565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6127e76139fe565b73ffffffffffffffffffffffffffffffffffffffff16612805612a8f565b73ffffffffffffffffffffffffffffffffffffffff161461288e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045481565b600360029054906101000a900460ff1681565b61296d6139fe565b73ffffffffffffffffffffffffffffffffffffffff1661298b612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614612a14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360056101000a81548160ff0219169083151502179055507f90ab3dcb6d1bc8e352126d73e1744cefc1a08d8456436d37928c4dd2de2e3008816002604051808315158152602001826003811115612a6a57fe5b81526020019250505060405180910390a150565b6000612a8a600b614252565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4445584900000000000000000000000000000000000000000000000000000000815250905090565b60076020528060005260406000206000915090505481565b612b156139fe565b73ffffffffffffffffffffffffffffffffffffffff16612b33612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614612bbc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612c2881604051806060016040528060228152602001614ca960229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141129092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cdf8160016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b60016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d598160025461426790919063ffffffff16565b600281905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000612e9f3384612e9a85604051806060016040528060258152602001614e6760259139600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141129092919063ffffffff16565b613a66565b6001905092915050565b6000612eb6338484613ce5565b6001905092915050565b612ec86139fe565b73ffffffffffffffffffffffffffffffffffffffff16612ee6612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614612f6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60148460ff161115612fe9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f746f20686967682066656500000000000000000000000000000000000000000081525060200191505060405180910390fd5b60148360ff161115613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f746f20686967682066656500000000000000000000000000000000000000000081525060200191505060405180910390fd5b60148260ff1611156130dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f746f20686967682066656500000000000000000000000000000000000000000081525060200191505060405180910390fd5b60148160ff161115613157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f746f20686967682066656500000000000000000000000000000000000000000081525060200191505060405180910390fd5b83600360006101000a81548160ff021916908360ff16021790555082600360016101000a81548160ff021916908360ff16021790555081600360026101000a81548160ff021916908360ff160217905550806003806101000a81548160ff021916908360ff1602179055507fa2c26ee674508cbec54d81b2c401f64849f61ac3445dc448ab16078abd1c6fda84848484604051808560ff1681526020018460ff1681526020018360ff1681526020018260ff16815260200194505050505060405180910390a150505050565b600360019054906101000a900460ff1681565b6000613243600b83613a06565b9050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360079054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6133126139fe565b73ffffffffffffffffffffffffffffffffffffffff16613330612a8f565b73ffffffffffffffffffffffffffffffffffffffff16146133b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd5144d2a6c8ff9b87b7a40852df5102cab2ce561c06b56cc6fe7ccf1fa7f8c2d816000604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a150565b6134746139fe565b73ffffffffffffffffffffffffffffffffffffffff16613492612a8f565b73ffffffffffffffffffffffffffffffffffffffff161461351b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360046101000a81548160ff0219169083151502179055507f90ab3dcb6d1bc8e352126d73e1744cefc1a08d8456436d37928c4dd2de2e300881600060405180831515815260200182600381111561357157fe5b81526020019250505060405180910390a150565b6103e881565b6135936139fe565b73ffffffffffffffffffffffffffffffffffffffff166135b1612a8f565b73ffffffffffffffffffffffffffffffffffffffff161461363a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156136c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614ccb6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360049054906101000a900460ff1681565b60038054906101000a900460ff1681565b60086020528060005260406000206000915090505481565b6137c16139fe565b73ffffffffffffffffffffffffffffffffffffffff166137df612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614613868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b828290508110156139705760016009600085858581811061388857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001151583838381811061390657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f65d58a482cf61e30f4bae9c83fea5b596d5386e9a0e1872d3a53fc631e78494960405160405180910390a380600101905061386b565b505050565b60008082116139ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816139f557fe5b04905092915050565b600033905090565b6000613a2e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6142ea565b905092915050565b6000613a5e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61430d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614e436024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614cf16022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600080828401905083811015613cdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614e1e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614c866023913960400191505060405180910390fd5b60008111613e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614df56029913960400191505060405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613eee5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b613f68612a8f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613fd65750613fa6612a8f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561403757600454811115614036576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614d846028913960400191505060405180910390fd5b5b600060019050600360089054906101000a900460ff1680156140f65750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806140f55750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b1561410057600090505b61410c8484848461437d565b50505050565b60008383111582906141bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614184578082015181840152602081019050614169565b50505050905090810190601f1680156141b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b6000808314156141df576000905061424c565b60008284029050828482816141f057fe5b0414614247576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614dac6021913960400191505060405180910390fd5b809150505b92915050565b600061426082600001614458565b9050919050565b6000828211156142df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600061431983836142ea565b614372578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050614377565b600090505b92915050565b806143925761438d848484614469565b614452565b600360059054906101000a900460ff1680156143be57506143bd83600b613a0690919063ffffffff16565b5b156143e3576143de848484600360019054906101000a900460ff16614617565b614451565b600360069054906101000a900460ff16801561440f575061440e84600b613a0690919063ffffffff16565b5b156144345761442f848484600360009054906101000a900460ff16614617565b614450565b61444f848484600360029054906101000a900460ff16614617565b5b5b5b50505050565b600081600001805490509050919050565b6144d581604051806060016040528060268152602001614d5e60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141129092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061456a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156146af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614d3a6024913960400191505060405180910390fd5b60006146c0838360ff166064614c41565b905060006146d7828561426790919063ffffffff16565b9050600360049054906101000a900460ff16156149af57600061470e858560ff1660038054906101000a900460ff1660ff16614c41565b90506147748161476685600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b61426790919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147cc8160025461426790919063ffffffff16565b6002819055506148468160016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b60016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef614994848761426790919063ffffffff16565b6040518082815260200191505060405180910390a350614aaa565b614a0182600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b614afc81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b9184600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461426790919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050505050565b6000614c7c612710614c6e84614c6087896141cc90919063ffffffff16565b6141cc90919063ffffffff16565b61397590919063ffffffff16565b9050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e207a65726f5472616e7366657220616d6f756e742065786365656473207468652062616c616e63652e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f8c02d46efea2af4c8bb7782eeee868bafb16f6add12f44a04d274391fdd8e8764736f6c634300060c0033

Deployed ByteCode Sourcemap

14063:13307:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25703:242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16754:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18838:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15069:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26415:295;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17031:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26172:235;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23602:233;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15564:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26718:384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19007:311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24840:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15023:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25053:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16940:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19326:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17139:838;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25365:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20082;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14856:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25232:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15164:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16610:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18383:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1008:148;;;;;;;;;;;;;:::i;:::-;;15199:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14917:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25953:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27250:117;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;785:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16845;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15445:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17985:390;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19550:267;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18510:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24080:564;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14886:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27110:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18685:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15114:43;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15265:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25533:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24652:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14598:53;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1164:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14984:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14952:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15504:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19825:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25703:242;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25785:34:::1;25806:12;25785:11;:20;;:34;;;;:::i;:::-;25784:35;25776:77;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;25864:29;25880:12;25864:11;:15;;:29;;;;:::i;:::-;;25909:28;25924:12;25909:28;;;;;;;;;;;;;;;;;;;;25703:242:::0;:::o;16754:83::-;16791:13;16824:5;;;;;;;;;;;;;;;;;16817:12;;16754:83;:::o;18838:161::-;18915:4;18932:37;18941:10;18953:7;18962:6;18932:8;:37::i;:::-;18987:4;18980:11;;18838:161;;;;:::o;15069:38::-;;;;;;;;;;;;;:::o;26415:295::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26486:18:::1;26507:9;:24;26525:4;26507:24;;;;;;;;;;;;;;;;26486:45;;26569:1;26542:9;:24;26560:4;26542:24;;;;;;;;;;;;;;;:28;;;;26604:36;26629:10;26604:9;:20;26614:9;26604:20;;;;;;;;;;;;;;;;:24;;:36;;;;:::i;:::-;26581:9;:20;26591:9;26581:20;;;;;;;;;;;;;;;:59;;;;26680:9;26656:46;;26673:4;26656:46;;;26691:10;26656:46;;;;;;;;;;;;;;;;;;991:1;26415:295:::0;:::o;17031:100::-;17084:7;17111:12;;17104:19;;17031:100;:::o;26172:235::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26298:25:::1;26271:24;;:52;;;;;;;;;;;;;;;;;;26339:60;26354:25;26381:17;26339:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26172:235:::0;:::o;23602:233::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23702:1:::1;23688:11;:15;23680:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23773:11;23758:12;:26;;;;23800:27;23815:11;23800:27;;;;;;;;;;;;;;;;;;23602:233:::0;:::o;15564:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;26718:384::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26826:1:::1;26808:20;;:6;:20;;;26804:291;;;26845:15;26863:21;26845:39;;26907:9;26899:27;;:36;26927:7;26899:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26804:291;;;;26968:15;26993:6;26986:24;;;27019:4;26986:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;26968:57;;27047:6;27040:23;;;27064:9;27075:7;27040:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;26804:291;;26718:384:::0;;:::o;19007:311::-;19107:4;19124:36;19134:6;19142:9;19153:6;19124:9;:36::i;:::-;19171:117;19180:6;19188:10;19200:87;19236:6;19200:87;;;;;;;;;;;;;;;;;:11;:19;19212:6;19200:19;;;;;;;;;;;;;;;:31;19220:10;19200:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;19171:8;:117::i;:::-;19306:4;19299:11;;19007:311;;;;;:::o;24840:205::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24951:20:::1;24929:19;;:42;;;;;;;;;;;;;;;;;;24987:50;25002:20;25024:12;24987:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24840:205:::0;:::o;15023:39::-;;;;;;;;;;;;;:::o;25053:171::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25151:15:::1;25134:14;;:32;;;;;;;;;;;;;;;;;;25182:34;25200:15;25182:34;;;;;;;;;;;;;;;;;;;;25053:171:::0;:::o;16940:83::-;16981:5;14356:1;16999:16;;16940:83;:::o;19326:216::-;19416:4;19433:79;19442:10;19454:7;19463:48;19500:10;19463:11;:23;19475:10;19463:23;;;;;;;;;;;;;;;:32;19487:7;19463:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;19433:8;:79::i;:::-;19530:4;19523:11;;19326:216;;;;:::o;17139:838::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14356:1:::1;14519:18;;14515:2;:22;14503:9;:34;17251:7;17236:12;;:22;:36;;17228:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17334:1;17314:22;;:8;:22;;;;17306:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17383:14;17400:8;:16;17417:15;17400:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;17383:50;;17479:1;17448:18;:27;17467:7;17448:27;;;;;;;;;;;;;;;;:32;17444:155;;;17527:60;14586:5;17527:40;14647:4;17527:12;;:16;;:40;;;;:::i;:::-;:44;;:60;;;;:::i;:::-;17497:18;:27;17516:7;17497:27;;;;;;;;;;;;;;;:90;;;;17444:155;17657:18;:27;17676:7;17657:27;;;;;;;;;;;;;;;;17646:7;17617:17;:26;17635:7;17617:26;;;;;;;;;;;;;;;;:36;:67;;17609:110;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17745:25;17762:7;17745:12;;:16;;:25;;;;:::i;:::-;17730:12;:40;;;;17810:39;17841:7;17810:17;:26;17828:7;17810:26;;;;;;;;;;;;;;;;:30;;:39;;;;:::i;:::-;17781:17;:26;17799:7;17781:26;;;;;;;;;;;;;;;:68;;;;17882:32;17906:7;17882:9;:19;17892:8;17882:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;17860:9;:19;17870:8;17860:19;;;;;;;;;;;;;;;:54;;;;17951:8;17930:39;;17947:1;17930:39;;;17961:7;17930:39;;;;;;;;;;;;;;;;;;991:1;17139:838:::0;;:::o;25365:160::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25468:4:::1;25438:18;:27;25457:7;25438:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;25488:29;25503:7;25512:4;25488:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;25365:160:::0;:::o;20082:::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20184:5:::1;20158:14;:23;20173:7;20158:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20228:5;20205:29;;20219:7;20205:29;;;;;;;;;;;;20082:160:::0;:::o;14856:23::-;;;;;;;;;;;;;:::o;25232:125::-;25298:4;25322:18;:27;25341:7;25322:27;;;;;;;;;;;;;;;;;;;;;;;;;25315:34;;25232:125;;;:::o;15164:26::-;;;;;;;;;;;;;:::o;16610:136::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16697:41:::1;16715:4;16722:7;16731:6;16697:9;:41::i;:::-;16610:136:::0;;:::o;18383:119::-;18449:7;18476:9;:18;18486:7;18476:18;;;;;;;;;;;;;;;;18469:25;;18383:119;;;:::o;1008:148::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1115:1:::1;1078:40;;1099:6;::::0;::::1;;;;;;;;1078:40;;;;;;;;;;;;1146:1;1129:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1008:148::o:0;15199:59::-;;;;:::o;14917:28::-;;;;;;;;;;;;;:::o;25953:211::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26067:21:::1;26044:20;;:44;;;;;;;;;;;;;;;;;;26104:52;26119:21;26142:13;26104:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25953:211:::0;:::o;27250:117::-;27299:7;27326:33;27347:11;27326:20;:33::i;:::-;27319:40;;27250:117;:::o;785:87::-;831:7;858:6;;;;;;;;;;;851:13;;785:87;:::o;16845:::-;16884:13;16917:7;;;;;;;;;;;;;;;;;16910:14;;16845:87;:::o;15445:52::-;;;;;;;;;;;;;;;;;:::o;17985:390::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18086:70:::1;18110:7;18086:70;;;;;;;;;;;;;;;;;:9;:19;18096:8;18086:19;;;;;;;;;;;;;;;;:23;;:70;;;;;:::i;:::-;18064:9;:19;18074:8;18064:19;;;;;;;;;;;;;;;:92;;;;18203:46;18241:7;18203:9;:33;18213:22;;;;;;;;;;;18203:33;;;;;;;;;;;;;;;;:37;;:46;;;;:::i;:::-;18167:9;:33;18177:22;;;;;;;;;;;18167:33;;;;;;;;;;;;;;;:82;;;;18275:25;18292:7;18275:12;;:16;;:25;;;;:::i;:::-;18260:12;:40;;;;18335:22;;;;;;;;;;;18316:51;;18325:8;18316:51;;;18359:7;18316:51;;;;;;;;;;;;;;;;;;17985:390:::0;;:::o;19550:267::-;19645:4;19662:125;19671:10;19683:7;19692:94;19729:15;19692:94;;;;;;;;;;;;;;;;;:11;:23;19704:10;19692:23;;;;;;;;;;;;;;;:32;19716:7;19692:32;;;;;;;;;;;;;;;;:36;;:94;;;;;:::i;:::-;19662:8;:125::i;:::-;19805:4;19798:11;;19550:267;;;;:::o;18510:167::-;18590:4;18607:40;18617:10;18629:9;18640:6;18607:9;:40::i;:::-;18665:4;18658:11;;18510:167;;;;:::o;24080:564::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24234:2:::1;24219:11;:17;;;;24211:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24287:2;24271:12;:18;;;;24263:42;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24344:2;24324:16;:22;;;;24316:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24397:2;24381:12;:18;;;;24373:42;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24435:11;24426:6;;:20;;;;;;;;;;;;;;;;;;24467:12;24457:7;;:22;;;;;;;;;;;;;;;;;;24504:16;24490:11;;:30;;;;;;;;;;;;;;;;;;24541:12;24531:7;::::0;:22:::1;;;;;;;;;;;;;;;;;;24569:67;24578:11;24591:12;24605:16;24623:12;24569:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24080:564:::0;;;;:::o;14886:24::-;;;;;;;;;;;;;:::o;27110:130::-;27166:4;27190:42;27213:11;27226:5;27190:22;:42::i;:::-;27183:49;;27110:130;;;:::o;18685:145::-;18768:7;18795:11;:18;18807:5;18795:18;;;;;;;;;;;;;;;:27;18814:7;18795:27;;;;;;;;;;;;;;;;18788:34;;18685:145;;;;:::o;15114:43::-;;;;;;;;;;;;;:::o;15265:91::-;;;;;;;;;;;;;:::o;25533:160::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25634:5:::1;25604:18;:27;25623:7;25604:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25655:30;25670:7;25679:5;25655:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;25533:160:::0;:::o;24652:180::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24747:15:::1;24731:13;;:31;;;;;;;;;;;;;;;;;;24778:46;24793:15;24810:13;24778:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24652:180:::0;:::o;14598:53::-;14647:4;14598:53;:::o;1164:244::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1273:1:::1;1253:22;;:8;:22;;;;1245:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1363:8;1334:38;;1355:6;::::0;::::1;;;;;;;;1334:38;;;;;;;;;;;;1392:8;1383:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1164:244:::0;:::o;14984:32::-;;;;;;;;;;;;;:::o;14952:25::-;;;;;;;;;;;;:::o;15504:53::-;;;;;;;;;;;;;;;;;:::o;19825:249::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19914:9:::1;19909:158;19929:9;;:16;;19925:1;:20;19909:158;;;19998:4;19967:14;:28;19982:9;;19992:1;19982:12;;;;;;;;;;;;;;;19967:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;20050:4;20022:33;;20036:9;;20046:1;20036:12;;;;;;;;;;;;;;;20022:33;;;;;;;;;;;;19947:3;;;;;19909:158;;;;19825:249:::0;;:::o;2924:153::-;2982:7;3014:1;3010;:5;3002:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3068:1;3064;:5;;;;;;3057:12;;2924:153;;;;:::o;93:106::-;146:15;181:10;174:17;;93:106;:::o;6480:167::-;6560:4;6584:55;6594:3;:10;;6630:5;6614:23;;6606:32;;6584:9;:55::i;:::-;6577:62;;6480:167;;;;:::o;6154:152::-;6224:4;6248:50;6253:3;:10;;6289:5;6273:23;;6265:32;;6248:4;:50::i;:::-;6241:57;;6154:152;;;;:::o;20250:337::-;20360:1;20343:19;;:5;:19;;;;20335:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20441:1;20422:21;;:7;:21;;;;20414:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20525:6;20495:11;:18;20507:5;20495:18;;;;;;;;;;;;;;;:27;20514:7;20495:27;;;;;;;;;;;;;;;:36;;;;20563:7;20547:32;;20556:5;20547:32;;;20572:6;20547:32;;;;;;;;;;;;;;;;;;20250:337;;;:::o;2343:179::-;2401:7;2421:9;2437:1;2433;:5;2421:17;;2462:1;2457;:6;;2449:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2513:1;2506:8;;;2343:179;;;;:::o;20595:787::-;20733:1;20717:18;;:4;:18;;;;20709:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20810:1;20796:16;;:2;:16;;;;20788:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20880:1;20871:6;:10;20863:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20949:14;:20;20964:4;20949:20;;;;;;;;;;;;;;;;;;;;;;;;;20948:21;:44;;;;;20974:14;:18;20989:2;20974:18;;;;;;;;;;;;;;;;;;;;;;;;;20973:19;20948:44;20940:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21048:7;:5;:7::i;:::-;21040:15;;:4;:15;;;;:32;;;;;21065:7;:5;:7::i;:::-;21059:13;;:2;:13;;;;21040:32;21037:125;;;21105:12;;21095:6;:22;;21087:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21037:125;21175:12;21190:4;21175:19;;21210:14;;;;;;;;;;;:70;;;;;21229:18;:24;21248:4;21229:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;21257:18;:22;21276:2;21257:22;;;;;;;;;;;;;;;;;;;;;;;;;21229:50;21210:70;21207:117;;;21307:5;21297:15;;21207:117;21336:38;21351:4;21356:2;21359:6;21366:7;21336:14;:38::i;:::-;20595:787;;;;:::o;3244:166::-;3330:7;3363:1;3358;:6;;3366:12;3350:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3401:1;3397;:5;3390:12;;3244:166;;;;;:::o;2696:220::-;2754:7;2783:1;2778;:6;2774:20;;;2793:1;2786:8;;;;2774:20;2805:9;2821:1;2817;:5;2805:17;;2850:1;2845;2841;:5;;;;;;:10;2833:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:1;2900:8;;;2696:220;;;;;:::o;6655:117::-;6718:7;6745:19;6753:3;:10;;6745:7;:19::i;:::-;6738:26;;6655:117;;;:::o;2530:158::-;2588:7;2621:1;2616;:6;;2608:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2679:1;2675;:5;2668:12;;2530:158;;;;:::o;4873:129::-;4946:4;4993:1;4970:3;:12;;:19;4983:5;4970:19;;;;;;;;;;;;:24;;4963:31;;4873:129;;;;:::o;3895:291::-;3958:4;3980:21;3990:3;3995:5;3980:9;:21::i;:::-;3975:204;;4018:3;:11;;4035:5;4018:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4078:3;:11;;:18;;;;4056:3;:12;;:19;4069:5;4056:19;;;;;;;;;;;:40;;;;4118:4;4111:11;;;;3975:204;4162:5;4155:12;;3895:291;;;;;:::o;21390:616::-;21501:7;21497:502;;21525:43;21542:6;21550:9;21561:6;21525:16;:43::i;:::-;21497:502;;;21605:20;;;;;;;;;;;:55;;;;;21629:31;21650:9;21629:11;:20;;:31;;;;:::i;:::-;21605:55;21601:387;;;21680:50;21695:6;21703:9;21714:6;21722:7;;;;;;;;;;;21680:14;:50::i;:::-;21601:387;;;21756:19;;;;;;;;;;;:51;;;;;21779:28;21800:6;21779:11;:20;;:28;;;;:::i;:::-;21756:51;21752:236;;;21828:49;21843:6;21851:9;21862:6;21870;;;;;;;;;;;21828:14;:49::i;:::-;21752:236;;;21918:54;21933:6;21941:9;21952:6;21960:11;;;;;;;;;;;21918:14;:54::i;:::-;21752:236;21601:387;21497:502;21390:616;;;;:::o;5010:109::-;5066:7;5093:3;:11;;:18;;;;5086:25;;5010:109;;;:::o;23282:312::-;23398:71;23420:6;23398:71;;;;;;;;;;;;;;;;;:9;:17;23408:6;23398:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;23378:9;:17;23388:6;23378:17;;;;;;;;;;;;;;;:91;;;;23503:32;23528:6;23503:9;:20;23513:9;23503:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23480:9;:20;23490:9;23480:20;;;;;;;;;;;;;;;:55;;;;23568:9;23551:35;;23560:6;23551:35;;;23579:6;23551:35;;;;;;;;;;;;;;;;;;23282:312;;;:::o;22014:1260::-;22148:6;22127:9;:17;22137:6;22127:17;;;;;;;;;;;;;;;;:27;;22119:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22206:23;22230:49;22244:6;22260:3;22252:12;;22274:3;22230:13;:49::i;:::-;22206:73;;22290:19;22310:27;22321:15;22310:6;:10;;:27;;;;:::i;:::-;22290:47;;22352:13;;;;;;;;;;;22348:734;;;22382:22;22405:53;22419:6;22435:3;22427:12;;22449:7;;;;;;;;;;22441:16;;22405:13;:53::i;:::-;22382:76;;22498:65;22548:14;22498:45;22527:15;22498:9;:24;22516:4;22498:24;;;;;;;;;;;;;;;;:28;;:45;;;;:::i;:::-;:49;;:65;;;;:::i;:::-;22473:9;:24;22491:4;22473:24;;;;;;;;;;;;;;;:90;;;;22593:32;22610:14;22593:12;;:16;;:32;;;;:::i;:::-;22578:12;:47;;;;22676:53;22714:14;22676:9;:33;22686:22;;;;;;;;;;;22676:33;;;;;;;;;;;;;;;;:37;;:53;;;;:::i;:::-;22640:9;:33;22650:22;;;;;;;;;;;22640:33;;;;;;;;;;;;;;;:89;;;;22766:22;;;;;;;;;;;22749:56;;22758:6;22749:56;;;22790:14;22749:56;;;;;;;;;;;;;;;;;;22850:4;22825:70;;22834:6;22825:70;;;22858:35;22878:14;22858:15;:19;;:35;;;;:::i;:::-;22825:70;;;;;;;;;;;;;;;;;;22348:734;;;;22953:47;22983:15;22953:9;:24;22971:4;22953:24;;;;;;;;;;;;;;;;:28;;:47;;;;:::i;:::-;22928:9;:24;22946:4;22928:24;;;;;;;;;;;;;;;:72;;;;23045:4;23020:50;;23029:6;23020:50;;;23053:15;23020:50;;;;;;;;;;;;;;;;;;22348:734;23115:37;23140:11;23115:9;:20;23125:9;23115:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23092:9;:20;23102:9;23092:20;;;;;;;;;;;;;;;:60;;;;23181:29;23203:6;23181:9;:17;23191:6;23181:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;23163:9;:17;23173:6;23163:17;;;;;;;;;;;;;;;:47;;;;23243:9;23226:40;;23235:6;23226:40;;;23254:11;23226:40;;;;;;;;;;;;;;;;;;22014:1260;;;;;;:::o;23892:180::-;23986:7;24013:51;14586:5;24013:31;24033:10;24013:15;24024:3;24013:6;:10;;:15;;;;:::i;:::-;:19;;:31;;;;:::i;:::-;:35;;:51;;;;:::i;:::-;24006:58;;23892:180;;;;;:::o

Swarm Source

ipfs://f8c02d46efea2af4c8bb7782eeee868bafb16f6add12f44a04d274391fdd8e87
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.