ETH Price: $3,319.04 (-3.26%)
Gas: 5.18 Gwei

Contract

0xb622894B0328090EBcC2E0AdaDBE16895ea0A93D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer198871892024-05-17 4:03:23244 days ago1715918603IN
0xb622894B...95ea0A93D
0 ETH0.000141844.16579123
Approve150576192022-07-01 16:22:08930 days ago1656692528IN
0xb622894B...95ea0A93D
0 ETH0.0011770647.1674837
Transfer143443492022-03-08 5:32:501045 days ago1646717570IN
0xb622894B...95ea0A93D
0 ETH0.0008941724.25798473
Airdrop133213822021-09-29 15:10:401205 days ago1632928240IN
0xb622894B...95ea0A93D
0 ETH0.004880286.11319494
Approve133213202021-09-29 14:58:511205 days ago1632927531IN
0xb622894B...95ea0A93D
0 ETH0.0038147180.75343279
Airdrop133213092021-09-29 14:55:591205 days ago1632927359IN
0xb622894B...95ea0A93D
0 ETH0.0075322472.19704816
Approve133150352021-09-28 15:31:161206 days ago1632843076IN
0xb622894B...95ea0A93D
0 ETH0.0032122568.00000145
Airdrop132982292021-09-26 0:24:451208 days ago1632615885IN
0xb622894B...95ea0A93D
0 ETH0.0021563854.50926997
Airdrop132955992021-09-25 14:49:421209 days ago1632581382IN
0xb622894B...95ea0A93D
0 ETH0.002756348.63618048
Airdrop132931182021-09-25 5:47:081209 days ago1632548828IN
0xb622894B...95ea0A93D
0 ETH0.0020154950.93240004
Airdrop132862342021-09-24 3:59:431210 days ago1632455983IN
0xb622894B...95ea0A93D
0 ETH0.0036853165.02883456
Transfer132684382021-09-21 9:54:531213 days ago1632218093IN
0xb622894B...95ea0A93D
0 ETH0.0048884233.00000145
Transfer132682092021-09-21 9:04:021213 days ago1632215042IN
0xb622894B...95ea0A93D
0 ETH0.00711148.00000145
Airdrop132555582021-09-19 10:17:581215 days ago1632046678IN
0xb622894B...95ea0A93D
0 ETH0.002756548.63963918
Approve132275042021-09-15 1:57:481219 days ago1631671068IN
0xb622894B...95ea0A93D
0 ETH0.0018895640.00000145
Approve132168942021-09-13 10:42:351221 days ago1631529755IN
0xb622894B...95ea0A93D
0 ETH0.0025981455.00000145
Airdrop132087582021-09-12 4:22:351222 days ago1631420555IN
0xb622894B...95ea0A93D
0 ETH0.0019975450.47863694
Approve131759492021-09-07 2:23:391227 days ago1630981419IN
0xb622894B...95ea0A93D
0 ETH0.0038263581.00000145
Airdrop131725582021-09-06 13:57:041228 days ago1630936624IN
0xb622894B...95ea0A93D
0 ETH0.00511296129.20672938
Approve131705852021-09-06 6:26:531228 days ago1630909613IN
0xb622894B...95ea0A93D
0 ETH0.0038859782.26201464
Airdrop131705282021-09-06 6:14:131228 days ago1630908853IN
0xb622894B...95ea0A93D
0 ETH0.0117788112.90059722
Airdrop131663452021-09-05 14:48:011229 days ago1630853281IN
0xb622894B...95ea0A93D
0 ETH0.0034855888.08201024
Approve131645372021-09-05 8:01:541229 days ago1630828914IN
0xb622894B...95ea0A93D
0 ETH0.0037318879.00000145
Airdrop131577912021-09-04 7:12:241230 days ago1630739544IN
0xb622894B...95ea0A93D
0 ETH0.0041187872.67765144
Airdrop131514872021-09-03 7:47:501231 days ago1630655270IN
0xb622894B...95ea0A93D
0 ETH0.00653434115.30113525
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VegionToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-19
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**
 * @dev Implementation of Vegion Token.
 * @author Vegion Team
 */
