Contract 0xAEcc217a749c2405b5ebC9857a16d58Bdc1c367F 4

 

Contract Overview

Pawthereum: PAWTH Token
Balance:
41.‍426716564080739225 Ether

EtherValue:
$80,984.67 (@ $1,954.89/ETH)

Token:
 
Txn Hash
Method
Block
From
To
Value
0x9d111041e9ca49a231ce0efeebee1a0a4a4d5aca55daca6a65945b848458d05fApprove153394352022-08-14 11:15:1813 hrs 56 mins ago0x17d0656139fb599abf518df350029285557731af IN  Pawthereum: PAWTH Token0 Ether0.‍00020484 4.‍39331127
0xc46cd6e2390997341f302950bb75fc253e3821444615091f24badd40ff54991eApprove153387962022-08-14 8:52:3216 hrs 18 mins ago0xc14ff98a00878a6e75a527c8909233559d615ce3 IN  Pawthereum: PAWTH Token0 Ether0.‍00027306 5.‍85657887
0x18f21a9acb080f47608cdcc5e34fb53d755c8dadfd46255f14844aefe616f003Approve153222982022-08-11 18:40:143 days 6 hrs agoENS Name juantin.eth IN  Pawthereum: PAWTH Token0 Ether0.‍00155884 33.‍43296034
0x43f47c7ab9e74767ebe05dbf8bb8437a05fc81d5675d51267edfba55b7fb77aeApprove153184922022-08-11 4:04:423 days 21 hrs ago0x87313881a3533ea011506f8c5d39e4513fb29d8c IN  Pawthereum: PAWTH Token0 Ether0.‍00122543 26.‍28214747
0x4b3a05677da870eb3b1bd21ed8638199e0c9b36bfa9b6d96a74471665888162fTransfer153035322022-08-08 19:46:536 days 5 hrs ago0x5ceac6b3d26e0957c8a809e31d596c16e5780d96 IN  Pawthereum: PAWTH Token0 Ether0.‍00455882 22.‍865214
0x8f8d4c2e2fa4d58bbbbedbc1a086b24070d28ef6656571c5c181fe37b26fe1b3Approve152907572022-08-06 19:58:028 days 5 hrs agoENS Name 0xmagickarp.eth IN  Pawthereum: PAWTH Token0 Ether0.‍00023313 5
0x9fb317a3665f71c5f7a05a42ab72958155bcfd9c6948a6d0d289070db83b4e2aApprove152907272022-08-06 19:53:508 days 5 hrs agoENS Name 0xmagickarp.eth IN  Pawthereum: PAWTH Token0 Ether0.‍00019363 4.‍15299535
0xdb529050da525b4c917d1c49a9b66324fa01c21b584d9ae58085f06687b1d37eApprove152860902022-08-06 2:29:408 days 22 hrs ago0xe71ce67b671d1e2bb1c1ad598be745500de3af67 IN  Pawthereum: PAWTH Token0 Ether0.‍00046262 9.‍922
0x30b0d84cdf30ff8bc075774645516792d6d5e42d25156d3b17a16f6b091c19bbApprove152860662022-08-06 2:23:368 days 22 hrs ago0xe71ce67b671d1e2bb1c1ad598be745500de3af67 IN  Pawthereum: PAWTH Token0 Ether0.‍00041952 9
0x4ae5a6cc2780233494179aa920a44049521eb565fa54db9bfb64b6b39f61e860Approve152858572022-08-06 1:31:358 days 23 hrs ago0xe71ce67b671d1e2bb1c1ad598be745500de3af67 IN  Pawthereum: PAWTH Token0 Ether0.‍00051288 11
0xfca3425a0237fe809cb01b972a43ffdd1fc6337db15d5edd495945720fbd3d6aApprove152858472022-08-06 1:29:338 days 23 hrs ago0xe71ce67b671d1e2bb1c1ad598be745500de3af67 IN  Pawthereum: PAWTH Token0 Ether0.‍00069939 15
0x9f7d436abadc7bcadd3eaa339c8d737b3d9517de618b01a0a70f63715355ffe2Approve152824902022-08-05 13:06:069 days 12 hrs ago0xc933537c0c3c289b57a2f7735e73ef719c7f29cf IN  Pawthereum: PAWTH Token0 Ether0.‍00058782 12.‍60720686
0x6320b3a98d0869d800588b4dcfdf4860b9a8028ab2c825726c1a825663a2861dApprove152750222022-08-04 9:12:4710 days 15 hrs ago0x27edb088caa6aa8d8b7e93a2bc6ef6749a151278 IN  Pawthereum: PAWTH Token0 Ether0.‍00125422 26.‍89971232
0x53d161ccc75a15257122bcd3bab018d99b9582ce8d18cac6e209d509f92c684fApprove152618252022-08-02 7:49:5212 days 17 hrs ago0x4d3703d6fa601b37b3a9cc71e9846eae2e9867b2 IN  Pawthereum: PAWTH Token0 Ether0.‍00032006 6.‍86461419
0x932fa06fc13d7a410defb2af002130b23335cd79fcc8bcac9359991d233a5615Approve152592102022-08-01 21:58:2813 days 3 hrs ago0x05f584d21a227935737b2fc9facaea305246a068 IN  Pawthereum: PAWTH Token0 Ether0.‍00103482 22.‍1941987
0xcfe7b48cd282496f0e78ed90d93bf4b04dacb8f6e8e37b4305da451520fd75ceApprove152585022022-08-01 19:16:0313 days 5 hrs ago0x6eb8aa4134a6e2015ef7fcf0c9289365b7083352 IN  Pawthereum: PAWTH Token0 Ether0.‍0006993915
0x72cc384b49fb00e75fdba20ca19b5d843f94d9680cd2b134b1c8c7ee34091f53Approve152512542022-07-31 16:12:4814 days 8 hrs agoENS Name timo.eth IN  Pawthereum: PAWTH Token0 Ether0.‍00074645 16.‍00938172
0x80a2cf01c4d9cbcec278e28b5a4d259efdcf8dc5547081276fe11a1fdbd2cd3cApprove152452632022-07-30 17:56:0015 days 7 hrs ago0xe570c5b6cf2d86399d94a2af1b6fbaf77ad2d979 IN  Pawthereum: PAWTH Token0 Ether0.‍00045404 9.‍73795231
0x8b8d1667e8a25bf7de95331c730d6b7958fb3ad62e9d27dcdc1b22c9a51f4de4Transfer152284722022-07-28 3:10:5017 days 22 hrs agoENS Name captain1.eth IN  Pawthereum: PAWTH Token0 Ether0.‍00404029 20.‍26691249
0x1453e3e9418b4adb8344968831aad73fdfd98dbb817b96e33fba30e6aec5c566Approve152268702022-07-27 21:04:5218 days 4 hrs ago0xd4ee4a23f4d40c77bcba1b095ca1666f91c58ed4 IN  Pawthereum: PAWTH Token0 Ether0.‍00366398 78.‍58246014
0xbfb8ea04044d560f9625fdafe9a65bf70d6625ce1ea727f0721b589375304de5Approve152268612022-07-27 21:02:4918 days 4 hrs ago0xd4ee4a23f4d40c77bcba1b095ca1666f91c58ed4 IN  Pawthereum: PAWTH Token0 Ether0.‍0026293 56.‍39136005
0xb4017c89bf4e85388cdf6c6a7271dea727f1f86632570e3c0010994a5ac2e815Approve152122552022-07-25 14:36:0620 days 10 hrs ago0x1093b9ec5f9f3c29279fecb9c14748a6ad658d80 IN  Pawthereum: PAWTH Token0 Ether0.‍00061153 13.‍11577034
0x8596ebc05912c8f0296bbb9e79626a84c8ec8bdc1b91801ede77bb268bfa84a2Transfer152121572022-07-25 14:17:3220 days 10 hrs agoPeatio IN  Pawthereum: PAWTH Token0 Ether0.‍0034979821.‍845315
0xd4595b7c43c30ee190062e49edcffcbd5c614d544f88248cb7604efbd8c4ec7cTransfer152108052022-07-25 9:13:2820 days 15 hrs ago0xf6ad8ca4e53b019f0c42352a94f8fd7ea241d1e5 IN  Pawthereum: PAWTH Token0 Ether0.‍000996715
0x7958bbd5d4220091a25f0814dceea21fbeb9bcf79ce1ee1e2d54e7834f02dd91Approve151882442022-07-21 20:54:5224 days 4 hrs agoENS Name pawthereum.eth IN  Pawthereum: PAWTH Token0 Ether0.‍00097334 20.‍96732562
[ Download CSV Export 

OVERVIEW

Pawthereum is a cryptocurrency project with animal welfare charitable fundamentals at its core.It aims to give back to animal shelters and be a digital advocate for animals in need.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xddf6a4da3d978efb38db096417ca10b012e97efb40464e281c255938d58f167e136424432021-11-19 0:10:14269 days 1 hr ago Uniswap V2: Router 2 Pawthereum: PAWTH Token41.‍27260337 Ether
0xddf6a4da3d978efb38db096417ca10b012e97efb40464e281c255938d58f167e136424432021-11-19 0:10:14269 days 1 hr ago Pawthereum: PAWTH Token Uniswap V2: Router 2103.‍27214155 Ether
0xddf6a4da3d978efb38db096417ca10b012e97efb40464e281c255938d58f167e136424432021-11-19 0:10:14269 days 1 hr ago Uniswap V2: Router 2 Pawthereum: PAWTH Token103.‍27214155 Ether
0xfa6dc20c0101033ad7cac9cfe65edd298d07d27ed0f462930ee12c8722f71003134020252021-10-12 6:19:30306 days 18 hrs ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍01011291 Ether
0xfa6dc20c0101033ad7cac9cfe65edd298d07d27ed0f462930ee12c8722f71003134020252021-10-12 6:19:30306 days 18 hrs ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍01011291 Ether
0x0bdc5a825933391f0d883f1e6854b677a07923df1e633452e02d5378e190c8c6133990462021-10-11 19:04:14307 days 6 hrs ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍03143196 Ether
0x0bdc5a825933391f0d883f1e6854b677a07923df1e633452e02d5378e190c8c6133990462021-10-11 19:04:14307 days 6 hrs ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍03143196 Ether
0x21ce32ac8a0149ac7452a4a56c176325d3af821284a0163079974219ddbece10133971892021-10-11 12:05:02307 days 13 hrs ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍00845567 Ether
0x21ce32ac8a0149ac7452a4a56c176325d3af821284a0163079974219ddbece10133971892021-10-11 12:05:02307 days 13 hrs ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍00845567 Ether
0x8112333f614f8e0ecef788b6706a2b029a12078ffb690958cb7f863b8072a41e133955942021-10-11 5:58:01307 days 19 hrs ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍01407223 Ether
0x8112333f614f8e0ecef788b6706a2b029a12078ffb690958cb7f863b8072a41e133955942021-10-11 5:58:01307 days 19 hrs ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍01407223 Ether
0xbe9af07059e9185356ad31dbed67424d3759d0b6e1b1058c6fc60a9a85b477d2133953992021-10-11 5:13:51307 days 19 hrs ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍01407223 Ether
0xbe9af07059e9185356ad31dbed67424d3759d0b6e1b1058c6fc60a9a85b477d2133953992021-10-11 5:13:51307 days 19 hrs ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍01407223 Ether
0x9d5d3f274fcb134654cecb157743f4fca2438abd25379b462bb65fa5995e4192133953772021-10-11 5:10:26307 days 20 hrs ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍01407223 Ether
0x9d5d3f274fcb134654cecb157743f4fca2438abd25379b462bb65fa5995e4192133953772021-10-11 5:10:26307 days 20 hrs ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍01407223 Ether
0x45568515e9df7eb2480ec0e3cccc9df97081a34de9ccde4320e10477cecce4bd133942952021-10-11 1:10:33308 days ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍01087438 Ether
0x45568515e9df7eb2480ec0e3cccc9df97081a34de9ccde4320e10477cecce4bd133942952021-10-11 1:10:33308 days ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍01087438 Ether
0x20a8ace11c20ac32fcc711459667ee9bb0f7bc4b8c296819ed500fc1212028ea133942822021-10-11 1:07:09308 days 4 mins ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍00743807 Ether
0x20a8ace11c20ac32fcc711459667ee9bb0f7bc4b8c296819ed500fc1212028ea133942822021-10-11 1:07:09308 days 4 mins ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍00743807 Ether
0x89554d1e07e682c9bc74427f785b8d00d27f2e01d32fb7b0ce7a8c4f5b7b2732133938062021-10-10 23:24:46308 days 1 hr ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍01139958 Ether
0x89554d1e07e682c9bc74427f785b8d00d27f2e01d32fb7b0ce7a8c4f5b7b2732133938062021-10-10 23:24:46308 days 1 hr ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍01139958 Ether
0xcf4e0acdf335af2025fc30954d751d66e9e71cb6a06a10a8fdb5d64ab8fb397b133929562021-10-10 20:09:26308 days 5 hrs ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍04177795 Ether
0xcf4e0acdf335af2025fc30954d751d66e9e71cb6a06a10a8fdb5d64ab8fb397b133929562021-10-10 20:09:26308 days 5 hrs ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍04177795 Ether
0x87d5b2f29787aade55282d10e7d6a868382557857e30fd92d7e93c80a28b0ca9133916472021-10-10 15:15:18308 days 9 hrs ago Pawthereum: PAWTH Token Uniswap V2: Router 20.‍00538673 Ether
0x87d5b2f29787aade55282d10e7d6a868382557857e30fd92d7e93c80a28b0ca9133916472021-10-10 15:15:18308 days 9 hrs ago Uniswap V2: Router 2 Pawthereum: PAWTH Token0.‍00538673 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pawthereum

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
petersburg EvmVersion, Audited
File 1 of 1 : Pawthereum.sol
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;
        return msg.data;
    }
}

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;

        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        (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"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

    modifier onlyOwner() {
        require(_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;
    }
}

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

interface IUniswapV2Pair {
    function sync() external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;
}

// change "name1" into ur name
contract Pawthereum is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    //change "name1" and "symbol"
    string private _name = "Pawthereum";
    string private _symbol = "PAWTH";

    uint8 private _decimals = 9;

    mapping(address => uint256) internal _reflectionBalance;
    mapping(address => uint256) internal _tokenBalance;
    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private constant MAX = ~uint256(0);

    // change this for total supply (100e8 = 100) (100000000e8 = 100000000) (dont forget the e8 it has to be there)
    uint256 internal _tokenTotal = 1000000000e9;
    // change this for total supply ^^^^^^^^^^^^^^^^^^^^^
    uint256 internal _reflectionTotal = (MAX - (MAX % _tokenTotal));

    mapping(address => bool) isTaxless;
    mapping(address => bool) internal _isExcluded;
    address[] internal _excluded;

    uint256 public _feeDecimal = 2;
    // thats the distribution to holders (400 = 4%)
    uint256 public _taxFee = 200;
    // thats the amount for liquidity pool
    uint256 public _liquidityFee = 100;
    // this amount gets burned by every transaction
    uint256 public _burnFee = 0;
    // this goes to the marketing wallet (line 403)
    uint256 public _marketingFee = 100;
    // this goes to the charity wallet
    uint256 public _charityFee = 200;

    uint256 public _taxFeeTotal;
    uint256 public _burnFeeTotal;
    uint256 public _liquidityFeeTotal;
    uint256 public _marketingFeeTotal;
    uint256 public _charityFeeTotal;

    address public marketingWallet;
    address public charityWallet;

    bool public isTaxActive = true;
    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public maxTxAmount = _tokenTotal;
    uint256 public minTokensBeforeSwap = 10_000e9;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() public {
        marketingWallet = 0x6DFcd4331b0d86bfe0318706C76B832dA4C03C1B;

        charityWallet = 0xa56891cfBd0175E6Fc46Bf7d647DE26100e95C78;

        isTaxless[_msgSender()] = true;
        isTaxless[address(this)] = true;

        _reflectionBalance[_msgSender()] = _reflectionTotal;
        emit Transfer(address(0), _msgSender(), _tokenTotal);
    }

    function init() external onlyOwner {
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); // for BSC
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        ); // for Ethereum
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); // for Sushi testnet
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tokenBalance[account];
        return tokenFromReflection(_reflectionBalance[account]);
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

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

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tokenAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tokenAmount <= _tokenTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            return tokenAmount.mul(_getReflectionRate());
        } else {
            return
                tokenAmount
                    .sub(tokenAmount.mul(_taxFee).div(10**_feeDecimal + 2))
                    .mul(_getReflectionRate());
        }
    }

    function tokenFromReflection(uint256 reflectionAmount)
        public
        view
        returns (uint256)
    {
        require(
            reflectionAmount <= _reflectionTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getReflectionRate();
        return reflectionAmount.div(currentRate);
    }

    function excludeAccount(address account) external onlyOwner {
        require(
            account != address(uniswapV2Router),
            "ERC20: We can not exclude Uniswap router."
        );
        require(!_isExcluded[account], "ERC20: Account is already excluded");
        if (_reflectionBalance[account] > 0) {
            _tokenBalance[account] = tokenFromReflection(
                _reflectionBalance[account]
            );
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner {
        require(_isExcluded[account], "ERC20: Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tokenBalance[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    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 sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        require(amount <= maxTxAmount, "Transfer Limit exceeded!");

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinTokenBalance = contractTokenBalance >= minTokensBeforeSwap;
        if (
            !inSwapAndLiquify &&
            overMinTokenBalance &&
            sender != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            swapAndLiquify(contractTokenBalance);
        }

        uint256 transferAmount = amount;
        uint256 rate = _getReflectionRate();

        if (
            isTaxActive &&
            !isTaxless[_msgSender()] &&
            !isTaxless[recipient] &&
            !inSwapAndLiquify
        ) {
            transferAmount = collectFee(sender, amount, rate);
        }

        _reflectionBalance[sender] = _reflectionBalance[sender].sub(
            amount.mul(rate)
        );
        _reflectionBalance[recipient] = _reflectionBalance[recipient].add(
            transferAmount.mul(rate)
        );

        if (_isExcluded[sender]) {
            _tokenBalance[sender] = _tokenBalance[sender].sub(amount);
        }
        if (_isExcluded[recipient]) {
            _tokenBalance[recipient] = _tokenBalance[recipient].add(
                transferAmount
            );
        }

        emit Transfer(sender, recipient, transferAmount);
    }

    function collectFee(
        address account,
        uint256 amount,
        uint256 rate
    ) private returns (uint256) {
        uint256 transferAmount = amount;

        //@dev tax fee
        if (_taxFee != 0) {
            uint256 taxFee = amount.mul(_taxFee).div(10**(_feeDecimal + 2));
            transferAmount = transferAmount.sub(taxFee);
            _reflectionTotal = _reflectionTotal.sub(taxFee.mul(rate));
            _taxFeeTotal = _taxFeeTotal.add(taxFee);
        }

        //@dev liquidity fee
        if (_liquidityFee != 0) {
            uint256 liquidityFee = amount.mul(_liquidityFee).div(
                10**(_feeDecimal + 2)
            );
            transferAmount = transferAmount.sub(liquidityFee);
            _reflectionBalance[address(this)] = _reflectionBalance[
                address(this)
            ].add(liquidityFee.mul(rate));
            if (_isExcluded[address(this)]) {
                _tokenBalance[address(this)] = _tokenBalance[address(this)].add(
                    liquidityFee
                );
            }
            _liquidityFeeTotal = _liquidityFeeTotal.add(liquidityFee);
            emit Transfer(account, address(this), liquidityFee);
        }

        //@dev burn fee
        if (_burnFee != 0) {
            uint256 burnFee = amount.mul(_burnFee).div(10**(_feeDecimal + 2));
            transferAmount = transferAmount.sub(burnFee);
            _tokenTotal = _tokenTotal.sub(burnFee);
            _reflectionTotal = _reflectionTotal.sub(burnFee.mul(rate));
            _burnFeeTotal = _burnFeeTotal.add(burnFee);
            emit Transfer(account, address(0), burnFee);
        }

        //@dev Marketing fee
        if (_marketingFee != 0) {
            uint256 marketingFee = amount.mul(_marketingFee).div(
                10**(_feeDecimal + 2)
            );
            transferAmount = transferAmount.sub(marketingFee);
            _reflectionBalance[marketingWallet] = _reflectionBalance[
                marketingWallet
            ].add(marketingFee.mul(rate));
            if (_isExcluded[marketingWallet]) {
                _tokenBalance[marketingWallet] = _tokenBalance[marketingWallet]
                    .add(marketingFee);
            }
            _marketingFeeTotal = _marketingFeeTotal.add(marketingFee);
            emit Transfer(account, marketingWallet, marketingFee);
        }

        //@dev Charity fee
        if (_charityFee != 0) {
            uint256 charityFee = amount.mul(_charityFee).div(
                10**(_feeDecimal + 2)
            );
            transferAmount = transferAmount.sub(charityFee);
            _reflectionBalance[charityWallet] = _reflectionBalance[
                charityWallet
            ].add(charityFee.mul(rate));
            if (_isExcluded[charityWallet]) {
                _tokenBalance[charityWallet] = _tokenBalance[charityWallet].add(
                    charityFee
                );
            }
            _charityFeeTotal = _charityFeeTotal.add(charityFee);
            emit Transfer(account, charityWallet, charityFee);
        }

        return transferAmount;
    }

    function _getReflectionRate() private view returns (uint256) {
        uint256 reflectionSupply = _reflectionTotal;
        uint256 tokenSupply = _tokenTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _reflectionBalance[_excluded[i]] > reflectionSupply ||
                _tokenBalance[_excluded[i]] > tokenSupply
            ) return _reflectionTotal.div(_tokenTotal);
            reflectionSupply = reflectionSupply.sub(
                _reflectionBalance[_excluded[i]]
            );
            tokenSupply = tokenSupply.sub(_tokenBalance[_excluded[i]]);
        }
        if (reflectionSupply < _reflectionTotal.div(_tokenTotal))
            return _reflectionTotal.div(_tokenTotal);
        return reflectionSupply.div(tokenSupply);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (contractTokenBalance > maxTxAmount)
            contractTokenBalance = maxTxAmount;
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        uint256 initialBalance = address(this).balance;

        swapTokensForEth(half);

        uint256 newBalance = address(this).balance.sub(initialBalance);

        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }

    function setPair(address pair) external onlyOwner {
        uniswapV2Pair = pair;
    }

    function setMarketingWallet(address account) external onlyOwner {
        marketingWallet = account;
    }

    function setCharityWallet(address account) external onlyOwner {
        charityWallet = account;
    }

    function setTaxless(address account, bool value) external onlyOwner {
        isTaxless[account] = value;
    }

    function setSwapAndLiquifyEnabled(bool enabled) external onlyOwner {
        swapAndLiquifyEnabled = enabled;
        SwapAndLiquifyEnabledUpdated(enabled);
    }

    function setTaxActive(bool value) external onlyOwner {
        isTaxActive = value;
    }

    function setTaxFee(uint256 fee) external onlyOwner {
        require(fee <= 200, "You can't set reflections fee above 2 percent.");
        _taxFee = fee;
    }

    function setBurnFee(uint256 fee) external onlyOwner {
        require(fee <= 200, "You can't set burn fees above 2 percent.");
        _burnFee = fee;
    }

    function setLiquidityFee(uint256 fee) external onlyOwner {
        require(fee <= 200, "You can't set this fee above 2 percent.");
        _liquidityFee = fee;
    }

    function setMarketingFee(uint256 fee) external onlyOwner {
        require(fee <= 200, "You can't set the marketing fee above 2 percent.");
        _marketingFee = fee;
    }

    function setCharityFee(uint256 fee) external onlyOwner {
        require(fee <= 200, "You can't set the charity fee above 2 percent.");
        _charityFee = fee;
    }

    function setMaxTxAmount(uint256 amount) external onlyOwner {
        maxTxAmount = amount;
    }

    function setMinTokensBeforeSwap(uint256 amount) external onlyOwner {
        minTokensBeforeSwap = amount;
    }

    receive() external payable {}
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "evmVersion": "petersburg",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"charityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":[],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTaxActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setBurnFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setCharityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setTaxActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setTaxless","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflectionAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600a81526020017f5061777468657265756d00000000000000000000000000000000000000000000815250600190805190602001906200005192919062000443565b506040518060400160405280600581526020017f5041575448000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000443565b506009600360006101000a81548160ff021916908360ff160217905550670de0b6b3a764000060075560075460001981620000d657fe5b06600019036008556002600c5560c8600d556064600e556000600f55606460105560c86011556001601860146101000a81548160ff0219169083151502179055506001601860166101000a81548160ff0219169083151502179055506007546019556509184e72a000601a553480156200014f57600080fd5b506000620001626200043b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350736dfcd4331b0d86bfe0318706c76b832da4c03c1b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a56891cfbd0175e6fc46bf7d647de26100e95c78601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000620002c06200043b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060085460046000620003806200043b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620003ce6200043b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040518082815260200191505060405180910390a3620004e9565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200048657805160ff1916838001178555620004b7565b82800160010185558215620004b7579182015b82811115620004b657825182559160200191906001019062000499565b5b509050620004c69190620004ca565b5090565b5b80821115620004e5576000816000905550600101620004cb565b5090565b6156dc80620004f96000396000f3fe6080604052600436106103035760003560e01c8063625e764c11610190578063a457c2d7116100dc578063dd62ed3e11610095578063ec28438a1161006f578063ec28438a14611000578063f2cc0c181461103b578063f2fde38b1461108c578063f84354f1146110dd5761030a565b8063dd62ed3e14610f39578063e1c7392a14610fbe578063e5d41c6b14610fd55761030a565b8063a457c2d714610d4d578063a9059cbb14610dbe578063c0b0fda214610e2f578063c4081a4c14610e5a578063c49b9a8014610e95578063cba0e99614610ed25761030a565b80637fd7e031116101495780638da5cb5b116101235780638da5cb5b14610c2457806395d89b4114610c6557806398a0dd0914610cf55780639d46cf8a14610d225761030a565b80637fd7e03114610b7d5780638187f51614610ba85780638c0b5e2214610bf95761030a565b8063625e764c14610a195780636bc87c3a14610a5457806370a0823114610a7f578063715018a614610ae457806375f0a87414610afb5780637b20876914610b3c5761030a565b8063355bc60b1161024f5780634549b0391161020857806349bd5a5e116101e257806349bd5a5e1461091f5780634a74bb02146109605780634bf2c7c91461098d5780635d098b38146109c85761030a565b80634549b0391461082c57806347f2dc5b1461088757806348a46473146108e45761030a565b8063355bc60b146106d4578063357bf15c146106ff57806335837f9e1461073a57806339509351146107655780633b124fe7146107d657806340f8007a146108015761030a565b806320c7c596116102bc5780632d838119116102965780632d838119146105c95780632ffc16281461061857806330563bd714610655578063313ce567146106a65761030a565b806320c7c596146104d257806322976e0d1461050d57806323b872dd146105385761030a565b806306fdde031461030f578063095ea7b31461039f5780630d9a5219146104105780631694505e1461043b57806318160ddd1461047c57806319db457d146104a75761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061032461112e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610364578082015181840152602081019050610349565b50505050905090810190601f1680156103915780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103ab57600080fd5b506103f8600480360360408110156103c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d0565b60405180821515815260200191505060405180910390f35b34801561041c57600080fd5b506104256111ee565b6040518082815260200191505060405180910390f35b34801561044757600080fd5b506104506111f4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048857600080fd5b5061049161121a565b6040518082815260200191505060405180910390f35b3480156104b357600080fd5b506104bc611224565b6040518082815260200191505060405180910390f35b3480156104de57600080fd5b5061050b600480360360208110156104f557600080fd5b810190808035906020019092919050505061122a565b005b34801561051957600080fd5b50610522611356565b6040518082815260200191505060405180910390f35b34801561054457600080fd5b506105b16004803603606081101561055b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061135c565b60405180821515815260200191505060405180910390f35b3480156105d557600080fd5b50610602600480360360208110156105ec57600080fd5b8101908080359060200190929190505050611435565b6040518082815260200191505060405180910390f35b34801561062457600080fd5b506106536004803603602081101561063b57600080fd5b810190808035151590602001909291905050506114b9565b005b34801561066157600080fd5b506106a46004803603602081101561067857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061159e565b005b3480156106b257600080fd5b506106bb6116aa565b604051808260ff16815260200191505060405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040518082815260200191505060405180910390f35b34801561070b57600080fd5b506107386004803603602081101561072257600080fd5b81019080803590602001909291905050506116c7565b005b34801561074657600080fd5b5061074f6117f3565b6040518082815260200191505060405180910390f35b34801561077157600080fd5b506107be6004803603604081101561078857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117f9565b60405180821515815260200191505060405180910390f35b3480156107e257600080fd5b506107eb6118ac565b6040518082815260200191505060405180910390f35b34801561080d57600080fd5b506108166118b2565b6040518082815260200191505060405180910390f35b34801561083857600080fd5b506108716004803603604081101561084f57600080fd5b81019080803590602001909291908035151590602001909291905050506118b8565b6040518082815260200191505060405180910390f35b34801561089357600080fd5b506108e2600480360360408110156108aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506119bb565b005b3480156108f057600080fd5b5061091d6004803603602081101561090757600080fd5b8101908080359060200190929190505050611ade565b005b34801561092b57600080fd5b50610934611bb0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096c57600080fd5b50610975611bd6565b60405180821515815260200191505060405180910390f35b34801561099957600080fd5b506109c6600480360360208110156109b057600080fd5b8101908080359060200190929190505050611be9565b005b3480156109d457600080fd5b50610a17600480360360208110156109eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d15565b005b348015610a2557600080fd5b50610a5260048036036020811015610a3c57600080fd5b8101908080359060200190929190505050611e21565b005b348015610a6057600080fd5b50610a69611f4d565b6040518082815260200191505060405180910390f35b348015610a8b57600080fd5b50610ace60048036036020811015610aa257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f53565b6040518082815260200191505060405180910390f35b348015610af057600080fd5b50610af961203e565b005b348015610b0757600080fd5b50610b106121c4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b4857600080fd5b50610b516121ea565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b8957600080fd5b50610b92612210565b6040518082815260200191505060405180910390f35b348015610bb457600080fd5b50610bf760048036036020811015610bcb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612216565b005b348015610c0557600080fd5b50610c0e612322565b6040518082815260200191505060405180910390f35b348015610c3057600080fd5b50610c39612328565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c7157600080fd5b50610c7a612351565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cba578082015181840152602081019050610c9f565b50505050905090810190601f168015610ce75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d0157600080fd5b50610d0a6123f3565b60405180821515815260200191505060405180910390f35b348015610d2e57600080fd5b50610d37612406565b6040518082815260200191505060405180910390f35b348015610d5957600080fd5b50610da660048036036040811015610d7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061240c565b60405180821515815260200191505060405180910390f35b348015610dca57600080fd5b50610e1760048036036040811015610de157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124d9565b60405180821515815260200191505060405180910390f35b348015610e3b57600080fd5b50610e446124f7565b6040518082815260200191505060405180910390f35b348015610e6657600080fd5b50610e9360048036036020811015610e7d57600080fd5b81019080803590602001909291905050506124fd565b005b348015610ea157600080fd5b50610ed060048036036020811015610eb857600080fd5b81019080803515159060200190929190505050612629565b005b348015610ede57600080fd5b50610f2160048036036020811015610ef557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612747565b60405180821515815260200191505060405180910390f35b348015610f4557600080fd5b50610fa860048036036040811015610f5c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061279d565b6040518082815260200191505060405180910390f35b348015610fca57600080fd5b50610fd3612824565b005b348015610fe157600080fd5b50610fea612b4b565b6040518082815260200191505060405180910390f35b34801561100c57600080fd5b506110396004803603602081101561102357600080fd5b8101908080359060200190929190505050612b51565b005b34801561104757600080fd5b5061108a6004803603602081101561105e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c23565b005b34801561109857600080fd5b506110db600480360360208110156110af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fc7565b005b3480156110e957600080fd5b5061112c6004803603602081101561110057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131d2565b005b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111c65780601f1061119b576101008083540402835291602001916111c6565b820191906000526020600020905b8154815290600101906020018083116111a957829003601f168201915b5050505050905090565b60006111e46111dd61353f565b8484613547565b6001905092915050565b60135481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754905090565b600c5481565b61123261353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60c881111561134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615590602e913960400191505060405180910390fd5b8060118190555050565b60105481565b600061136984848461373e565b61142a8461137561353f565b6114258560405180606001604052806028815260200161551760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113db61353f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e599092919063ffffffff16565b613547565b600190509392505050565b6000600854821115611492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061542f602a913960400191505060405180910390fd5b600061149c613f19565b90506114b181846141d490919063ffffffff16565b915050919050565b6114c161353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b6115a661353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611666576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360009054906101000a900460ff16905090565b60125481565b6116cf61353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60c88111156117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154cf6027913960400191505060405180910390fd5b80600e8190555050565b60165481565b60006118a261180661353f565b8461189d856006600061181761353f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461421e90919063ffffffff16565b613547565b6001905092915050565b600d5481565b60115481565b6000600754831115611932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161195857611951611942613f19565b846142a690919063ffffffff16565b90506119b5565b6119b2611963613f19565b6119a46119956002600c54600a0a01611987600d54896142a690919063ffffffff16565b6141d490919063ffffffff16565b8661432c90919063ffffffff16565b6142a690919063ffffffff16565b90505b92915050565b6119c361353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611ae661353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601a8190555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860169054906101000a900460ff1681565b611bf161353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60c8811115611d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061553f6028913960400191505060405180910390fd5b80600f8190555050565b611d1d61353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ddd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e2961353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ee9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60c8811115611f43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806156306030913960400191505060405180910390fd5b8060108190555050565b600e5481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611fee57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612039565b612036600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611435565b90505b919050565b61204661353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b61221e61353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123e95780601f106123be576101008083540402835291602001916123e9565b820191906000526020600020905b8154815290600101906020018083116123cc57829003601f168201915b5050505050905090565b601860149054906101000a900460ff1681565b60145481565b60006124cf61241961353f565b846124ca85604051806060016040528060258152602001615682602591396006600061244361353f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e599092919063ffffffff16565b613547565b6001905092915050565b60006124ed6124e661353f565b848461373e565b6001905092915050565b600f5481565b61250561353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60c881111561261f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615459602e913960400191505060405180910390fd5b80600d8190555050565b61263161353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601860166101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61282c61353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561294b57600080fd5b505afa15801561295f573d6000803e3d6000fd5b505050506040513d602081101561297557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156129e857600080fd5b505afa1580156129fc573d6000803e3d6000fd5b505050506040513d6020811015612a1257600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b505050506040513d6020811015612ab657600080fd5b8101908080519060200190929190505050601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b612b5961353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060198190555050565b612c2b61353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ceb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612d92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806155be6029913960400191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061540d6022913960400191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612f0957612ec5600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611435565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612fcf61353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461308f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613115576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154876026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6131da61353f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461329a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661333c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806156606022913960400191505060405180910390fd5b60005b600b8054905081101561353b578173ffffffffffffffffffffffffffffffffffffffff16600b828154811061337057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561352e57600b6001600b8054905003815481106133cc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b828154811061340457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b8054806134f457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561353b565b808060010191505061333f565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061560c6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613653576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806154ad6022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806155e76025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561384a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806153ea6023913960400191505060405180910390fd5b600081116138a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806155676029913960400191505060405180910390fd5b60195481111561391b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5472616e73666572204c696d697420657863656564656421000000000000000081525060200191505060405180910390fd5b600061392630611f53565b90506000601a548210159050601860159054906101000a900460ff1615801561394c5750805b80156139a65750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156139be5750601860169054906101000a900460ff165b156139cd576139cc82614376565b5b600083905060006139dc613f19565b9050601860149054906101000a900460ff168015613a4b575060096000613a0161353f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613aa15750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613aba5750601860159054906101000a900460ff16155b15613acd57613aca878683614496565b91505b613b31613ae382876142a690919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432c90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bd8613b8a82846142a690919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461421e90919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d0357613cbf85600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432c90919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613deb57613da782600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461421e90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050505050565b6000838311158290613f06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ecb578082015181840152602081019050613eb0565b50505050905090810190601f168015613ef85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060085490506000600754905060005b600b8054905081101561417a578260046000600b8481548110613f4a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061403157508160056000600b8481548110613fc957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156140575761404d6007546008546141d490919063ffffffff16565b93505050506141d1565b6140e060046000600b848154811061406b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461432c90919063ffffffff16565b925061416b60056000600b84815481106140f657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361432c90919063ffffffff16565b91508080600101915050613f2b565b506141926007546008546141d490919063ffffffff16565b8210156141b9576141b06007546008546141d490919063ffffffff16565b925050506141d1565b6141cc81836141d490919063ffffffff16565b925050505b90565b600061421683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614f21565b905092915050565b60008082840190508381101561429c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808314156142b95760009050614326565b60008284029050828482816142ca57fe5b0414614321576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806154f66021913960400191505060405180910390fd5b809150505b92915050565b600061436e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e59565b905092915050565b6001601860156101000a81548160ff0219169083151502179055506019548111156143a15760195490505b60006143b76002836141d490919063ffffffff16565b905060006143ce828461432c90919063ffffffff16565b905060003073ffffffffffffffffffffffffffffffffffffffff163190506143f583614fe7565b6000614421823073ffffffffffffffffffffffffffffffffffffffff163161432c90919063ffffffff16565b905061442d838261529b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000601860156101000a81548160ff02191690831515021790555050565b6000808390506000600d54146145385760006144d76002600c5401600a0a6144c9600d54886142a690919063ffffffff16565b6141d490919063ffffffff16565b90506144ec818361432c90919063ffffffff16565b915061451561450485836142a690919063ffffffff16565b60085461432c90919063ffffffff16565b6008819055506145308160125461421e90919063ffffffff16565b601281905550505b6000600e541461479b5760006145736002600c5401600a0a614565600e54886142a690919063ffffffff16565b6141d490919063ffffffff16565b9050614588818361432c90919063ffffffff16565b91506145ee6145a085836142a690919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461421e90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614719576146d581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461421e90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61472e8160145461421e90919063ffffffff16565b6014819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505b6000600f54146148b85760006147d66002600c5401600a0a6147c8600f54886142a690919063ffffffff16565b6141d490919063ffffffff16565b90506147eb818361432c90919063ffffffff16565b91506148028160075461432c90919063ffffffff16565b60078190555061482f61481e85836142a690919063ffffffff16565b60085461432c90919063ffffffff16565b60088190555061484a8160135461421e90919063ffffffff16565b601381905550600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505b600060105414614be75760006148f36002600c5401600a0a6148e5601054886142a690919063ffffffff16565b6141d490919063ffffffff16565b9050614908818361432c90919063ffffffff16565b915061499061492085836142a690919063ffffffff16565b60046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461421e90919063ffffffff16565b60046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614b4357614add8160056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461421e90919063ffffffff16565b60056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b614b588160155461421e90919063ffffffff16565b601581905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505b600060115414614f16576000614c226002600c5401600a0a614c14601154886142a690919063ffffffff16565b6141d490919063ffffffff16565b9050614c37818361432c90919063ffffffff16565b9150614cbf614c4f85836142a690919063ffffffff16565b60046000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461421e90919063ffffffff16565b60046000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614e7257614e0c8160056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461421e90919063ffffffff16565b60056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b614e878160165461421e90919063ffffffff16565b601681905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505b809150509392505050565b60008083118290614fcd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614f92578082015181840152602081019050614f77565b50505050905090810190601f168015614fbf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614fd957fe5b049050809150509392505050565b6060600267ffffffffffffffff8111801561500157600080fd5b506040519080825280602002602001820160405280156150305781602001602082028036833780820191505090505b509050308160008151811061504157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156150e357600080fd5b505afa1580156150f7573d6000803e3d6000fd5b505050506040513d602081101561510d57600080fd5b81019080805190602001909291905050508160018151811061512b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061519230601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613547565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561525657808201518184015260208101905061523b565b505050509050019650505050505050600060405180830381600087803b15801561527f57600080fd5b505af1158015615293573d6000803e3d6000fd5b505050505050565b6152c830601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613547565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561539257600080fd5b505af11580156153a6573d6000803e3d6000fd5b50505050506040513d60608110156153bd57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a204163636f756e7420697320616c7265616479206578636c75646564416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e73596f752063616e277420736574207265666c656374696f6e73206665652061626f766520322070657263656e742e4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373596f752063616e2774207365742074686973206665652061626f766520322070657263656e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365596f752063616e277420736574206275726e20666565732061626f766520322070657263656e742e5472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f596f752063616e277420736574207468652063686172697479206665652061626f766520322070657263656e742e45524332303a2057652063616e206e6f74206578636c75646520556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373596f752063616e27742073657420746865206d61726b6574696e67206665652061626f766520322070657263656e742e45524332303a204163636f756e7420697320616c726561647920696e636c7564656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122004cfe4e9945596d15a636326d9686f04de57af3c42d2d5dcb331152db60939f864736f6c634300060c0033

Block Transaction Difficulty Gas Used Reward
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.

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