contract VegionToken is Context, IERC20, IERC20Metadata, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => uint256) private _freezes;
    mapping(address => bool) private _addressExists;
    mapping(uint256 => address) private _addresses;
    uint256 private _addressCount = 0;
    address private _addressDev;
    address private _addressAd;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    uint256 private _totalBurn;
    uint256 private _burnStop;

    string private _name = "VegionToken";
    string private _symbol = "VT";

    mapping(address => bool) private _addressNoAirdrop;
    mapping(address => uint256) private _addressAirdrop;
    uint256 private _totalAirdrop = 0;
    uint256 private _totalVt = 0;

    uint256 private _adBatchEnd = 0;
    uint256 private _adBatchLast = 0;
    uint256 private _adBatchTotal = 0;
    uint256 private _adBatchVtTotal = 0;

    mapping(address => bool) private _admins;

    /**
     * @dev constructor
     */
    constructor(address addressDev, address addressAd) {
        require(addressDev != address(0), "constructor: dev address error");
        require(addressAd != address(0), "constructor: airdrop address error");
        require(
            addressDev != addressAd,
            "constructor: dev and airdrop not same"
        );
        _totalSupply = 100_000_000 * 10**decimals();
        _totalBurn = 0;
        _burnStop = 2_100_000 * 10**decimals();
        // owner
        _addressExists[_msgSender()] = true;
        _addresses[_addressCount++] = _msgSender();
        // dev
        if (!_addressExists[addressDev]) {
            _addressExists[addressDev] = true;
            _addresses[_addressCount++] = addressDev;
        }
        _addressDev = addressDev;
        // airdrop
        if (!_addressExists[addressAd]) {
            _addressExists[addressAd] = true;
            _addresses[_addressCount++] = addressAd;
        }
        _addressAd = addressAd;

        _admins[_msgSender()] = true;
    }

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

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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     */
    function decimals() public view virtual override returns (uint8) {
        return 8;
    }

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

    /**
     * @dev totalBurn.
     */
    function totalBurn() public view virtual returns (uint256) {
        return _totalBurn;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transferBurn(_msgSender(), recipient, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     */
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "transferFrom: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "decreaseAllowance: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev burn
     */
    function burn(uint256 amount) public virtual returns (bool) {
        _burn(_msgSender(), amount);
        return true;
    }

    /**
     * @dev get address count
     */
    function addressCount() public view onlyAdmin returns (uint256) {
        return _addressCount;
    }

    /**
     * @dev check if address exist
     */
    function isAddressExist(address target)
        public
        view
        onlyAdmin
        returns (bool)
    {
        return _addressExists[target];
    }

    /**
     * @dev total airdrop vt
     */
    function totalAirdrop() public view onlyAdmin returns (uint256) {
        return _totalAirdrop;
    }

    /**
     * @dev total address vt
     */
    function totalVt() public view onlyAdmin returns (uint256) {
        return _totalVt;
    }

    /**
     * airdrop
     */
    function airdrop(address recipient, uint256 amount)
        public
        onlyAdmin
        returns (bool)
    {
        require(
            recipient != address(0),
            "airdrop: airdrop to the zero address"
        );

        // if recipient not exist
        if (!_addressExists[recipient]) {
            _addressExists[recipient] = true;
            _addresses[_addressCount++] = recipient;
        }
        _balances[recipient] += amount;
        _totalVt += amount;
        emit Transfer(address(0), recipient, amount);

        return true;
    }

    /**
     * airdrops
     */
    function airdrops(address[] memory recipients, uint256[] memory amounts)
        public
        onlyAdmin
        returns (bool)
    {
        require(
            recipients.length == amounts.length,
            "airdrops: length not equal"
        );

        for (uint256 i = 0; i < recipients.length; i++) {
            if (recipients[i] != address(0)) {
                airdrop(recipients[i], amounts[i]);
            }
        }
        return true;
    }

    /**
     * airdropAll
     */
    function airdropAll() public onlyAdmin returns (bool) {
        _airdrop(0, _addressCount, _totalAirdrop, _totalVt);
        _totalAirdrop = 0;
        return true;
    }

    /**
     * airdrop batch
     */
    function airdropBatch(uint256 count) public onlyAdmin returns (bool) {
        if (_adBatchTotal <= 0) {
            require(
                _totalAirdrop > 0,
                "airdropBatch: airdrop total should bigger than zero"
            );
            _adBatchTotal = _totalAirdrop;
            _adBatchVtTotal = _totalVt;
            _adBatchEnd = _addressCount;
            _adBatchLast = 0;

            _totalAirdrop = 0;
        }

        uint256 end = _adBatchLast + count >= _adBatchEnd
            ? _adBatchEnd
            : _adBatchLast + count;

        _airdrop(_adBatchLast, end, _adBatchTotal, _adBatchVtTotal);

        if (end >= _adBatchEnd) {
            _adBatchTotal = 0;
            _adBatchVtTotal = 0;
            _adBatchEnd = 0;
            _adBatchLast = 0;
        } else {
            _adBatchLast = end;
        }

        return true;
    }

    /**
     * address can get airdrop or not
     */
    function isAddressNoAirdrop(address target)
        public
        view
        onlyAdmin
        returns (bool)
    {
        return _addressNoAirdrop[target];
    }

    /**
     * address airdrop
     */
    function addressAirdrop() public view returns (uint256) {
        return _addressAirdrop[_msgSender()];
    }

    /**
     * receive airdrop
     */
    function receiveAirdrop() public returns (bool) {
        require(
            _addressAirdrop[_msgSender()] > 0,
            "receiveAirdrop: no wait receive airdrop vt"
        );
        uint256 waitReceive = _addressAirdrop[_msgSender()];
        require(
            _balances[_addressAd] >= waitReceive,
            "receiveAirdrop: not enough airdrop vt"
        );
        _balances[_msgSender()] += waitReceive;
        _addressAirdrop[_msgSender()] = 0;
        _balances[_addressAd] -= waitReceive;
        _totalVt += waitReceive;
        emit Transfer(_addressAd, _msgSender(), waitReceive);

        return true;
    }

    /**
     * setNoAirdrop for target address
     */
    function setNoAirdrop(address target, bool noAirdrop)
        public
        onlyAdmin
        returns (bool)
    {
        require(
            _addressNoAirdrop[target] != noAirdrop,
            "setNoAirdrop: same setting."
        );
        _addressNoAirdrop[target] = noAirdrop;
        return true;
    }

    /**
     * freeze
     */
    function freeze(address target, uint256 amount)
        public
        onlyAdmin
        returns (bool)
    {
        require(_balances[target] >= amount, "freeze: freeze amount error");

        _balances[target] -= amount;
        _freezes[target] += amount;
        _totalVt -= amount;
        emit Freeze(target, amount);
        return true;
    }

    /**
     * unfreeze
     */
    function unfreeze(address target, uint256 amount)
        public
        onlyAdmin
        returns (bool)
    {
        require(_freezes[target] >= amount, "unfreeze: unfreeze amount error");

        _balances[target] += amount;
        _freezes[target] -= amount;
        _totalVt += amount;
        emit Unfreeze(target, amount);
        return true;
    }

    /**
     * @dev See {IERC20-freezeOf}.
     */
    function freezeOf(address account) public view returns (uint256) {
        return _freezes[account];
    }

    /**
     * @dev get dev
     */
    function getAddressDev() public view onlyAdmin returns (address) {
        return _addressDev;
    }

    /**
     * @dev set new dev
     */
    function transferDev(address newDev) public onlyAdmin returns (bool) {
        require(newDev != address(0), "transferDev: new address zero");
        if (!_addressExists[newDev]) {
            _addressExists[newDev] = true;
            _addresses[_addressCount++] = newDev;
        }
        uint256 amount = _balances[_addressDev];
        address oldDev = _addressDev;
        _balances[newDev] = amount;
        _balances[oldDev] = 0;
        _addressDev = newDev;

        emit Transfer(oldDev, newDev, amount);

        return true;
    }

    /**
     * @dev get ad
     */
    function getAddressAd() public view onlyAdmin returns (address) {
        return _addressAd;
    }

    /**
     * @dev set new ad
     */
    function transferAd(address newAd) public onlyAdmin returns (bool) {
        require(newAd != address(0), "transferAd: new address zero");
        if (!_addressExists[newAd]) {
            _addressExists[newAd] = true;
            _addresses[_addressCount++] = newAd;
        }
        uint256 amount = _balances[_addressAd];
        address oldAd = _addressAd;
        _balances[newAd] = amount;
        _balances[oldAd] = 0;
        _addressAd = newAd;

        emit Transfer(oldAd, newAd, amount);
        return true;
    }

    /**
     * @dev admin modifier
     */
    modifier onlyAdmin() {
        require(_admins[_msgSender()], "onlyAdmin: caller is not the admin");
        _;
    }

    function addAdmin(address admin) public onlyOwner {
        require(admin != address(0), "addAdmin: admin is not zero");
        require(!_admins[admin], "addAdmin: admin is already admin");
        _admins[admin] = true;
    }

    function removeAdmin(address admin) public onlyOwner {
        require(admin != address(0), "removeAdmin: admin is not zero");
        require(_admins[admin], "removeAdmin: admin is not admin");
        _admins[admin] = false;
    }

    function isAdmin(address admin) public view onlyOwner returns (bool) {
        return _admins[admin];
    }

    function _airdrop(
        uint256 start,
        uint256 end,
        uint256 adTotal,
        uint256 vtTotal
    ) internal {
        require(end > start, "_airdrop: end should bigger than start");
        require(adTotal > 0, "_airdrop: airdrop total should bigger than zero");
        require(vtTotal > 0, "_airdrop: vt total should bigger than zero");

        for (uint256 i = start; i < end; i++) {
            address addr = _addresses[i];
            uint256 balance = _balances[addr];
            if (balance > 0 && addr != _addressAd) {
                uint256 airdropVt = (adTotal * balance) / vtTotal;
                if (_addressNoAirdrop[addr]) {
                    _totalSupply -= airdropVt;
                    _totalBurn += airdropVt;
                    emit Transfer(_addressAd, address(0), airdropVt);
                } else {
                    _addressAirdrop[addr] += airdropVt;
                }
            }
        }
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(
            sender != address(0),
            "_transfer: transfer from the zero address"
        );
        require(
            recipient != address(0),
            "_transfer: transfer to the zero address"
        );

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "_transfer: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }

        // if recipient not exist
        if (!_addressExists[recipient]) {
            _addressExists[recipient] = true;
            _addresses[_addressCount++] = recipient;
        }

        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     */
    function _transferBurn(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(
            sender != address(0),
            "_transferBurn: transfer from the zero address"
        );
        require(
            recipient != address(0),
            "_transferBurn: transfer to the zero address"
        );

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "_transferBurn: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        // if recipient not exist
        if (!_addressExists[recipient]) {
            _addressExists[recipient] = true;
            _addresses[_addressCount++] = recipient;
        }

        if (_totalBurn < _burnStop) {
            // 50% decrease
            uint256 toRecipient = amount / 2;
            _balances[recipient] += toRecipient;
            emit Transfer(sender, recipient, toRecipient);
            // 30% airdrop
            uint256 toAirdrop = (amount * 3) / 10;
            _balances[_addressAd] += toAirdrop;
            _totalAirdrop += toAirdrop;
            _totalVt -= toAirdrop;
            emit Transfer(sender, _addressAd, toAirdrop);
            // 5% developer
            uint256 toDev = (amount * 5) / 100;
            _balances[_addressDev] += toDev;
            emit Transfer(sender, _addressDev, toDev);
            // 15% burn
            uint256 toBurn = (amount * 15) / 100;
            _totalSupply -= toBurn;
            _totalBurn += toBurn;
            _totalVt -= toBurn;
            emit Transfer(sender, address(0), toBurn);
        } else {
            _balances[recipient] += amount;
            emit Transfer(sender, recipient, amount);
        }
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "VegionToken: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "_burn: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "_burn: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;
        _totalBurn += amount;
        _totalVt -= amount;
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "_approve: approve from the zero address");
        require(spender != address(0), "_approve: approve to the zero address");

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

    /**
     * transfer balance to owner
     */
    function withdrawEther(uint256 amount) public onlyOwner {
        require(
            address(this).balance >= amount,
            "withdrawEther: not enough ether balance."
        );
        payable(owner()).transfer(amount);
    }

    /**
     * can accept ether
     */
    receive() external payable {}

    /**
     * @dev Emitted when `value` tokens are freezed.
     */
    event Freeze(address indexed target, uint256 value);

    /**
     * @dev Emitted when `value` tokens are unfreezed.
     */
    event Unfreeze(address indexed target, uint256 value);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"addressDev","type":"address"},{"internalType":"address","name":"addressAd","type":"address"}],"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":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Freeze","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":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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Unfreeze","type":"event"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addressAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addressCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"airdropAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"name":"airdropBatch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrops","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"target","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"freeze","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"freezeOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAddressAd","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAddressDev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"isAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"isAddressNoAirdrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"receiveAirdrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"noAirdrop","type":"bool"}],"name":"setNoAirdrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVt","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":"newAd","type":"address"}],"name":"transferAd","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDev","type":"address"}],"name":"transferDev","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unfreeze","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006005556040518060400160405280600b81526020017f566567696f6e546f6b656e000000000000000000000000000000000000000000815250600c908051906020019062000056929190620007af565b506040518060400160405280600281526020017f5654000000000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000a4929190620007af565b50600060105560006011556000601255600060135560006014556000601555348015620000d057600080fd5b5060405162006ca538038062006ca58339818101604052810190620000f6919062000876565b620001166200010a620006da60201b60201c565b620006e260201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001809062000a0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001f390620009eb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200026e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026590620009c9565b60405180910390fd5b6200027e620007a660201b60201c565b600a6200028c919062000a9b565b6305f5e1006200029d919062000bd8565b6009819055506000600a81905550620002bb620007a660201b60201c565b600a620002c9919062000a9b565b62200b20620002d9919062000bd8565b600b81905550600160036000620002f5620006da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000356620006da60201b60201c565b60046000600560008154809291906200036f9062000cba565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16620004d4576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550816004600060056000815480929190620004839062000cba565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166200062a576001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806004600060056000815480929190620005d99062000cba565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016016600062000681620006da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000d8d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006008905090565b828054620007bd9062000c84565b90600052602060002090601f016020900481019282620007e157600085556200082d565b82601f10620007fc57805160ff19168380011785556200082d565b828001600101855582156200082d579182015b828111156200082c5782518255916020019190600101906200080f565b5b5090506200083c919062000840565b5090565b5b808211156200085b57600081600090555060010162000841565b5090565b600081519050620008708162000d73565b92915050565b600080604083850312156200088a57600080fd5b60006200089a858286016200085f565b9250506020620008ad858286016200085f565b9150509250929050565b6000620008c660258362000a2f565b91507f636f6e7374727563746f723a2064657620616e642061697264726f70206e6f7460008301527f2073616d650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006200092e60228362000a2f565b91507f636f6e7374727563746f723a2061697264726f7020616464726573732065727260008301527f6f720000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000996601e8362000a2f565b91507f636f6e7374727563746f723a206465762061646472657373206572726f7200006000830152602082019050919050565b60006020820190508181036000830152620009e481620008b7565b9050919050565b6000602082019050818103600083015262000a06816200091f565b9050919050565b6000602082019050818103600083015262000a288162000987565b9050919050565b600082825260208201905092915050565b6000808291508390505b600185111562000a925780860481111562000a6a5762000a6962000d08565b5b600185161562000a7a5780820291505b808102905062000a8a8562000d66565b945062000a4a565b94509492505050565b600062000aa88262000c6d565b915062000ab58362000c77565b925062000ae47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000aec565b905092915050565b60008262000afe576001905062000bd1565b8162000b0e576000905062000bd1565b816001811462000b27576002811462000b325762000b68565b600191505062000bd1565b60ff84111562000b475762000b4662000d08565b5b8360020a91508482111562000b615762000b6062000d08565b5b5062000bd1565b5060208310610133831016604e8410600b841016171562000ba25782820a90508381111562000b9c5762000b9b62000d08565b5b62000bd1565b62000bb1848484600162000a40565b9250905081840481111562000bcb5762000bca62000d08565b5b81810290505b9392505050565b600062000be58262000c6d565b915062000bf28362000c6d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c2e5762000c2d62000d08565b5b828202905092915050565b600062000c468262000c4d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000c9d57607f821691505b6020821081141562000cb45762000cb362000d37565b5b50919050565b600062000cc78262000c6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000cfd5762000cfc62000d08565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b62000d7e8162000c39565b811462000d8a57600080fd5b50565b615f088062000d9d6000396000f3fe6080604052600436106102345760003560e01c80636a1ed2aa1161012e578063a340098e116100ab578063d739896b1161006f578063d739896b1461090e578063dd62ed3e1461094b578063ead5855114610988578063f0fbe2e4146109c5578063f2fde38b146109f05761023b565b8063a340098e146107dd578063a457c2d71461081a578063a9059cbb14610857578063cd4217c114610894578063d5609c12146108d15761023b565b80637b46b80b116100f25780637b46b80b146106e25780638ba4cc3c1461071f5780638da5cb5b1461075c57806395d89b41146107875780639d80c818146107b25761023b565b80636a1ed2aa1461060f578063704802751461063a57806370a0823114610663578063715018a6146106a05780637a4c9bc8146106b75761023b565b806327335d30116101bc5780633c9f861d116101805780633c9f861d1461051457806342966c681461053f5780635ce97dbb1461057c5780636564ac3a146105a7578063660c5075146105e45761023b565b806327335d301461041b578063313ce56714610446578063332ca4f21461047157806339509351146104ae5780633bed33ce146104eb5761023b565b806318160ddd1161020357806318160ddd1461030e57806323b872dd146103395780632428825d1461037657806324bce60c146103a157806324d7806c146103de5761023b565b806306fdde0314610240578063095ea7b31461026b578063131d54ed146102a85780631785f53c146102e55761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610a19565b604051610262919061568b565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d919061498b565b610aab565b60405161029f9190615670565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca919061489b565b610ac9565b6040516102dc9190615670565b60405180910390f35b3480156102f157600080fd5b5061030c6004803603810190610307919061489b565b610bb2565b005b34801561031a57600080fd5b50610323610d85565b6040516103309190615acd565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190614900565b610d8f565b60405161036d9190615670565b60405180910390f35b34801561038257600080fd5b5061038b610e86565b6040516103989190615670565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c3919061498b565b6111cf565b6040516103d59190615670565b60405180910390f35b3480156103ea57600080fd5b506104056004803603810190610400919061489b565b611403565b6040516104129190615670565b60405180910390f35b34801561042757600080fd5b506104306114d5565b60405161043d9190615655565b60405180910390f35b34801561045257600080fd5b5061045b611592565b6040516104689190615ae8565b60405180910390f35b34801561047d57600080fd5b506104986004803603810190610493919061489b565b61159b565b6040516104a59190615670565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d0919061498b565b611979565b6040516104e29190615670565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190614a33565b611a25565b005b34801561052057600080fd5b50610529611b35565b6040516105369190615acd565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190614a33565b611b3f565b6040516105739190615670565b60405180910390f35b34801561058857600080fd5b50610591611b5b565b60405161059e9190615acd565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c9919061494f565b611bf8565b6040516105db9190615670565b60405180910390f35b3480156105f057600080fd5b506105f9611d81565b6040516106069190615670565b60405180910390f35b34801561061b57600080fd5b50610624611e38565b6040516106319190615655565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c919061489b565b611ef5565b005b34801561066f57600080fd5b5061068a6004803603810190610685919061489b565b6120c9565b6040516106979190615acd565b60405180910390f35b3480156106ac57600080fd5b506106b5612112565b005b3480156106c357600080fd5b506106cc61219a565b6040516106d99190615acd565b60405180910390f35b3480156106ee57600080fd5b506107096004803603810190610704919061498b565b612237565b6040516107169190615670565b60405180910390f35b34801561072b57600080fd5b506107466004803603810190610741919061498b565b61246b565b6040516107539190615670565b60405180910390f35b34801561076857600080fd5b50610771612761565b60405161077e9190615655565b60405180910390f35b34801561079357600080fd5b5061079c61278a565b6040516107a9919061568b565b60405180910390f35b3480156107be57600080fd5b506107c761281c565b6040516107d49190615acd565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff919061489b565b6128b9565b6040516108119190615670565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c919061498b565b612c97565b60405161084e9190615670565b60405180910390f35b34801561086357600080fd5b5061087e6004803603810190610879919061498b565b612d82565b60405161088b9190615670565b60405180910390f35b3480156108a057600080fd5b506108bb60048036038101906108b6919061489b565b612da0565b6040516108c89190615acd565b60405180910390f35b3480156108dd57600080fd5b506108f860048036038101906108f391906149c7565b612de9565b6040516109059190615670565b60405180910390f35b34801561091a57600080fd5b5061093560048036038101906109309190614a33565b612fec565b6040516109429190615670565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d91906148c4565b613180565b60405161097f9190615acd565b60405180910390f35b34801561099457600080fd5b506109af60048036038101906109aa919061489b565b613207565b6040516109bc9190615670565b60405180910390f35b3480156109d157600080fd5b506109da6132f0565b6040516109e79190615acd565b60405180910390f35b3480156109fc57600080fd5b50610a176004803603810190610a12919061489b565b61333e565b005b6060600c8054610a2890615d45565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5490615d45565b8015610aa15780601f10610a7657610100808354040283529160200191610aa1565b820191906000526020600020905b815481529060010190602001808311610a8457829003601f168201915b5050505050905090565b6000610abf610ab8613436565b848461343e565b6001905092915050565b600060166000610ad7613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b559061582d565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bba613436565b73ffffffffffffffffffffffffffffffffffffffff16610bd8612761565b73ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c259061596d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590615a4d565b60405180910390fd5b601660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d219061586d565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954905090565b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ddb613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5290615a2d565b60405180910390fd5b610e6f85610e67613436565b85840361343e565b610e7a858585613609565b60019150509392505050565b600080600f6000610e95613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f079061570d565b60405180910390fd5b6000600f6000610f1e613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508060016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff69061578d565b60405180910390fd5b806001600061100c613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110559190615ba8565b925050819055506000600f600061106a613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111199190615c89565b9250508190555080601160008282546111329190615ba8565b92505081905550611141613436565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111bf9190615acd565b60405180910390a3600191505090565b6000601660006111dd613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b9061582d565b60405180910390fd5b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd9061592d565b60405180910390fd5b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113359190615c89565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138b9190615ba8565b9250508190555081601160008282546113a49190615c89565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040516113f19190615acd565b60405180910390a26001905092915050565b600061140d613436565b73ffffffffffffffffffffffffffffffffffffffff1661142b612761565b73ffffffffffffffffffffffffffffffffffffffff1614611481576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114789061596d565b60405180910390fd5b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601660006114e3613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661156a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115619061582d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006008905090565b6000601660006115a9613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611630576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116279061582d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116979061598d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117b2576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600460006005600081548092919061176190615d77565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600060016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119669190615acd565b60405180910390a3600192505050919050565b6000611a1b611986613436565b848460086000611994613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a169190615ba8565b61343e565b6001905092915050565b611a2d613436565b73ffffffffffffffffffffffffffffffffffffffff16611a4b612761565b73ffffffffffffffffffffffffffffffffffffffff1614611aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a989061596d565b60405180910390fd5b80471015611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb906158ed565b60405180910390fd5b611aec612761565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b31573d6000803e3d6000fd5b5050565b6000600a54905090565b6000611b52611b4c613436565b83613989565b60019050919050565b600060166000611b69613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be79061582d565b60405180910390fd5b601054905090565b600060166000611c06613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c849061582d565b60405180910390fd5b811515600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d17906157cd565b60405180910390fd5b81600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905092915050565b600060166000611d8f613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0d9061582d565b60405180910390fd5b611e296000600554601054601154613b7c565b60006010819055506001905090565b600060166000611e46613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec49061582d565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611efd613436565b73ffffffffffffffffffffffffffffffffffffffff16611f1b612761565b73ffffffffffffffffffffffffffffffffffffffff1614611f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f689061596d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd8906158ad565b60405180910390fd5b601660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561206e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120659061584d565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61211a613436565b73ffffffffffffffffffffffffffffffffffffffff16612138612761565b73ffffffffffffffffffffffffffffffffffffffff161461218e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121859061596d565b60405180910390fd5b6121986000613ed2565b565b6000601660006121a8613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661222f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122269061582d565b60405180910390fd5b601154905090565b600060166000612245613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c39061582d565b60405180910390fd5b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561234e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612345906159ed565b60405180910390fd5b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461239d9190615ba8565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123f39190615c89565b92505081905550816011600082825461240c9190615ba8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040516124599190615acd565b60405180910390a26001905092915050565b600060166000612479613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f79061582d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612570576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612567906156cd565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612682576001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600460006005600081548092919061263190615d77565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126d19190615ba8565b9250508190555081601160008282546126ea9190615ba8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161274f9190615acd565b60405180910390a36001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d805461279990615d45565b80601f01602080910402602001604051908101604052809291908181526020018280546127c590615d45565b80156128125780601f106127e757610100808354040283529160200191612812565b820191906000526020600020905b8154815290600101906020018083116127f557829003601f168201915b5050505050905090565b60006016600061282a613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166128b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a89061582d565b60405180910390fd5b600554905090565b6000601660006128c7613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661294e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129459061582d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b5906156ad565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ad0576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550816004600060056000815480929190612a7f90615d77565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600060016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c849190615acd565b60405180910390a3600192505050919050565b60008060086000612ca6613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5a9061588d565b60405180910390fd5b612d77612d6e613436565b8585840361343e565b600191505092915050565b6000612d96612d8f613436565b8484613f96565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060166000612df7613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e759061582d565b60405180910390fd5b8151835114612ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb990615a6d565b60405180910390fd5b60005b8351811015612fe157600073ffffffffffffffffffffffffffffffffffffffff16848281518110612f1f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612fce57612fcc848281518110612f7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151848381518110612fbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015161246b565b505b8080612fd990615d77565b915050612ec5565b506001905092915050565b600060166000612ffa613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613081576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130789061582d565b60405180910390fd5b6000601454116130fc576000601054116130d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c7906156ed565b60405180910390fd5b601054601481905550601154601581905550600554601281905550600060138190555060006010819055505b60006012548360135461310f9190615ba8565b101561312857826013546131239190615ba8565b61312c565b6012545b905061314060135482601454601554613b7c565b601254811061316e576000601481905550600060158190555060006012819055506000601381905550613176565b806013819055505b6001915050919050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060166000613215613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661329c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132939061582d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600f60006132fe613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b613346613436565b73ffffffffffffffffffffffffffffffffffffffff16613364612761565b73ffffffffffffffffffffffffffffffffffffffff16146133ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b19061596d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561342a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134219061576d565b60405180910390fd5b61343381613ed2565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a5906157ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561351e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351590615a0d565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135fc9190615acd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613670906157ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136e09061594d565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613767906158cd565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138c8576001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600460006005600081548092919061387790615d77565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139179190615ba8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161397b9190615acd565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f0906159cd565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a77906159ad565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160096000828254613ad89190615c89565b9250508190555081600a6000828254613af19190615ba8565b925050819055508160116000828254613b0a9190615c89565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b6f9190615acd565b60405180910390a3505050565b838311613bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bb590615aad565b60405180910390fd5b60008211613c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf890615a8d565b60405180910390fd5b60008111613c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3b9061580d565b60405180910390fd5b60008490505b83811015613ecb5760006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081118015613d2c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613eb6576000848287613d409190615c2f565b613d4a9190615bfe565b9050600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e5d578060096000828254613db09190615c89565b9250508190555080600a6000828254613dc99190615ba8565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613e509190615acd565b60405180910390a3613eb4565b80600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613eac9190615ba8565b925050819055505b505b50508080613ec390615d77565b915050613c4a565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ffd9061590d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161406d9061572d565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140f49061574d565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614255576001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600460006005600081548092919061420490615d77565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600b54600a54101561466e5760006002836142709190615bfe565b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142c19190615ba8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143259190615acd565b60405180910390a36000600a60038561433e9190615c2f565b6143489190615bfe565b90508060016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546143bb9190615ba8565b9250508190555080601060008282546143d49190615ba8565b9250508190555080601160008282546143ed9190615c89565b92505081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144739190615acd565b60405180910390a36000606460058661448c9190615c2f565b6144969190615bfe565b90508060016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546145099190615ba8565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161458f9190615acd565b60405180910390a360006064600f876145a89190615c2f565b6145b29190615bfe565b905080600960008282546145c69190615c89565b9250508190555080600a60008282546145df9190615ba8565b9250508190555080601160008282546145f89190615c89565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161465d9190615acd565b60405180910390a35050505061472a565b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546146bd9190615ba8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516147219190615acd565b60405180910390a35b50505050565b600061474361473e84615b34565b615b03565b9050808382526020820190508285602086028201111561476257600080fd5b60005b8581101561479257816147788882614808565b845260208401935060208301925050600181019050614765565b5050509392505050565b60006147af6147aa84615b60565b615b03565b905080838252602082019050828560208602820111156147ce57600080fd5b60005b858110156147fe57816147e48882614886565b8452602084019350602083019250506001810190506147d1565b5050509392505050565b60008135905061481781615e8d565b92915050565b600082601f83011261482e57600080fd5b813561483e848260208601614730565b91505092915050565b600082601f83011261485857600080fd5b813561486884826020860161479c565b91505092915050565b60008135905061488081615ea4565b92915050565b60008135905061489581615ebb565b92915050565b6000602082840312156148ad57600080fd5b60006148bb84828501614808565b91505092915050565b600080604083850312156148d757600080fd5b60006148e585828601614808565b92505060206148f685828601614808565b9150509250929050565b60008060006060848603121561491557600080fd5b600061492386828701614808565b935050602061493486828701614808565b925050604061494586828701614886565b9150509250925092565b6000806040838503121561496257600080fd5b600061497085828601614808565b925050602061498185828601614871565b9150509250929050565b6000806040838503121561499e57600080fd5b60006149ac85828601614808565b92505060206149bd85828601614886565b9150509250929050565b600080604083850312156149da57600080fd5b600083013567ffffffffffffffff8111156149f457600080fd5b614a008582860161481d565b925050602083013567ffffffffffffffff811115614a1d57600080fd5b614a2985828601614847565b9150509250929050565b600060208284031215614a4557600080fd5b6000614a5384828501614886565b91505092915050565b614a6581615cbd565b82525050565b614a7481615ccf565b82525050565b6000614a8582615b8c565b614a8f8185615b97565b9350614a9f818560208601615d12565b614aa881615e7c565b840191505092915050565b6000614ac0601c83615b97565b91507f7472616e7366657241643a206e65772061646472657373207a65726f000000006000830152602082019050919050565b6000614b00602483615b97565b91507f61697264726f703a2061697264726f7020746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614b66603383615b97565b91507f61697264726f7042617463683a2061697264726f7020746f74616c2073686f7560008301527f6c6420626967676572207468616e207a65726f000000000000000000000000006020830152604082019050919050565b6000614bcc602a83615b97565b91507f7265636569766541697264726f703a206e6f207761697420726563656976652060008301527f61697264726f70207674000000000000000000000000000000000000000000006020830152604082019050919050565b6000614c32602b83615b97565b91507f5f7472616e736665724275726e3a207472616e7366657220746f20746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000614c98602e83615b97565b91507f5f7472616e736665724275726e3a207472616e7366657220616d6f756e74206560008301527f7863656564732062616c616e63650000000000000000000000000000000000006020830152604082019050919050565b6000614cfe602683615b97565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614d64602583615b97565b91507f7265636569766541697264726f703a206e6f7420656e6f75676820616972647260008301527f6f702076740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614dca602983615b97565b91507f5f7472616e736665723a207472616e736665722066726f6d20746865207a657260008301527f6f206164647265737300000000000000000000000000000000000000000000006020830152604082019050919050565b6000614e30601b83615b97565b91507f7365744e6f41697264726f703a2073616d652073657474696e672e00000000006000830152602082019050919050565b6000614e70602783615b97565b91507f5f617070726f76653a20617070726f76652066726f6d20746865207a65726f2060008301527f61646472657373000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614ed6602a83615b97565b91507f5f61697264726f703a20767420746f74616c2073686f756c642062696767657260008301527f207468616e207a65726f000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f3c602283615b97565b91507f6f6e6c7941646d696e3a2063616c6c6572206973206e6f74207468652061646d60008301527f696e0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614fa2602083615b97565b91507f61646441646d696e3a2061646d696e20697320616c72656164792061646d696e6000830152602082019050919050565b6000614fe2601f83615b97565b91507f72656d6f766541646d696e3a2061646d696e206973206e6f742061646d696e006000830152602082019050919050565b6000615022603183615b97565b91507f6465637265617365416c6c6f77616e63653a2064656372656173656420616c6c60008301527f6f77616e63652062656c6f77207a65726f0000000000000000000000000000006020830152604082019050919050565b6000615088601b83615b97565b91507f61646441646d696e3a2061646d696e206973206e6f74207a65726f00000000006000830152602082019050919050565b60006150c8602a83615b97565b91507f5f7472616e736665723a207472616e7366657220616d6f756e7420657863656560008301527f64732062616c616e6365000000000000000000000000000000000000000000006020830152604082019050919050565b600061512e602883615b97565b91507f776974686472617745746865723a206e6f7420656e6f7567682065746865722060008301527f62616c616e63652e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615194602d83615b97565b91507f5f7472616e736665724275726e3a207472616e736665722066726f6d2074686560008301527f207a65726f2061646472657373000000000000000000000000000000000000006020830152604082019050919050565b60006151fa601b83615b97565b91507f667265657a653a20667265657a6520616d6f756e74206572726f7200000000006000830152602082019050919050565b600061523a602783615b97565b91507f5f7472616e736665723a207472616e7366657220746f20746865207a65726f2060008301527f61646472657373000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006152a0602083615b97565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006152e0601d83615b97565b91507f7472616e736665724465763a206e65772061646472657373207a65726f0000006000830152602082019050919050565b6000615320602283615b97565b91507f5f6275726e3a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615386602183615b97565b91507f5f6275726e3a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006153ec601f83615b97565b91507f756e667265657a653a20756e667265657a6520616d6f756e74206572726f72006000830152602082019050919050565b600061542c602583615b97565b91507f5f617070726f76653a20617070726f766520746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615492602f83615b97565b91507f7472616e7366657246726f6d3a207472616e7366657220616d6f756e7420657860008301527f636565647320616c6c6f77616e636500000000000000000000000000000000006020830152604082019050919050565b60006154f8601e83615b97565b91507f72656d6f766541646d696e3a2061646d696e206973206e6f74207a65726f00006000830152602082019050919050565b6000615538601a83615b97565b91507f61697264726f70733a206c656e677468206e6f7420657175616c0000000000006000830152602082019050919050565b6000615578602f83615b97565b91507f5f61697264726f703a2061697264726f7020746f74616c2073686f756c64206260008301527f6967676572207468616e207a65726f00000000000000000000000000000000006020830152604082019050919050565b60006155de602683615b97565b91507f5f61697264726f703a20656e642073686f756c6420626967676572207468616e60008301527f20737461727400000000000000000000000000000000000000000000000000006020830152604082019050919050565b61564081615cfb565b82525050565b61564f81615d05565b82525050565b600060208201905061566a6000830184614a5c565b92915050565b60006020820190506156856000830184614a6b565b92915050565b600060208201905081810360008301526156a58184614a7a565b905092915050565b600060208201905081810360008301526156c681614ab3565b9050919050565b600060208201905081810360008301526156e681614af3565b9050919050565b6000602082019050818103600083015261570681614b59565b9050919050565b6000602082019050818103600083015261572681614bbf565b9050919050565b6000602082019050818103600083015261574681614c25565b9050919050565b6000602082019050818103600083015261576681614c8b565b9050919050565b6000602082019050818103600083015261578681614cf1565b9050919050565b600060208201905081810360008301526157a681614d57565b9050919050565b600060208201905081810360008301526157c681614dbd565b9050919050565b600060208201905081810360008301526157e681614e23565b9050919050565b6000602082019050818103600083015261580681614e63565b9050919050565b6000602082019050818103600083015261582681614ec9565b9050919050565b6000602082019050818103600083015261584681614f2f565b9050919050565b6000602082019050818103600083015261586681614f95565b9050919050565b6000602082019050818103600083015261588681614fd5565b9050919050565b600060208201905081810360008301526158a681615015565b9050919050565b600060208201905081810360008301526158c68161507b565b9050919050565b600060208201905081810360008301526158e6816150bb565b9050919050565b6000602082019050818103600083015261590681615121565b9050919050565b6000602082019050818103600083015261592681615187565b9050919050565b60006020820190508181036000830152615946816151ed565b9050919050565b600060208201905081810360008301526159668161522d565b9050919050565b6000602082019050818103600083015261598681615293565b9050919050565b600060208201905081810360008301526159a6816152d3565b9050919050565b600060208201905081810360008301526159c681615313565b9050919050565b600060208201905081810360008301526159e681615379565b9050919050565b60006020820190508181036000830152615a06816153df565b9050919050565b60006020820190508181036000830152615a268161541f565b9050919050565b60006020820190508181036000830152615a4681615485565b9050919050565b60006020820190508181036000830152615a66816154eb565b9050919050565b60006020820190508181036000830152615a868161552b565b9050919050565b60006020820190508181036000830152615aa68161556b565b9050919050565b60006020820190508181036000830152615ac6816155d1565b9050919050565b6000602082019050615ae26000830184615637565b92915050565b6000602082019050615afd6000830184615646565b92915050565b6000604051905081810181811067ffffffffffffffff82111715615b2a57615b29615e4d565b5b8060405250919050565b600067ffffffffffffffff821115615b4f57615b4e615e4d565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615b7b57615b7a615e4d565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000615bb382615cfb565b9150615bbe83615cfb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615bf357615bf2615dc0565b5b828201905092915050565b6000615c0982615cfb565b9150615c1483615cfb565b925082615c2457615c23615def565b5b828204905092915050565b6000615c3a82615cfb565b9150615c4583615cfb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615c7e57615c7d615dc0565b5b828202905092915050565b6000615c9482615cfb565b9150615c9f83615cfb565b925082821015615cb257615cb1615dc0565b5b828203905092915050565b6000615cc882615cdb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015615d30578082015181840152602081019050615d15565b83811115615d3f576000848401525b50505050565b60006002820490506001821680615d5d57607f821691505b60208210811415615d7157615d70615e1e565b5b50919050565b6000615d8282615cfb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615db557615db4615dc0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b615e9681615cbd565b8114615ea157600080fd5b50565b615ead81615ccf565b8114615eb857600080fd5b50565b615ec481615cfb565b8114615ecf57600080fd5b5056fea264697066735822122077563bf88ac284b7785e9bb44681de9df806badf6c7f0203cca63dae3186b54e64736f6c63430008000033000000000000000000000000b99b4f25e0a7cfb2843d8658b078bbcae6b9e6d900000000000000000000000039f3407daf7cb68de70b851ed5de49e89b1c0394

Deployed Bytecode

0x6080604052600436106102345760003560e01c80636a1ed2aa1161012e578063a340098e116100ab578063d739896b1161006f578063d739896b1461090e578063dd62ed3e1461094b578063ead5855114610988578063f0fbe2e4146109c5578063f2fde38b146109f05761023b565b8063a340098e146107dd578063a457c2d71461081a578063a9059cbb14610857578063cd4217c114610894578063d5609c12146108d15761023b565b80637b46b80b116100f25780637b46b80b146106e25780638ba4cc3c1461071f5780638da5cb5b1461075c57806395d89b41146107875780639d80c818146107b25761023b565b80636a1ed2aa1461060f578063704802751461063a57806370a0823114610663578063715018a6146106a05780637a4c9bc8146106b75761023b565b806327335d30116101bc5780633c9f861d116101805780633c9f861d1461051457806342966c681461053f5780635ce97dbb1461057c5780636564ac3a146105a7578063660c5075146105e45761023b565b806327335d301461041b578063313ce56714610446578063332ca4f21461047157806339509351146104ae5780633bed33ce146104eb5761023b565b806318160ddd1161020357806318160ddd1461030e57806323b872dd146103395780632428825d1461037657806324bce60c146103a157806324d7806c146103de5761023b565b806306fdde0314610240578063095ea7b31461026b578063131d54ed146102a85780631785f53c146102e55761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610a19565b604051610262919061568b565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d919061498b565b610aab565b60405161029f9190615670565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca919061489b565b610ac9565b6040516102dc9190615670565b60405180910390f35b3480156102f157600080fd5b5061030c6004803603810190610307919061489b565b610bb2565b005b34801561031a57600080fd5b50610323610d85565b6040516103309190615acd565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190614900565b610d8f565b60405161036d9190615670565b60405180910390f35b34801561038257600080fd5b5061038b610e86565b6040516103989190615670565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c3919061498b565b6111cf565b6040516103d59190615670565b60405180910390f35b3480156103ea57600080fd5b506104056004803603810190610400919061489b565b611403565b6040516104129190615670565b60405180910390f35b34801561042757600080fd5b506104306114d5565b60405161043d9190615655565b60405180910390f35b34801561045257600080fd5b5061045b611592565b6040516104689190615ae8565b60405180910390f35b34801561047d57600080fd5b506104986004803603810190610493919061489b565b61159b565b6040516104a59190615670565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d0919061498b565b611979565b6040516104e29190615670565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190614a33565b611a25565b005b34801561052057600080fd5b50610529611b35565b6040516105369190615acd565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190614a33565b611b3f565b6040516105739190615670565b60405180910390f35b34801561058857600080fd5b50610591611b5b565b60405161059e9190615acd565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c9919061494f565b611bf8565b6040516105db9190615670565b60405180910390f35b3480156105f057600080fd5b506105f9611d81565b6040516106069190615670565b60405180910390f35b34801561061b57600080fd5b50610624611e38565b6040516106319190615655565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c919061489b565b611ef5565b005b34801561066f57600080fd5b5061068a6004803603810190610685919061489b565b6120c9565b6040516106979190615acd565b60405180910390f35b3480156106ac57600080fd5b506106b5612112565b005b3480156106c357600080fd5b506106cc61219a565b6040516106d99190615acd565b60405180910390f35b3480156106ee57600080fd5b506107096004803603810190610704919061498b565b612237565b6040516107169190615670565b60405180910390f35b34801561072b57600080fd5b506107466004803603810190610741919061498b565b61246b565b6040516107539190615670565b60405180910390f35b34801561076857600080fd5b50610771612761565b60405161077e9190615655565b60405180910390f35b34801561079357600080fd5b5061079c61278a565b6040516107a9919061568b565b60405180910390f35b3480156107be57600080fd5b506107c761281c565b6040516107d49190615acd565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff919061489b565b6128b9565b6040516108119190615670565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c919061498b565b612c97565b60405161084e9190615670565b60405180910390f35b34801561086357600080fd5b5061087e6004803603810190610879919061498b565b612d82565b60405161088b9190615670565b60405180910390f35b3480156108a057600080fd5b506108bb60048036038101906108b6919061489b565b612da0565b6040516108c89190615acd565b60405180910390f35b3480156108dd57600080fd5b506108f860048036038101906108f391906149c7565b612de9565b6040516109059190615670565b60405180910390f35b34801561091a57600080fd5b5061093560048036038101906109309190614a33565b612fec565b6040516109429190615670565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d91906148c4565b613180565b60405161097f9190615acd565b60405180910390f35b34801561099457600080fd5b506109af60048036038101906109aa919061489b565b613207565b6040516109bc9190615670565b60405180910390f35b3480156109d157600080fd5b506109da6132f0565b6040516109e79190615acd565b60405180910390f35b3480156109fc57600080fd5b50610a176004803603810190610a12919061489b565b61333e565b005b6060600c8054610a2890615d45565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5490615d45565b8015610aa15780601f10610a7657610100808354040283529160200191610aa1565b820191906000526020600020905b815481529060010190602001808311610a8457829003601f168201915b5050505050905090565b6000610abf610ab8613436565b848461343e565b6001905092915050565b600060166000610ad7613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b559061582d565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bba613436565b73ffffffffffffffffffffffffffffffffffffffff16610bd8612761565b73ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c259061596d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590615a4d565b60405180910390fd5b601660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d219061586d565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954905090565b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ddb613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5290615a2d565b60405180910390fd5b610e6f85610e67613436565b85840361343e565b610e7a858585613609565b60019150509392505050565b600080600f6000610e95613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f079061570d565b60405180910390fd5b6000600f6000610f1e613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508060016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff69061578d565b60405180910390fd5b806001600061100c613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110559190615ba8565b925050819055506000600f600061106a613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111199190615c89565b9250508190555080601160008282546111329190615ba8565b92505081905550611141613436565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111bf9190615acd565b60405180910390a3600191505090565b6000601660006111dd613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b9061582d565b60405180910390fd5b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd9061592d565b60405180910390fd5b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113359190615c89565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138b9190615ba8565b9250508190555081601160008282546113a49190615c89565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040516113f19190615acd565b60405180910390a26001905092915050565b600061140d613436565b73ffffffffffffffffffffffffffffffffffffffff1661142b612761565b73ffffffffffffffffffffffffffffffffffffffff1614611481576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114789061596d565b60405180910390fd5b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601660006114e3613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661156a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115619061582d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006008905090565b6000601660006115a9613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611630576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116279061582d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116979061598d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117b2576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600460006005600081548092919061176190615d77565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600060016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119669190615acd565b60405180910390a3600192505050919050565b6000611a1b611986613436565b848460086000611994613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a169190615ba8565b61343e565b6001905092915050565b611a2d613436565b73ffffffffffffffffffffffffffffffffffffffff16611a4b612761565b73ffffffffffffffffffffffffffffffffffffffff1614611aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a989061596d565b60405180910390fd5b80471015611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb906158ed565b60405180910390fd5b611aec612761565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b31573d6000803e3d6000fd5b5050565b6000600a54905090565b6000611b52611b4c613436565b83613989565b60019050919050565b600060166000611b69613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be79061582d565b60405180910390fd5b601054905090565b600060166000611c06613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c849061582d565b60405180910390fd5b811515600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d17906157cd565b60405180910390fd5b81600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905092915050565b600060166000611d8f613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0d9061582d565b60405180910390fd5b611e296000600554601054601154613b7c565b60006010819055506001905090565b600060166000611e46613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec49061582d565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611efd613436565b73ffffffffffffffffffffffffffffffffffffffff16611f1b612761565b73ffffffffffffffffffffffffffffffffffffffff1614611f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f689061596d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd8906158ad565b60405180910390fd5b601660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561206e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120659061584d565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61211a613436565b73ffffffffffffffffffffffffffffffffffffffff16612138612761565b73ffffffffffffffffffffffffffffffffffffffff161461218e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121859061596d565b60405180910390fd5b6121986000613ed2565b565b6000601660006121a8613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661222f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122269061582d565b60405180910390fd5b601154905090565b600060166000612245613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c39061582d565b60405180910390fd5b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561234e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612345906159ed565b60405180910390fd5b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461239d9190615ba8565b9250508190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123f39190615c89565b92505081905550816011600082825461240c9190615ba8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040516124599190615acd565b60405180910390a26001905092915050565b600060166000612479613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f79061582d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612570576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612567906156cd565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612682576001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600460006005600081548092919061263190615d77565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126d19190615ba8565b9250508190555081601160008282546126ea9190615ba8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161274f9190615acd565b60405180910390a36001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d805461279990615d45565b80601f01602080910402602001604051908101604052809291908181526020018280546127c590615d45565b80156128125780601f106127e757610100808354040283529160200191612812565b820191906000526020600020905b8154815290600101906020018083116127f557829003601f168201915b5050505050905090565b60006016600061282a613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166128b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a89061582d565b60405180910390fd5b600554905090565b6000601660006128c7613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661294e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129459061582d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b5906156ad565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ad0576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550816004600060056000815480929190612a7f90615d77565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600060016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c849190615acd565b60405180910390a3600192505050919050565b60008060086000612ca6613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5a9061588d565b60405180910390fd5b612d77612d6e613436565b8585840361343e565b600191505092915050565b6000612d96612d8f613436565b8484613f96565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060166000612df7613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e759061582d565b60405180910390fd5b8151835114612ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb990615a6d565b60405180910390fd5b60005b8351811015612fe157600073ffffffffffffffffffffffffffffffffffffffff16848281518110612f1f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612fce57612fcc848281518110612f7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151848381518110612fbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015161246b565b505b8080612fd990615d77565b915050612ec5565b506001905092915050565b600060166000612ffa613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613081576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130789061582d565b60405180910390fd5b6000601454116130fc576000601054116130d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c7906156ed565b60405180910390fd5b601054601481905550601154601581905550600554601281905550600060138190555060006010819055505b60006012548360135461310f9190615ba8565b101561312857826013546131239190615ba8565b61312c565b6012545b905061314060135482601454601554613b7c565b601254811061316e576000601481905550600060158190555060006012819055506000601381905550613176565b806013819055505b6001915050919050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060166000613215613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661329c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132939061582d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600f60006132fe613436565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b613346613436565b73ffffffffffffffffffffffffffffffffffffffff16613364612761565b73ffffffffffffffffffffffffffffffffffffffff16146133ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b19061596d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561342a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134219061576d565b60405180910390fd5b61343381613ed2565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a5906157ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561351e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351590615a0d565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135fc9190615acd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613670906157ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136e09061594d565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613770576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613767906158cd565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138c8576001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600460006005600081548092919061387790615d77565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139179190615ba8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161397b9190615acd565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f0906159cd565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a77906159ad565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160096000828254613ad89190615c89565b9250508190555081600a6000828254613af19190615ba8565b925050819055508160116000828254613b0a9190615c89565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b6f9190615acd565b60405180910390a3505050565b838311613bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bb590615aad565b60405180910390fd5b60008211613c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf890615a8d565b60405180910390fd5b60008111613c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3b9061580d565b60405180910390fd5b60008490505b83811015613ecb5760006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081118015613d2c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613eb6576000848287613d409190615c2f565b613d4a9190615bfe565b9050600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e5d578060096000828254613db09190615c89565b9250508190555080600a6000828254613dc99190615ba8565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613e509190615acd565b60405180910390a3613eb4565b80600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613eac9190615ba8565b925050819055505b505b50508080613ec390615d77565b915050613c4a565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ffd9061590d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161406d9061572d565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140f49061574d565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614255576001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600460006005600081548092919061420490615d77565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600b54600a54101561466e5760006002836142709190615bfe565b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142c19190615ba8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143259190615acd565b60405180910390a36000600a60038561433e9190615c2f565b6143489190615bfe565b90508060016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546143bb9190615ba8565b9250508190555080601060008282546143d49190615ba8565b9250508190555080601160008282546143ed9190615c89565b92505081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144739190615acd565b60405180910390a36000606460058661448c9190615c2f565b6144969190615bfe565b90508060016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546145099190615ba8565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161458f9190615acd565b60405180910390a360006064600f876145a89190615c2f565b6145b29190615bfe565b905080600960008282546145c69190615c89565b9250508190555080600a60008282546145df9190615ba8565b9250508190555080601160008282546145f89190615c89565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161465d9190615acd565b60405180910390a35050505061472a565b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546146bd9190615ba8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516147219190615acd565b60405180910390a35b50505050565b600061474361473e84615b34565b615b03565b9050808382526020820190508285602086028201111561476257600080fd5b60005b8581101561479257816147788882614808565b845260208401935060208301925050600181019050614765565b5050509392505050565b60006147af6147aa84615b60565b615b03565b905080838252602082019050828560208602820111156147ce57600080fd5b60005b858110156147fe57816147e48882614886565b8452602084019350602083019250506001810190506147d1565b5050509392505050565b60008135905061481781615e8d565b92915050565b600082601f83011261482e57600080fd5b813561483e848260208601614730565b91505092915050565b600082601f83011261485857600080fd5b813561486884826020860161479c565b91505092915050565b60008135905061488081615ea4565b92915050565b60008135905061489581615ebb565b92915050565b6000602082840312156148ad57600080fd5b60006148bb84828501614808565b91505092915050565b600080604083850312156148d757600080fd5b60006148e585828601614808565b92505060206148f685828601614808565b9150509250929050565b60008060006060848603121561491557600080fd5b600061492386828701614808565b935050602061493486828701614808565b925050604061494586828701614886565b9150509250925092565b6000806040838503121561496257600080fd5b600061497085828601614808565b925050602061498185828601614871565b9150509250929050565b6000806040838503121561499e57600080fd5b60006149ac85828601614808565b92505060206149bd85828601614886565b9150509250929050565b600080604083850312156149da57600080fd5b600083013567ffffffffffffffff8111156149f457600080fd5b614a008582860161481d565b925050602083013567ffffffffffffffff811115614a1d57600080fd5b614a2985828601614847565b9150509250929050565b600060208284031215614a4557600080fd5b6000614a5384828501614886565b91505092915050565b614a6581615cbd565b82525050565b614a7481615ccf565b82525050565b6000614a8582615b8c565b614a8f8185615b97565b9350614a9f818560208601615d12565b614aa881615e7c565b840191505092915050565b6000614ac0601c83615b97565b91507f7472616e7366657241643a206e65772061646472657373207a65726f000000006000830152602082019050919050565b6000614b00602483615b97565b91507f61697264726f703a2061697264726f7020746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614b66603383615b97565b91507f61697264726f7042617463683a2061697264726f7020746f74616c2073686f7560008301527f6c6420626967676572207468616e207a65726f000000000000000000000000006020830152604082019050919050565b6000614bcc602a83615b97565b91507f7265636569766541697264726f703a206e6f207761697420726563656976652060008301527f61697264726f70207674000000000000000000000000000000000000000000006020830152604082019050919050565b6000614c32602b83615b97565b91507f5f7472616e736665724275726e3a207472616e7366657220746f20746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000614c98602e83615b97565b91507f5f7472616e736665724275726e3a207472616e7366657220616d6f756e74206560008301527f7863656564732062616c616e63650000000000000000000000000000000000006020830152604082019050919050565b6000614cfe602683615b97565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614d64602583615b97565b91507f7265636569766541697264726f703a206e6f7420656e6f75676820616972647260008301527f6f702076740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614dca602983615b97565b91507f5f7472616e736665723a207472616e736665722066726f6d20746865207a657260008301527f6f206164647265737300000000000000000000000000000000000000000000006020830152604082019050919050565b6000614e30601b83615b97565b91507f7365744e6f41697264726f703a2073616d652073657474696e672e00000000006000830152602082019050919050565b6000614e70602783615b97565b91507f5f617070726f76653a20617070726f76652066726f6d20746865207a65726f2060008301527f61646472657373000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614ed6602a83615b97565b91507f5f61697264726f703a20767420746f74616c2073686f756c642062696767657260008301527f207468616e207a65726f000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f3c602283615b97565b91507f6f6e6c7941646d696e3a2063616c6c6572206973206e6f74207468652061646d60008301527f696e0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614fa2602083615b97565b91507f61646441646d696e3a2061646d696e20697320616c72656164792061646d696e6000830152602082019050919050565b6000614fe2601f83615b97565b91507f72656d6f766541646d696e3a2061646d696e206973206e6f742061646d696e006000830152602082019050919050565b6000615022603183615b97565b91507f6465637265617365416c6c6f77616e63653a2064656372656173656420616c6c60008301527f6f77616e63652062656c6f77207a65726f0000000000000000000000000000006020830152604082019050919050565b6000615088601b83615b97565b91507f61646441646d696e3a2061646d696e206973206e6f74207a65726f00000000006000830152602082019050919050565b60006150c8602a83615b97565b91507f5f7472616e736665723a207472616e7366657220616d6f756e7420657863656560008301527f64732062616c616e6365000000000000000000000000000000000000000000006020830152604082019050919050565b600061512e602883615b97565b91507f776974686472617745746865723a206e6f7420656e6f7567682065746865722060008301527f62616c616e63652e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615194602d83615b97565b91507f5f7472616e736665724275726e3a207472616e736665722066726f6d2074686560008301527f207a65726f2061646472657373000000000000000000000000000000000000006020830152604082019050919050565b60006151fa601b83615b97565b91507f667265657a653a20667265657a6520616d6f756e74206572726f7200000000006000830152602082019050919050565b600061523a602783615b97565b91507f5f7472616e736665723a207472616e7366657220746f20746865207a65726f2060008301527f61646472657373000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006152a0602083615b97565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006152e0601d83615b97565b91507f7472616e736665724465763a206e65772061646472657373207a65726f0000006000830152602082019050919050565b6000615320602283615b97565b91507f5f6275726e3a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615386602183615b97565b91507f5f6275726e3a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006153ec601f83615b97565b91507f756e667265657a653a20756e667265657a6520616d6f756e74206572726f72006000830152602082019050919050565b600061542c602583615b97565b91507f5f617070726f76653a20617070726f766520746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615492602f83615b97565b91507f7472616e7366657246726f6d3a207472616e7366657220616d6f756e7420657860008301527f636565647320616c6c6f77616e636500000000000000000000000000000000006020830152604082019050919050565b60006154f8601e83615b97565b91507f72656d6f766541646d696e3a2061646d696e206973206e6f74207a65726f00006000830152602082019050919050565b6000615538601a83615b97565b91507f61697264726f70733a206c656e677468206e6f7420657175616c0000000000006000830152602082019050919050565b6000615578602f83615b97565b91507f5f61697264726f703a2061697264726f7020746f74616c2073686f756c64206260008301527f6967676572207468616e207a65726f00000000000000000000000000000000006020830152604082019050919050565b60006155de602683615b97565b91507f5f61697264726f703a20656e642073686f756c6420626967676572207468616e60008301527f20737461727400000000000000000000000000000000000000000000000000006020830152604082019050919050565b61564081615cfb565b82525050565b61564f81615d05565b82525050565b600060208201905061566a6000830184614a5c565b92915050565b60006020820190506156856000830184614a6b565b92915050565b600060208201905081810360008301526156a58184614a7a565b905092915050565b600060208201905081810360008301526156c681614ab3565b9050919050565b600060208201905081810360008301526156e681614af3565b9050919050565b6000602082019050818103600083015261570681614b59565b9050919050565b6000602082019050818103600083015261572681614bbf565b9050919050565b6000602082019050818103600083015261574681614c25565b9050919050565b6000602082019050818103600083015261576681614c8b565b9050919050565b6000602082019050818103600083015261578681614cf1565b9050919050565b600060208201905081810360008301526157a681614d57565b9050919050565b600060208201905081810360008301526157c681614dbd565b9050919050565b600060208201905081810360008301526157e681614e23565b9050919050565b6000602082019050818103600083015261580681614e63565b9050919050565b6000602082019050818103600083015261582681614ec9565b9050919050565b6000602082019050818103600083015261584681614f2f565b9050919050565b6000602082019050818103600083015261586681614f95565b9050919050565b6000602082019050818103600083015261588681614fd5565b9050919050565b600060208201905081810360008301526158a681615015565b9050919050565b600060208201905081810360008301526158c68161507b565b9050919050565b600060208201905081810360008301526158e6816150bb565b9050919050565b6000602082019050818103600083015261590681615121565b9050919050565b6000602082019050818103600083015261592681615187565b9050919050565b60006020820190508181036000830152615946816151ed565b9050919050565b600060208201905081810360008301526159668161522d565b9050919050565b6000602082019050818103600083015261598681615293565b9050919050565b600060208201905081810360008301526159a6816152d3565b9050919050565b600060208201905081810360008301526159c681615313565b9050919050565b600060208201905081810360008301526159e681615379565b9050919050565b60006020820190508181036000830152615a06816153df565b9050919050565b60006020820190508181036000830152615a268161541f565b9050919050565b60006020820190508181036000830152615a4681615485565b9050919050565b60006020820190508181036000830152615a66816154eb565b9050919050565b60006020820190508181036000830152615a868161552b565b9050919050565b60006020820190508181036000830152615aa68161556b565b9050919050565b60006020820190508181036000830152615ac6816155d1565b9050919050565b6000602082019050615ae26000830184615637565b92915050565b6000602082019050615afd6000830184615646565b92915050565b6000604051905081810181811067ffffffffffffffff82111715615b2a57615b29615e4d565b5b8060405250919050565b600067ffffffffffffffff821115615b4f57615b4e615e4d565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615b7b57615b7a615e4d565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000615bb382615cfb565b9150615bbe83615cfb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615bf357615bf2615dc0565b5b828201905092915050565b6000615c0982615cfb565b9150615c1483615cfb565b925082615c2457615c23615def565b5b828204905092915050565b6000615c3a82615cfb565b9150615c4583615cfb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615c7e57615c7d615dc0565b5b828202905092915050565b6000615c9482615cfb565b9150615c9f83615cfb565b925082821015615cb257615cb1615dc0565b5b828203905092915050565b6000615cc882615cdb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015615d30578082015181840152602081019050615d15565b83811115615d3f576000848401525b50505050565b60006002820490506001821680615d5d57607f821691505b60208210811415615d7157615d70615e1e565b5b50919050565b6000615d8282615cfb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615db557615db4615dc0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b615e9681615cbd565b8114615ea157600080fd5b50565b615ead81615ccf565b8114615eb857600080fd5b50565b615ec481615cfb565b8114615ecf57600080fd5b5056fea264697066735822122077563bf88ac284b7785e9bb44681de9df806badf6c7f0203cca63dae3186b54e64736f6c63430008000033

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

000000000000000000000000b99b4f25e0a7cfb2843d8658b078bbcae6b9e6d900000000000000000000000039f3407daf7cb68de70b851ed5de49e89b1c0394

-----Decoded View---------------
Arg [0] : addressDev (address): 0xB99B4F25E0A7cfB2843d8658b078BBCaE6B9e6D9
Arg [1] : addressAd (address): 0x39F3407Daf7cB68De70B851Ed5dE49E89b1C0394

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b99b4f25e0a7cfb2843d8658b078bbcae6b9e6d9
Arg [1] : 00000000000000000000000039f3407daf7cb68de70b851ed5de49e89b1c0394


Deployed Bytecode Sourcemap

6514:19833:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8721:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10408:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15485:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19812:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9308:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10684:536;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15869:649;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16947:364;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20056:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18700:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9151:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18095:559;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11330:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25756:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9466:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12275:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12847:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16584:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14291:174;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17942:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19573:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9624:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5773:94;;;;;;;;;;;;;:::i;:::-;;13006:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17354:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13141:585;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5122:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8940:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12460:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18850:541;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11737:494;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9863:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17787:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13769:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14513:907;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10146:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12625:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15708:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6022:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8721:100;8775:13;8808:5;8801:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8721:100;:::o;10408:210::-;10527:4;10549:39;10558:12;:10;:12::i;:::-;10572:7;10581:6;10549:8;:39::i;:::-;10606:4;10599:11;;10408:210;;;;:::o;15485:173::-;15596:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15625:17:::1;:25;15643:6;15625:25;;;;;;;;;;;;;;;;;;;;;;;;;15618:32;;15485:173:::0;;;:::o;19812:236::-;5353:12;:10;:12::i;:::-;5342:23;;:7;:5;:7::i;:::-;:23;;;5334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19901:1:::1;19884:19;;:5;:19;;;;19876:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19957:7;:14;19965:5;19957:14;;;;;;;;;;;;;;;;;;;;;;;;;19949:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20035:5;20018:7;:14;20026:5;20018:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;19812:236:::0;:::o;9308:108::-;9369:7;9396:12;;9389:19;;9308:108;:::o;10684:536::-;10824:4;10841:24;10868:11;:19;10880:6;10868:19;;;;;;;;;;;;;;;:33;10888:12;:10;:12::i;:::-;10868:33;;;;;;;;;;;;;;;;10841:60;;10954:6;10934:16;:26;;10912:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;11071:57;11080:6;11088:12;:10;:12::i;:::-;11121:6;11102:16;:25;11071:8;:57::i;:::-;11152:36;11162:6;11170:9;11181:6;11152:9;:36::i;:::-;11208:4;11201:11;;;10684:536;;;;;:::o;15869:649::-;15911:4;15982:1;15950:15;:29;15966:12;:10;:12::i;:::-;15950:29;;;;;;;;;;;;;;;;:33;15928:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;16064:19;16086:15;:29;16102:12;:10;:12::i;:::-;16086:29;;;;;;;;;;;;;;;;16064:51;;16173:11;16148:9;:21;16158:10;;;;;;;;;;;16148:21;;;;;;;;;;;;;;;;:36;;16126:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;16287:11;16260:9;:23;16270:12;:10;:12::i;:::-;16260:23;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;16341:1;16309:15;:29;16325:12;:10;:12::i;:::-;16309:29;;;;;;;;;;;;;;;:33;;;;16378:11;16353:9;:21;16363:10;;;;;;;;;;;16353:21;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;16412:11;16400:8;;:23;;;;;;;:::i;:::-;;;;;;;;16460:12;:10;:12::i;:::-;16439:47;;16448:10;;;;;;;;;;;16439:47;;;16474:11;16439:47;;;;;;:::i;:::-;;;;;;;;16506:4;16499:11;;;15869:649;:::o;16947:364::-;17048:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17099:6:::1;17078:9;:17;17088:6;17078:17;;;;;;;;;;;;;;;;:27;;17070:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17171:6;17150:9;:17;17160:6;17150:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;17208:6;17188:8;:16;17197:6;17188:16;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;17237:6;17225:8;;:18;;;;;;;:::i;:::-;;;;;;;;17266:6;17259:22;;;17274:6;17259:22;;;;;;:::i;:::-;;;;;;;;17299:4;17292:11;;16947:364:::0;;;;:::o;20056:109::-;20119:4;5353:12;:10;:12::i;:::-;5342:23;;:7;:5;:7::i;:::-;:23;;;5334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20143:7:::1;:14;20151:5;20143:14;;;;;;;;;;;;;;;;;;;;;;;;;20136:21;;20056:109:::0;;;:::o;18700:100::-;18755:7;19485;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18782:10:::1;;;;;;;;;;;18775:17;;18700:100:::0;:::o;9151:92::-;9209:5;9234:1;9227:8;;9151:92;:::o;18095:559::-;18158:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18201:1:::1;18183:20;;:6;:20;;;;18175:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18253:14;:22;18268:6;18253:22;;;;;;;;;;;;;;;;;;;;;;;;;18248:136;;18317:4;18292:14;:22;18307:6;18292:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18366:6;18336:10;:27;18347:13;;:15;;;;;;;;;:::i;:::-;;;;;18336:27;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18248:136;18394:14;18411:9;:22;18421:11;;;;;;;;;;;18411:22;;;;;;;;;;;;;;;;18394:39;;18444:14;18461:11;;;;;;;;;;;18444:28;;18503:6;18483:9;:17;18493:6;18483:17;;;;;;;;;;;;;;;:26;;;;18540:1;18520:9;:17;18530:6;18520:17;;;;;;;;;;;;;;;:21;;;;18566:6;18552:11;;:20;;;;;;;;;;;;;;;;;;18607:6;18590:32;;18599:6;18590:32;;;18615:6;18590:32;;;;;;:::i;:::-;;;;;;;;18642:4;18635:11;;;;18095:559:::0;;;:::o;11330:297::-;11445:4;11467:130;11490:12;:10;:12::i;:::-;11517:7;11576:10;11539:11;:25;11551:12;:10;:12::i;:::-;11539:25;;;;;;;;;;;;;;;:34;11565:7;11539:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11467:8;:130::i;:::-;11615:4;11608:11;;11330:297;;;;:::o;25756:240::-;5353:12;:10;:12::i;:::-;5342:23;;:7;:5;:7::i;:::-;:23;;;5334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25870:6:::1;25845:21;:31;;25823:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;25963:7;:5;:7::i;:::-;25955:25;;:33;25981:6;25955:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25756:240:::0;:::o;9466:95::-;9516:7;9543:10;;9536:17;;9466:95;:::o;12275:128::-;12329:4;12346:27;12352:12;:10;:12::i;:::-;12366:6;12346:5;:27::i;:::-;12391:4;12384:11;;12275:128;;;:::o;12847:103::-;12902:7;19485;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12929:13:::1;;12922:20;;12847:103:::0;:::o;16584:322::-;16691:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16764:9:::1;16735:38;;:17;:25;16753:6;16735:25;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;16713:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;16867:9;16839:17;:25;16857:6;16839:25;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;16894:4;16887:11;;16584:322:::0;;;;:::o;14291:174::-;14339:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14356:51:::1;14365:1;14368:13;;14383;;14398:8;;14356;:51::i;:::-;14434:1;14418:13;:17;;;;14453:4;14446:11;;14291:174:::0;:::o;17942:102::-;17998:7;19485;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18025:11:::1;;;;;;;;;;;18018:18;;17942:102:::0;:::o;19573:231::-;5353:12;:10;:12::i;:::-;5342:23;;:7;:5;:7::i;:::-;:23;;;5334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19659:1:::1;19642:19;;:5;:19;;;;19634:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19713:7;:14;19721:5;19713:14;;;;;;;;;;;;;;;;;;;;;;;;;19712:15;19704:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19792:4;19775:7;:14;19783:5;19775:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;19573:231:::0;:::o;9624:177::-;9743:7;9775:9;:18;9785:7;9775:18;;;;;;;;;;;;;;;;9768:25;;9624:177;;;:::o;5773:94::-;5353:12;:10;:12::i;:::-;5342:23;;:7;:5;:7::i;:::-;:23;;;5334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5838:21:::1;5856:1;5838:9;:21::i;:::-;5773:94::o:0;13006:93::-;13056:7;19485;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13083:8:::1;;13076:15;;13006:93:::0;:::o;17354:371::-;17457:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17507:6:::1;17487:8;:16;17496:6;17487:16;;;;;;;;;;;;;;;;:26;;17479:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17583:6;17562:9;:17;17572:6;17562:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;17620:6;17600:8;:16;17609:6;17600:16;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;17649:6;17637:8;;:18;;;;;;;:::i;:::-;;;;;;;;17680:6;17671:24;;;17688:6;17671:24;;;;;;:::i;:::-;;;;;;;;17713:4;17706:11;;17354:371:::0;;;;:::o;13141:585::-;13246:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13311:1:::1;13290:23;;:9;:23;;;;13268:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13430:14;:25;13445:9;13430:25;;;;;;;;;;;;;;;;;;;;;;;;;13425:145;;13500:4;13472:14;:25;13487:9;13472:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13549:9;13519:10;:27;13530:13;;:15;;;;;;;;;:::i;:::-;;;;;13519:27;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13425:145;13604:6;13580:9;:20;13590:9;13580:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13633:6;13621:8;;:18;;;;;;;:::i;:::-;;;;;;;;13676:9;13655:39;;13672:1;13655:39;;;13687:6;13655:39;;;;;;:::i;:::-;;;;;;;;13714:4;13707:11;;13141:585:::0;;;;:::o;5122:87::-;5168:7;5195:6;;;;;;;;;;;5188:13;;5122:87;:::o;8940:104::-;8996:13;9029:7;9022:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8940:104;:::o;12460:103::-;12515:7;19485;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12542:13:::1;;12535:20;;12460:103:::0;:::o;18850:541::-;18911:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18953:1:::1;18936:19;;:5;:19;;;;18928:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19004:14;:21;19019:5;19004:21;;;;;;;;;;;;;;;;;;;;;;;;;18999:133;;19066:4;19042:14;:21;19057:5;19042:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;19115:5;19085:10;:27;19096:13;;:15;;;;;;;;;:::i;:::-;;;;;19085:27;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18999:133;19142:14;19159:9;:21;19169:10;;;;;;;;;;;19159:21;;;;;;;;;;;;;;;;19142:38;;19191:13;19207:10;;;;;;;;;;;19191:26;;19247:6;19228:9;:16;19238:5;19228:16;;;;;;;;;;;;;;;:25;;;;19283:1;19264:9;:16;19274:5;19264:16;;;;;;;;;;;;;;;:20;;;;19308:5;19295:10;;:18;;;;;;;;;;;;;;;;;;19347:5;19331:30;;19340:5;19331:30;;;19354:6;19331:30;;;;;;:::i;:::-;;;;;;;;19379:4;19372:11;;;;18850:541:::0;;;:::o;11737:494::-;11857:4;11879:24;11906:11;:25;11918:12;:10;:12::i;:::-;11906:25;;;;;;;;;;;;;;;:34;11932:7;11906:34;;;;;;;;;;;;;;;;11879:61;;11993:15;11973:16;:35;;11951:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;12121:67;12130:12;:10;:12::i;:::-;12144:7;12172:15;12153:16;:34;12121:8;:67::i;:::-;12219:4;12212:11;;;11737:494;;;;:::o;9863:220::-;9985:4;10007:46;10021:12;:10;:12::i;:::-;10035:9;10046:6;10007:13;:46::i;:::-;10071:4;10064:11;;9863:220;;;;:::o;17787:108::-;17843:7;17870:8;:17;17879:7;17870:17;;;;;;;;;;;;;;;;17863:24;;17787:108;;;:::o;13769:477::-;13895:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13960:7:::1;:14;13939:10;:17;:35;13917:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;14046:9;14041:176;14065:10;:17;14061:1;:21;14041:176;;;14133:1;14108:27;;:10;14119:1;14108:13;;;;;;;;;;;;;;;;;;;;;;:27;;;14104:102;;14156:34;14164:10;14175:1;14164:13;;;;;;;;;;;;;;;;;;;;;;14179:7;14187:1;14179:10;;;;;;;;;;;;;;;;;;;;;;14156:7;:34::i;:::-;;14104:102;14084:3;;;;;:::i;:::-;;;;14041:176;;;;14234:4;14227:11;;13769:477:::0;;;;:::o;14513:907::-;14576:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14614:1:::1;14597:13;;:18;14593:373;;14674:1;14658:13;;:17;14632:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;14793:13;;14777;:29;;;;14839:8;;14821:15;:26;;;;14876:13;;14862:11;:27;;;;14919:1;14904:12;:16;;;;14953:1;14937:13;:17;;;;14593:373;14978:11;15016;;15007:5;14992:12;;:20;;;;:::i;:::-;:35;;:98;;15085:5;15070:12;;:20;;;;:::i;:::-;14992:98;;;15043:11;;14992:98;14978:112;;15103:59;15112:12;;15126:3;15131:13;;15146:15;;15103:8;:59::i;:::-;15186:11;;15179:3;:18;15175:214;;15230:1;15214:13;:17;;;;15264:1;15246:15;:19;;;;15294:1;15280:11;:15;;;;15325:1;15310:12;:16;;;;15175:214;;;15374:3;15359:12;:18;;;;15175:214;15408:4;15401:11;;;14513:907:::0;;;:::o;10146:201::-;10280:7;10312:11;:18;10324:5;10312:18;;;;;;;;;;;;;;;:27;10331:7;10312:27;;;;;;;;;;;;;;;;10305:34;;10146:201;;;;:::o;12625:166::-;12732:4;19485:7;:21;19493:12;:10;:12::i;:::-;19485:21;;;;;;;;;;;;;;;;;;;;;;;;;19477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12761:14:::1;:22;12776:6;12761:22;;;;;;;;;;;;;;;;;;;;;;;;;12754:29;;12625:166:::0;;;:::o;15708:111::-;15755:7;15782:15;:29;15798:12;:10;:12::i;:::-;15782:29;;;;;;;;;;;;;;;;15775:36;;15708:111;:::o;6022:229::-;5353:12;:10;:12::i;:::-;5342:23;;:7;:5;:7::i;:::-;:23;;;5334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6145:1:::1;6125:22;;:8;:22;;;;6103:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;6224:19;6234:8;6224:9;:19::i;:::-;6022:229:::0;:::o;601:98::-;654:7;681:10;674:17;;601:98;:::o;25310:386::-;25463:1;25446:19;;:5;:19;;;;25438:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25547:1;25528:21;;:7;:21;;;;25520:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25634:6;25604:11;:18;25616:5;25604:18;;;;;;;;;;;;;;;:27;25623:7;25604:27;;;;;;;;;;;;;;;:36;;;;25672:7;25656:32;;25665:5;25656:32;;;25681:6;25656:32;;;;;;:::i;:::-;;;;;;;;25310:386;;;:::o;21244:929::-;21416:1;21398:20;;:6;:20;;;;21376:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;21541:1;21520:23;;:9;:23;;;;21498:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;21623:21;21647:9;:17;21657:6;21647:17;;;;;;;;;;;;;;;;21623:41;;21714:6;21697:13;:23;;21675:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;21862:6;21846:13;:22;21826:9;:17;21836:6;21826:17;;;;;;;;;;;;;;;:42;;;;21932:14;:25;21947:9;21932:25;;;;;;;;;;;;;;;;;;;;;;;;;21927:145;;22002:4;21974:14;:25;21989:9;21974:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22051:9;22021:10;:27;22032:13;;:15;;;;;;;;;:::i;:::-;;;;;22021:27;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21927:145;22108:6;22084:9;:20;22094:9;22084:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;22147:9;22130:35;;22139:6;22130:35;;;22158:6;22130:35;;;;;;:::i;:::-;;;;;;;;21244:929;;;;:::o;24674:526::-;24777:1;24758:21;;:7;:21;;;;24750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24830:22;24855:9;:18;24865:7;24855:18;;;;;;;;;;;;;;;;24830:43;;24910:6;24892:14;:24;;24884:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25029:6;25012:14;:23;24991:9;:18;25001:7;24991:18;;;;;;;;;;;;;;;:44;;;;25073:6;25057:12;;:22;;;;;;;:::i;:::-;;;;;;;;25104:6;25090:10;;:20;;;;;;;:::i;:::-;;;;;;;;25133:6;25121:8;;:18;;;;;;;:::i;:::-;;;;;;;;25181:1;25155:37;;25164:7;25155:37;;;25185:6;25155:37;;;;;;:::i;:::-;;;;;;;;24674:526;;;:::o;20173:977::-;20330:5;20324:3;:11;20316:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20407:1;20397:7;:11;20389:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20489:1;20479:7;:11;20471:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20555:9;20567:5;20555:17;;20550:593;20578:3;20574:1;:7;20550:593;;;20603:12;20618:10;:13;20629:1;20618:13;;;;;;;;;;;;;;;;;;;;;20603:28;;20646:15;20664:9;:15;20674:4;20664:15;;;;;;;;;;;;;;;;20646:33;;20708:1;20698:7;:11;:33;;;;;20721:10;;;;;;;;;;;20713:18;;:4;:18;;;;20698:33;20694:438;;;20752:17;20794:7;20783;20773;:17;;;;:::i;:::-;20772:29;;;;:::i;:::-;20752:49;;20824:17;:23;20842:4;20824:23;;;;;;;;;;;;;;;;;;;;;;;;;20820:297;;;20888:9;20872:12;;:25;;;;;;;:::i;:::-;;;;;;;;20934:9;20920:10;;:23;;;;;;;:::i;:::-;;;;;;;;21000:1;20971:43;;20980:10;;;;;;;;;;;20971:43;;;21004:9;20971:43;;;;;;:::i;:::-;;;;;;;;20820:297;;;21088:9;21063:15;:21;21079:4;21063:21;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;20820:297;20694:438;;20550:593;;20583:3;;;;;:::i;:::-;;;;20550:593;;;;20173:977;;;;:::o;6259:173::-;6315:16;6334:6;;;;;;;;;;;6315:25;;6360:8;6351:6;;:17;;;;;;;;;;;;;;;;;;6415:8;6384:40;;6405:8;6384:40;;;;;;;;;;;;6259:173;;:::o;22267:1887::-;22443:1;22425:20;;:6;:20;;;;22403:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;22572:1;22551:23;;:9;:23;;;;22529:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;22658:21;22682:9;:17;22692:6;22682:17;;;;;;;;;;;;;;;;22658:41;;22749:6;22732:13;:23;;22710:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;22901:6;22885:13;:22;22865:9;:17;22875:6;22865:17;;;;;;;;;;;;;;;:42;;;;22969:14;:25;22984:9;22969:25;;;;;;;;;;;;;;;;;;;;;;;;;22964:145;;23039:4;23011:14;:25;23026:9;23011:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;23088:9;23058:10;:27;23069:13;;:15;;;;;;;;;:::i;:::-;;;;;23058:27;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22964:145;23138:9;;23125:10;;:22;23121:1026;;;23193:19;23224:1;23215:6;:10;;;;:::i;:::-;23193:32;;23264:11;23240:9;:20;23250:9;23240:20;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;23312:9;23295:40;;23304:6;23295:40;;;23323:11;23295:40;;;;;;:::i;:::-;;;;;;;;23378:17;23413:2;23408:1;23399:6;:10;;;;:::i;:::-;23398:17;;;;:::i;:::-;23378:37;;23455:9;23430;:21;23440:10;;;;;;;;;;;23430:21;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;23496:9;23479:13;;:26;;;;;;;:::i;:::-;;;;;;;;23532:9;23520:8;;:21;;;;;;;:::i;:::-;;;;;;;;23578:10;;;;;;;;;;;23561:39;;23570:6;23561:39;;;23590:9;23561:39;;;;;;:::i;:::-;;;;;;;;23644:13;23675:3;23670:1;23661:6;:10;;;;:::i;:::-;23660:18;;;;:::i;:::-;23644:34;;23719:5;23693:9;:22;23703:11;;;;;;;;;;;23693:22;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;23761:11;;;;;;;;;;;23744:36;;23753:6;23744:36;;;23774:5;23744:36;;;;;;:::i;:::-;;;;;;;;23820:14;23853:3;23847:2;23838:6;:11;;;;:::i;:::-;23837:19;;;;:::i;:::-;23820:36;;23887:6;23871:12;;:22;;;;;;;:::i;:::-;;;;;;;;23922:6;23908:10;;:20;;;;;;;:::i;:::-;;;;;;;;23955:6;23943:8;;:18;;;;;;;:::i;:::-;;;;;;;;24006:1;23981:36;;23990:6;23981:36;;;24010:6;23981:36;;;;;;:::i;:::-;;;;;;;;23121:1026;;;;;;;24074:6;24050:9;:20;24060:9;24050:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;24117:9;24100:35;;24109:6;24100:35;;;24128:6;24100:35;;;;;;:::i;:::-;;;;;;;;23121:1026;22267:1887;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:622::-;;790:80;805:64;862:6;805:64;:::i;:::-;790:80;:::i;:::-;781:89;;890:5;918:6;911:5;904:21;944:4;937:5;933:16;926:23;;969:6;1019:3;1011:4;1003:6;999:17;994:3;990:27;987:36;984:2;;;1036:1;1033;1026:12;984:2;1064:1;1049:236;1074:6;1071:1;1068:13;1049:236;;;1141:3;1169:37;1202:3;1190:10;1169:37;:::i;:::-;1164:3;1157:50;1236:4;1231:3;1227:14;1220:21;;1270:4;1265:3;1261:14;1254:21;;1109:176;1096:1;1093;1089:9;1084:14;;1049:236;;;1053:14;771:520;;;;;;;:::o;1297:139::-;;1381:6;1368:20;1359:29;;1397:33;1424:5;1397:33;:::i;:::-;1349:87;;;;:::o;1459:303::-;;1579:3;1572:4;1564:6;1560:17;1556:27;1546:2;;1597:1;1594;1587:12;1546:2;1637:6;1624:20;1662:94;1752:3;1744:6;1737:4;1729:6;1725:17;1662:94;:::i;:::-;1653:103;;1536:226;;;;;:::o;1785:303::-;;1905:3;1898:4;1890:6;1886:17;1882:27;1872:2;;1923:1;1920;1913:12;1872:2;1963:6;1950:20;1988:94;2078:3;2070:6;2063:4;2055:6;2051:17;1988:94;:::i;:::-;1979:103;;1862:226;;;;;:::o;2094:133::-;;2175:6;2162:20;2153:29;;2191:30;2215:5;2191:30;:::i;:::-;2143:84;;;;:::o;2233:139::-;;2317:6;2304:20;2295:29;;2333:33;2360:5;2333:33;:::i;:::-;2285:87;;;;:::o;2378:262::-;;2486:2;2474:9;2465:7;2461:23;2457:32;2454:2;;;2502:1;2499;2492:12;2454:2;2545:1;2570:53;2615:7;2606:6;2595:9;2591:22;2570:53;:::i;:::-;2560:63;;2516:117;2444:196;;;;:::o;2646:407::-;;;2771:2;2759:9;2750:7;2746:23;2742:32;2739:2;;;2787:1;2784;2777:12;2739:2;2830:1;2855:53;2900:7;2891:6;2880:9;2876:22;2855:53;:::i;:::-;2845:63;;2801:117;2957:2;2983:53;3028:7;3019:6;3008:9;3004:22;2983:53;:::i;:::-;2973:63;;2928:118;2729:324;;;;;:::o;3059:552::-;;;;3201:2;3189:9;3180:7;3176:23;3172:32;3169:2;;;3217:1;3214;3207:12;3169:2;3260:1;3285:53;3330:7;3321:6;3310:9;3306:22;3285:53;:::i;:::-;3275:63;;3231:117;3387:2;3413:53;3458:7;3449:6;3438:9;3434:22;3413:53;:::i;:::-;3403:63;;3358:118;3515:2;3541:53;3586:7;3577:6;3566:9;3562:22;3541:53;:::i;:::-;3531:63;;3486:118;3159:452;;;;;:::o;3617:401::-;;;3739:2;3727:9;3718:7;3714:23;3710:32;3707:2;;;3755:1;3752;3745:12;3707:2;3798:1;3823:53;3868:7;3859:6;3848:9;3844:22;3823:53;:::i;:::-;3813:63;;3769:117;3925:2;3951:50;3993:7;3984:6;3973:9;3969:22;3951:50;:::i;:::-;3941:60;;3896:115;3697:321;;;;;:::o;4024:407::-;;;4149:2;4137:9;4128:7;4124:23;4120:32;4117:2;;;4165:1;4162;4155:12;4117:2;4208:1;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4179:117;4335:2;4361:53;4406:7;4397:6;4386:9;4382:22;4361:53;:::i;:::-;4351:63;;4306:118;4107:324;;;;;:::o;4437:693::-;;;4612:2;4600:9;4591:7;4587:23;4583:32;4580:2;;;4628:1;4625;4618:12;4580:2;4699:1;4688:9;4684:17;4671:31;4729:18;4721:6;4718:30;4715:2;;;4761:1;4758;4751:12;4715:2;4789:78;4859:7;4850:6;4839:9;4835:22;4789:78;:::i;:::-;4779:88;;4642:235;4944:2;4933:9;4929:18;4916:32;4975:18;4967:6;4964:30;4961:2;;;5007:1;5004;4997:12;4961:2;5035:78;5105:7;5096:6;5085:9;5081:22;5035:78;:::i;:::-;5025:88;;4887:236;4570:560;;;;;:::o;5136:262::-;;5244:2;5232:9;5223:7;5219:23;5215:32;5212:2;;;5260:1;5257;5250:12;5212:2;5303:1;5328:53;5373:7;5364:6;5353:9;5349:22;5328:53;:::i;:::-;5318:63;;5274:117;5202:196;;;;:::o;5404:118::-;5491:24;5509:5;5491:24;:::i;:::-;5486:3;5479:37;5469:53;;:::o;5528:109::-;5609:21;5624:5;5609:21;:::i;:::-;5604:3;5597:34;5587:50;;:::o;5643:364::-;;5759:39;5792:5;5759:39;:::i;:::-;5814:71;5878:6;5873:3;5814:71;:::i;:::-;5807:78;;5894:52;5939:6;5934:3;5927:4;5920:5;5916:16;5894:52;:::i;:::-;5971:29;5993:6;5971:29;:::i;:::-;5966:3;5962:39;5955:46;;5735:272;;;;;:::o;6013:326::-;;6176:67;6240:2;6235:3;6176:67;:::i;:::-;6169:74;;6273:30;6269:1;6264:3;6260:11;6253:51;6330:2;6325:3;6321:12;6314:19;;6159:180;;;:::o;6345:368::-;;6508:67;6572:2;6567:3;6508:67;:::i;:::-;6501:74;;6605:34;6601:1;6596:3;6592:11;6585:55;6671:6;6666:2;6661:3;6657:12;6650:28;6704:2;6699:3;6695:12;6688:19;;6491:222;;;:::o;6719:383::-;;6882:67;6946:2;6941:3;6882:67;:::i;:::-;6875:74;;6979:34;6975:1;6970:3;6966:11;6959:55;7045:21;7040:2;7035:3;7031:12;7024:43;7093:2;7088:3;7084:12;7077:19;;6865:237;;;:::o;7108:374::-;;7271:67;7335:2;7330:3;7271:67;:::i;:::-;7264:74;;7368:34;7364:1;7359:3;7355:11;7348:55;7434:12;7429:2;7424:3;7420:12;7413:34;7473:2;7468:3;7464:12;7457:19;;7254:228;;;:::o;7488:375::-;;7651:67;7715:2;7710:3;7651:67;:::i;:::-;7644:74;;7748:34;7744:1;7739:3;7735:11;7728:55;7814:13;7809:2;7804:3;7800:12;7793:35;7854:2;7849:3;7845:12;7838:19;;7634:229;;;:::o;7869:378::-;;8032:67;8096:2;8091:3;8032:67;:::i;:::-;8025:74;;8129:34;8125:1;8120:3;8116:11;8109:55;8195:16;8190:2;8185:3;8181:12;8174:38;8238:2;8233:3;8229:12;8222:19;;8015:232;;;:::o;8253:370::-;;8416:67;8480:2;8475:3;8416:67;:::i;:::-;8409:74;;8513:34;8509:1;8504:3;8500:11;8493:55;8579:8;8574:2;8569:3;8565:12;8558:30;8614:2;8609:3;8605:12;8598:19;;8399:224;;;:::o;8629:369::-;;8792:67;8856:2;8851:3;8792:67;:::i;:::-;8785:74;;8889:34;8885:1;8880:3;8876:11;8869:55;8955:7;8950:2;8945:3;8941:12;8934:29;8989:2;8984:3;8980:12;8973:19;;8775:223;;;:::o;9004:373::-;;9167:67;9231:2;9226:3;9167:67;:::i;:::-;9160:74;;9264:34;9260:1;9255:3;9251:11;9244:55;9330:11;9325:2;9320:3;9316:12;9309:33;9368:2;9363:3;9359:12;9352:19;;9150:227;;;:::o;9383:325::-;;9546:67;9610:2;9605:3;9546:67;:::i;:::-;9539:74;;9643:29;9639:1;9634:3;9630:11;9623:50;9699:2;9694:3;9690:12;9683:19;;9529:179;;;:::o;9714:371::-;;9877:67;9941:2;9936:3;9877:67;:::i;:::-;9870:74;;9974:34;9970:1;9965:3;9961:11;9954:55;10040:9;10035:2;10030:3;10026:12;10019:31;10076:2;10071:3;10067:12;10060:19;;9860:225;;;:::o;10091:374::-;;10254:67;10318:2;10313:3;10254:67;:::i;:::-;10247:74;;10351:34;10347:1;10342:3;10338:11;10331:55;10417:12;10412:2;10407:3;10403:12;10396:34;10456:2;10451:3;10447:12;10440:19;;10237:228;;;:::o;10471:366::-;;10634:67;10698:2;10693:3;10634:67;:::i;:::-;10627:74;;10731:34;10727:1;10722:3;10718:11;10711:55;10797:4;10792:2;10787:3;10783:12;10776:26;10828:2;10823:3;10819:12;10812:19;;10617:220;;;:::o;10843:330::-;;11006:67;11070:2;11065:3;11006:67;:::i;:::-;10999:74;;11103:34;11099:1;11094:3;11090:11;11083:55;11164:2;11159:3;11155:12;11148:19;;10989:184;;;:::o;11179:329::-;;11342:67;11406:2;11401:3;11342:67;:::i;:::-;11335:74;;11439:33;11435:1;11430:3;11426:11;11419:54;11499:2;11494:3;11490:12;11483:19;;11325:183;;;:::o;11514:381::-;;11677:67;11741:2;11736:3;11677:67;:::i;:::-;11670:74;;11774:34;11770:1;11765:3;11761:11;11754:55;11840:19;11835:2;11830:3;11826:12;11819:41;11886:2;11881:3;11877:12;11870:19;;11660:235;;;:::o;11901:325::-;;12064:67;12128:2;12123:3;12064:67;:::i;:::-;12057:74;;12161:29;12157:1;12152:3;12148:11;12141:50;12217:2;12212:3;12208:12;12201:19;;12047:179;;;:::o;12232:374::-;;12395:67;12459:2;12454:3;12395:67;:::i;:::-;12388:74;;12492:34;12488:1;12483:3;12479:11;12472:55;12558:12;12553:2;12548:3;12544:12;12537:34;12597:2;12592:3;12588:12;12581:19;;12378:228;;;:::o;12612:372::-;;12775:67;12839:2;12834:3;12775:67;:::i;:::-;12768:74;;12872:34;12868:1;12863:3;12859:11;12852:55;12938:10;12933:2;12928:3;12924:12;12917:32;12975:2;12970:3;12966:12;12959:19;;12758:226;;;:::o;12990:377::-;;13153:67;13217:2;13212:3;13153:67;:::i;:::-;13146:74;;13250:34;13246:1;13241:3;13237:11;13230:55;13316:15;13311:2;13306:3;13302:12;13295:37;13358:2;13353:3;13349:12;13342:19;;13136:231;;;:::o;13373:325::-;;13536:67;13600:2;13595:3;13536:67;:::i;:::-;13529:74;;13633:29;13629:1;13624:3;13620:11;13613:50;13689:2;13684:3;13680:12;13673:19;;13519:179;;;:::o;13704:371::-;;13867:67;13931:2;13926:3;13867:67;:::i;:::-;13860:74;;13964:34;13960:1;13955:3;13951:11;13944:55;14030:9;14025:2;14020:3;14016:12;14009:31;14066:2;14061:3;14057:12;14050:19;;13850:225;;;:::o;14081:330::-;;14244:67;14308:2;14303:3;14244:67;:::i;:::-;14237:74;;14341:34;14337:1;14332:3;14328:11;14321:55;14402:2;14397:3;14393:12;14386:19;;14227:184;;;:::o;14417:327::-;;14580:67;14644:2;14639:3;14580:67;:::i;:::-;14573:74;;14677:31;14673:1;14668:3;14664:11;14657:52;14735:2;14730:3;14726:12;14719:19;;14563:181;;;:::o;14750:366::-;;14913:67;14977:2;14972:3;14913:67;:::i;:::-;14906:74;;15010:34;15006:1;15001:3;14997:11;14990:55;15076:4;15071:2;15066:3;15062:12;15055:26;15107:2;15102:3;15098:12;15091:19;;14896:220;;;:::o;15122:365::-;;15285:67;15349:2;15344:3;15285:67;:::i;:::-;15278:74;;15382:34;15378:1;15373:3;15369:11;15362:55;15448:3;15443:2;15438:3;15434:12;15427:25;15478:2;15473:3;15469:12;15462:19;;15268:219;;;:::o;15493:329::-;;15656:67;15720:2;15715:3;15656:67;:::i;:::-;15649:74;;15753:33;15749:1;15744:3;15740:11;15733:54;15813:2;15808:3;15804:12;15797:19;;15639:183;;;:::o;15828:369::-;;15991:67;16055:2;16050:3;15991:67;:::i;:::-;15984:74;;16088:34;16084:1;16079:3;16075:11;16068:55;16154:7;16149:2;16144:3;16140:12;16133:29;16188:2;16183:3;16179:12;16172:19;;15974:223;;;:::o;16203:379::-;;16366:67;16430:2;16425:3;16366:67;:::i;:::-;16359:74;;16463:34;16459:1;16454:3;16450:11;16443:55;16529:17;16524:2;16519:3;16515:12;16508:39;16573:2;16568:3;16564:12;16557:19;;16349:233;;;:::o;16588:328::-;;16751:67;16815:2;16810:3;16751:67;:::i;:::-;16744:74;;16848:32;16844:1;16839:3;16835:11;16828:53;16907:2;16902:3;16898:12;16891:19;;16734:182;;;:::o;16922:324::-;;17085:67;17149:2;17144:3;17085:67;:::i;:::-;17078:74;;17182:28;17178:1;17173:3;17169:11;17162:49;17237:2;17232:3;17228:12;17221:19;;17068:178;;;:::o;17252:379::-;;17415:67;17479:2;17474:3;17415:67;:::i;:::-;17408:74;;17512:34;17508:1;17503:3;17499:11;17492:55;17578:17;17573:2;17568:3;17564:12;17557:39;17622:2;17617:3;17613:12;17606:19;;17398:233;;;:::o;17637:370::-;;17800:67;17864:2;17859:3;17800:67;:::i;:::-;17793:74;;17897:34;17893:1;17888:3;17884:11;17877:55;17963:8;17958:2;17953:3;17949:12;17942:30;17998:2;17993:3;17989:12;17982:19;;17783:224;;;:::o;18013:118::-;18100:24;18118:5;18100:24;:::i;:::-;18095:3;18088:37;18078:53;;:::o;18137:112::-;18220:22;18236:5;18220:22;:::i;:::-;18215:3;18208:35;18198:51;;:::o;18255:222::-;;18386:2;18375:9;18371:18;18363:26;;18399:71;18467:1;18456:9;18452:17;18443:6;18399:71;:::i;:::-;18353:124;;;;:::o;18483:210::-;;18608:2;18597:9;18593:18;18585:26;;18621:65;18683:1;18672:9;18668:17;18659:6;18621:65;:::i;:::-;18575:118;;;;:::o;18699:313::-;;18850:2;18839:9;18835:18;18827:26;;18899:9;18893:4;18889:20;18885:1;18874:9;18870:17;18863:47;18927:78;19000:4;18991:6;18927:78;:::i;:::-;18919:86;;18817:195;;;;:::o;19018:419::-;;19222:2;19211:9;19207:18;19199:26;;19271:9;19265:4;19261:20;19257:1;19246:9;19242:17;19235:47;19299:131;19425:4;19299:131;:::i;:::-;19291:139;;19189:248;;;:::o;19443:419::-;;19647:2;19636:9;19632:18;19624:26;;19696:9;19690:4;19686:20;19682:1;19671:9;19667:17;19660:47;19724:131;19850:4;19724:131;:::i;:::-;19716:139;;19614:248;;;:::o;19868:419::-;;20072:2;20061:9;20057:18;20049:26;;20121:9;20115:4;20111:20;20107:1;20096:9;20092:17;20085:47;20149:131;20275:4;20149:131;:::i;:::-;20141:139;;20039:248;;;:::o;20293:419::-;;20497:2;20486:9;20482:18;20474:26;;20546:9;20540:4;20536:20;20532:1;20521:9;20517:17;20510:47;20574:131;20700:4;20574:131;:::i;:::-;20566:139;;20464:248;;;:::o;20718:419::-;;20922:2;20911:9;20907:18;20899:26;;20971:9;20965:4;20961:20;20957:1;20946:9;20942:17;20935:47;20999:131;21125:4;20999:131;:::i;:::-;20991:139;;20889:248;;;:::o;21143:419::-;;21347:2;21336:9;21332:18;21324:26;;21396:9;21390:4;21386:20;21382:1;21371:9;21367:17;21360:47;21424:131;21550:4;21424:131;:::i;:::-;21416:139;;21314:248;;;:::o;21568:419::-;;21772:2;21761:9;21757:18;21749:26;;21821:9;21815:4;21811:20;21807:1;21796:9;21792:17;21785:47;21849:131;21975:4;21849:131;:::i;:::-;21841:139;;21739:248;;;:::o;21993:419::-;;22197:2;22186:9;22182:18;22174:26;;22246:9;22240:4;22236:20;22232:1;22221:9;22217:17;22210:47;22274:131;22400:4;22274:131;:::i;:::-;22266:139;;22164:248;;;:::o;22418:419::-;;22622:2;22611:9;22607:18;22599:26;;22671:9;22665:4;22661:20;22657:1;22646:9;22642:17;22635:47;22699:131;22825:4;22699:131;:::i;:::-;22691:139;;22589:248;;;:::o;22843:419::-;;23047:2;23036:9;23032:18;23024:26;;23096:9;23090:4;23086:20;23082:1;23071:9;23067:17;23060:47;23124:131;23250:4;23124:131;:::i;:::-;23116:139;;23014:248;;;:::o;23268:419::-;;23472:2;23461:9;23457:18;23449:26;;23521:9;23515:4;23511:20;23507:1;23496:9;23492:17;23485:47;23549:131;23675:4;23549:131;:::i;:::-;23541:139;;23439:248;;;:::o;23693:419::-;;23897:2;23886:9;23882:18;23874:26;;23946:9;23940:4;23936:20;23932:1;23921:9;23917:17;23910:47;23974:131;24100:4;23974:131;:::i;:::-;23966:139;;23864:248;;;:::o;24118:419::-;;24322:2;24311:9;24307:18;24299:26;;24371:9;24365:4;24361:20;24357:1;24346:9;24342:17;24335:47;24399:131;24525:4;24399:131;:::i;:::-;24391:139;;24289:248;;;:::o;24543:419::-;;24747:2;24736:9;24732:18;24724:26;;24796:9;24790:4;24786:20;24782:1;24771:9;24767:17;24760:47;24824:131;24950:4;24824:131;:::i;:::-;24816:139;;24714:248;;;:::o;24968:419::-;;25172:2;25161:9;25157:18;25149:26;;25221:9;25215:4;25211:20;25207:1;25196:9;25192:17;25185:47;25249:131;25375:4;25249:131;:::i;:::-;25241:139;;25139:248;;;:::o;25393:419::-;;25597:2;25586:9;25582:18;25574:26;;25646:9;25640:4;25636:20;25632:1;25621:9;25617:17;25610:47;25674:131;25800:4;25674:131;:::i;:::-;25666:139;;25564:248;;;:::o;25818:419::-;;26022:2;26011:9;26007:18;25999:26;;26071:9;26065:4;26061:20;26057:1;26046:9;26042:17;26035:47;26099:131;26225:4;26099:131;:::i;:::-;26091:139;;25989:248;;;:::o;26243:419::-;;26447:2;26436:9;26432:18;26424:26;;26496:9;26490:4;26486:20;26482:1;26471:9;26467:17;26460:47;26524:131;26650:4;26524:131;:::i;:::-;26516:139;;26414:248;;;:::o;26668:419::-;;26872:2;26861:9;26857:18;26849:26;;26921:9;26915:4;26911:20;26907:1;26896:9;26892:17;26885:47;26949:131;27075:4;26949:131;:::i;:::-;26941:139;;26839:248;;;:::o;27093:419::-;;27297:2;27286:9;27282:18;27274:26;;27346:9;27340:4;27336:20;27332:1;27321:9;27317:17;27310:47;27374:131;27500:4;27374:131;:::i;:::-;27366:139;;27264:248;;;:::o;27518:419::-;;27722:2;27711:9;27707:18;27699:26;;27771:9;27765:4;27761:20;27757:1;27746:9;27742:17;27735:47;27799:131;27925:4;27799:131;:::i;:::-;27791:139;;27689:248;;;:::o;27943:419::-;;28147:2;28136:9;28132:18;28124:26;;28196:9;28190:4;28186:20;28182:1;28171:9;28167:17;28160:47;28224:131;28350:4;28224:131;:::i;:::-;28216:139;;28114:248;;;:::o;28368:419::-;;28572:2;28561:9;28557:18;28549:26;;28621:9;28615:4;28611:20;28607:1;28596:9;28592:17;28585:47;28649:131;28775:4;28649:131;:::i;:::-;28641:139;;28539:248;;;:::o;28793:419::-;;28997:2;28986:9;28982:18;28974:26;;29046:9;29040:4;29036:20;29032:1;29021:9;29017:17;29010:47;29074:131;29200:4;29074:131;:::i;:::-;29066:139;;28964:248;;;:::o;29218:419::-;;29422:2;29411:9;29407:18;29399:26;;29471:9;29465:4;29461:20;29457:1;29446:9;29442:17;29435:47;29499:131;29625:4;29499:131;:::i;:::-;29491:139;;29389:248;;;:::o;29643:419::-;;29847:2;29836:9;29832:18;29824:26;;29896:9;29890:4;29886:20;29882:1;29871:9;29867:17;29860:47;29924:131;30050:4;29924:131;:::i;:::-;29916:139;;29814:248;;;:::o;30068:419::-;;30272:2;30261:9;30257:18;30249:26;;30321:9;30315:4;30311:20;30307:1;30296:9;30292:17;30285:47;30349:131;30475:4;30349:131;:::i;:::-;30341:139;;30239:248;;;:::o;30493:419::-;;30697:2;30686:9;30682:18;30674:26;;30746:9;30740:4;30736:20;30732:1;30721:9;30717:17;30710:47;30774:131;30900:4;30774:131;:::i;:::-;30766:139;;30664:248;;;:::o;30918:419::-;;31122:2;31111:9;31107:18;31099:26;;31171:9;31165:4;31161:20;31157:1;31146:9;31142:17;31135:47;31199:131;31325:4;31199:131;:::i;:::-;31191:139;;31089:248;;;:::o;31343:419::-;;31547:2;31536:9;31532:18;31524:26;;31596:9;31590:4;31586:20;31582:1;31571:9;31567:17;31560:47;31624:131;31750:4;31624:131;:::i;:::-;31616:139;;31514:248;;;:::o;31768:419::-;;31972:2;31961:9;31957:18;31949:26;;32021:9;32015:4;32011:20;32007:1;31996:9;31992:17;31985:47;32049:131;32175:4;32049:131;:::i;:::-;32041:139;;31939:248;;;:::o;32193:419::-;;32397:2;32386:9;32382:18;32374:26;;32446:9;32440:4;32436:20;32432:1;32421:9;32417:17;32410:47;32474:131;32600:4;32474:131;:::i;:::-;32466:139;;32364:248;;;:::o;32618:419::-;;32822:2;32811:9;32807:18;32799:26;;32871:9;32865:4;32861:20;32857:1;32846:9;32842:17;32835:47;32899:131;33025:4;32899:131;:::i;:::-;32891:139;;32789:248;;;:::o;33043:222::-;;33174:2;33163:9;33159:18;33151:26;;33187:71;33255:1;33244:9;33240:17;33231:6;33187:71;:::i;:::-;33141:124;;;;:::o;33271:214::-;;33398:2;33387:9;33383:18;33375:26;;33411:67;33475:1;33464:9;33460:17;33451:6;33411:67;:::i;:::-;33365:120;;;;:::o;33491:283::-;;33557:2;33551:9;33541:19;;33599:4;33591:6;33587:17;33706:6;33694:10;33691:22;33670:18;33658:10;33655:34;33652:62;33649:2;;;33717:18;;:::i;:::-;33649:2;33757:10;33753:2;33746:22;33531:243;;;;:::o;33780:311::-;;33947:18;33939:6;33936:30;33933:2;;;33969:18;;:::i;:::-;33933:2;34019:4;34011:6;34007:17;33999:25;;34079:4;34073;34069:15;34061:23;;33862:229;;;:::o;34097:311::-;;34264:18;34256:6;34253:30;34250:2;;;34286:18;;:::i;:::-;34250:2;34336:4;34328:6;34324:17;34316:25;;34396:4;34390;34386:15;34378:23;;34179:229;;;:::o;34414:99::-;;34500:5;34494:12;34484:22;;34473:40;;;:::o;34519:169::-;;34637:6;34632:3;34625:19;34677:4;34672:3;34668:14;34653:29;;34615:73;;;;:::o;34694:305::-;;34753:20;34771:1;34753:20;:::i;:::-;34748:25;;34787:20;34805:1;34787:20;:::i;:::-;34782:25;;34941:1;34873:66;34869:74;34866:1;34863:81;34860:2;;;34947:18;;:::i;:::-;34860:2;34991:1;34988;34984:9;34977:16;;34738:261;;;;:::o;35005:185::-;;35062:20;35080:1;35062:20;:::i;:::-;35057:25;;35096:20;35114:1;35096:20;:::i;:::-;35091:25;;35135:1;35125:2;;35140:18;;:::i;:::-;35125:2;35182:1;35179;35175:9;35170:14;;35047:143;;;;:::o;35196:348::-;;35259:20;35277:1;35259:20;:::i;:::-;35254:25;;35293:20;35311:1;35293:20;:::i;:::-;35288:25;;35481:1;35413:66;35409:74;35406:1;35403:81;35398:1;35391:9;35384:17;35380:105;35377:2;;;35488:18;;:::i;:::-;35377:2;35536:1;35533;35529:9;35518:20;;35244:300;;;;:::o;35550:191::-;;35610:20;35628:1;35610:20;:::i;:::-;35605:25;;35644:20;35662:1;35644:20;:::i;:::-;35639:25;;35683:1;35680;35677:8;35674:2;;;35688:18;;:::i;:::-;35674:2;35733:1;35730;35726:9;35718:17;;35595:146;;;;:::o;35747:96::-;;35813:24;35831:5;35813:24;:::i;:::-;35802:35;;35792:51;;;:::o;35849:90::-;;35926:5;35919:13;35912:21;35901:32;;35891:48;;;:::o;35945:126::-;;36022:42;36015:5;36011:54;36000:65;;35990:81;;;:::o;36077:77::-;;36143:5;36132:16;;36122:32;;;:::o;36160:86::-;;36235:4;36228:5;36224:16;36213:27;;36203:43;;;:::o;36252:307::-;36320:1;36330:113;36344:6;36341:1;36338:13;36330:113;;;36429:1;36424:3;36420:11;36414:18;36410:1;36405:3;36401:11;36394:39;36366:2;36363:1;36359:10;36354:15;;36330:113;;;36461:6;36458:1;36455:13;36452:2;;;36541:1;36532:6;36527:3;36523:16;36516:27;36452:2;36301:258;;;;:::o;36565:320::-;;36646:1;36640:4;36636:12;36626:22;;36693:1;36687:4;36683:12;36714:18;36704:2;;36770:4;36762:6;36758:17;36748:27;;36704:2;36832;36824:6;36821:14;36801:18;36798:38;36795:2;;;36851:18;;:::i;:::-;36795:2;36616:269;;;;:::o;36891:233::-;;36953:24;36971:5;36953:24;:::i;:::-;36944:33;;36999:66;36992:5;36989:77;36986:2;;;37069:18;;:::i;:::-;36986:2;37116:1;37109:5;37105:13;37098:20;;36934:190;;;:::o;37130:180::-;37178:77;37175:1;37168:88;37275:4;37272:1;37265:15;37299:4;37296:1;37289:15;37316:180;37364:77;37361:1;37354:88;37461:4;37458:1;37451:15;37485:4;37482:1;37475:15;37502:180;37550:77;37547:1;37540:88;37647:4;37644:1;37637:15;37671:4;37668:1;37661:15;37688:180;37736:77;37733:1;37726:88;37833:4;37830:1;37823:15;37857:4;37854:1;37847:15;37874:102;;37966:2;37962:7;37957:2;37950:5;37946:14;37942:28;37932:38;;37922:54;;;:::o;37982:122::-;38055:24;38073:5;38055:24;:::i;:::-;38048:5;38045:35;38035:2;;38094:1;38091;38084:12;38035:2;38025:79;:::o;38110:116::-;38180:21;38195:5;38180:21;:::i;:::-;38173:5;38170:32;38160:2;;38216:1;38213;38206:12;38160:2;38150:76;:::o;38232:122::-;38305:24;38323:5;38305:24;:::i;:::-;38298:5;38295:35;38285:2;;38344:1;38341;38334:12;38285:2;38275:79;:::o

Swarm Source

ipfs://77563bf88ac284b7785e9bb44681de9df806badf6c7f0203cca63dae3186b54e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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.