CRO Price: $0.09 (+12.84%)

Contract

0x6065BF700DDe379c063bF9fEE14A8EE234bE7c98

Overview

CRO Balance

Cronos Chain LogoCronos Chain LogoCronos Chain Logo0 CRO

CRO Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Enabled61379202022-12-22 15:32:28852 days ago1671723148IN
0x6065BF70...234bE7c98
0 CRO0.142001864,850.61885062
Rescue Tokens61378782022-12-22 15:28:31852 days ago1671722911IN
0x6065BF70...234bE7c98
0 CRO5.849509134,850.62079739
Rescue Tokens61378682022-12-22 15:27:35852 days ago1671722855IN
0x6065BF70...234bE7c98
0 CRO0.273094824,850.62127515
Unstake61364372022-12-22 13:12:40852 days ago1671714760IN
0x6065BF70...234bE7c98
0 CRO6.357621124,851.1869094
Set Multiplier61355352022-12-22 11:47:41852 days ago1671709661IN
0x6065BF70...234bE7c98
0 CRO0.191914234,850.72869915
Claim61279802022-12-21 23:56:10853 days ago1671666970IN
0x6065BF70...234bE7c98
0 CRO6.21166694,851.57985868
Stake61248212022-12-21 18:58:23853 days ago1671649103IN
0x6065BF70...234bE7c98
0 CRO4.743895074,851.72465999
Claim61237212022-12-21 17:14:43853 days ago1671642883IN
0x6065BF70...234bE7c98
0 CRO4.471153574,851.77534984
Zap In61234452022-12-21 16:48:41853 days ago1671641321IN
0x6065BF70...234bE7c98
0 CRO12.229315074,851.78805107
Claim61214552022-12-21 13:40:34853 days ago1671630034IN
0x6065BF70...234bE7c98
0 CRO4.469866614,850.37883
Claim61152942022-12-21 4:00:43854 days ago1671595243IN
0x6065BF70...234bE7c98
0 CRO4.470131014,850.66574
Unstake61150722022-12-21 3:39:50854 days ago1671593990IN
0x6065BF70...234bE7c98
0 CRO4.847840514,891.03323386
Claim61136222022-12-21 1:23:18854 days ago1671585798IN
0x6065BF70...234bE7c98
0 CRO4.470201924,850.7426924
Claim61134962022-12-21 1:11:27854 days ago1671585087IN
0x6065BF70...234bE7c98
0 CRO4.47020734,850.7485253
Claim61121592022-12-20 23:05:19854 days ago1671577519IN
0x6065BF70...234bE7c98
0 CRO4.471645474,852.309125
Unstake61101712022-12-20 19:57:52854 days ago1671566272IN
0x6065BF70...234bE7c98
0 CRO4.663917154,852.39888541
Claim61101572022-12-20 19:56:33854 days ago1671566193IN
0x6065BF70...234bE7c98
0 CRO4.471728784,852.39953049
Zap In61086762022-12-20 17:37:06854 days ago1671557826IN
0x6065BF70...234bE7c98
0 CRO15.453416424,852.4677973
Claim61068372022-12-20 14:43:47854 days ago1671547427IN
0x6065BF70...234bE7c98
0 CRO4.471868664,852.55131318
Claim61055542022-12-20 12:42:57854 days ago1671540177IN
0x6065BF70...234bE7c98
0 CRO4.471923484,852.61080041
Zap In61031932022-12-20 9:00:40855 days ago1671526840IN
0x6065BF70...234bE7c98
0 CRO15.454223534,852.7212349
Claim60973782022-12-19 23:53:31855 days ago1671494011IN
0x6065BF70...234bE7c98
0 CRO4.470893114,851.49271722
Zap In60944992022-12-19 19:22:11855 days ago1671477731IN
0x6065BF70...234bE7c98
0 CRO12.248860244,853.1249302
Zap In60935362022-12-19 17:51:26855 days ago1671472286IN
0x6065BF70...234bE7c98
0 CRO12.049276754,851.66961931
Claim60904152022-12-19 12:57:07855 days ago1671454627IN
0x6065BF70...234bE7c98
0 CRO4.472570764,853.31318343
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ZapFrontEnd

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-10-21
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

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

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

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

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

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

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

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

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

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

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

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

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

interface IUniswapV2Pair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface IERC20 {
    function totalSupply() external view returns (uint);

    function balanceOf(address account) external view returns (uint);

    function transfer(address recipient, uint amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint amount
    ) external returns (bool);
}

interface IERC721Receiver {

    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

contract ERC721Holder is IERC721Receiver {
 
    function onERC721Received(
        address,
        address,
        uint256,
        bytes memory
    ) public virtual override returns (bytes4) {
        return this.onERC721Received.selector;
    }
}

interface IERC165 {

    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

interface IERC721 is IERC165 {
  
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

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

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);

        _afterTokenTransfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);

        _afterTokenTransfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);

        _afterTokenTransfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}

  
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

interface ZapDatabase {
    function isAdmin(address account) external view returns (uint256 value);
    function getUserRecordBal(address account) external view returns (uint256 value);
    function getUserRecordStakedTime(address account) external view returns (uint256 value);
    function getUserRecordLastClaimed(address account) external view returns (uint256 value);
    function getTotalLocked() external view returns (uint256 value);

    function updateTotalLocked(uint256 amount) external;
    function updateUserRecord(address account, uint256 _bal, uint256 _lastClaimed, uint256 _stakedTime) external;
}

contract ZapFrontEnd is Ownable, ERC721Holder {
    address public DBaddi = 0x3A59F3466eC3957604e0BC02834A8Ad5DF2ED2cf;
    address public constant ROUTER = 0x145677FC4d9b8F19B5D56d1820c48e0443049a30;
    address public WCRO = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23;
    address public DBF = 0xA2ae6273Dd65F9fA76C3d383eDe9c1261e025DAC;
    address public PAIR = 0xd266f9eb1A93B00d068ece10682d97475439C6A3;

    uint256 public rValue = 35468936678614100;
    uint256 public multiplier = 10000;
    uint256 public enabled = 1;

    function setEnabled(uint256 _enabled) public {
        require(ZapDatabase(DBaddi).isAdmin(msg.sender) == 1, "Your not an admin");
        enabled = _enabled;
    }

    function setDBAddi(address _Addi) public {
        require(ZapDatabase(DBaddi).isAdmin(msg.sender) == 1, "Your not an admin");
        require(enabled == 1, "Contract not enabled");
        DBaddi = _Addi;
    }

    function setMultiplier(uint256 _mul) public {
        require(ZapDatabase(DBaddi).isAdmin(msg.sender) == 1, "Your not an admin");
        require(enabled == 1, "Contract not enabled");
        require(_mul >= 10000, "Multiplier must be at least 10000");
		multiplier = _mul;
	}

    function addLiquidity(uint WCROAmount, uint DBFAmount) public returns (uint){
        require(enabled == 1, "Contract not enabled");
        require(IERC20(WCRO).balanceOf(msg.sender) >= WCROAmount, "You dont have this much WCRO");
        require(IERC20(DBF).balanceOf(msg.sender) >= DBFAmount, "You dont have this much DBF");
        require(IERC20(WCRO).allowance(msg.sender, address(this)) >= WCROAmount, "Token transfer not approved");
        require(IERC20(DBF).allowance(msg.sender, address(this)) >= DBFAmount, "Token transfer not approved");
        
        IERC20(WCRO).transferFrom(msg.sender, address(this), WCROAmount);
        IERC20(DBF).transferFrom(msg.sender, address(this), DBFAmount);

        IERC20(WCRO).approve(ROUTER, WCROAmount);
        IERC20(DBF).approve(ROUTER, DBFAmount);

        (uint amountA, uint amountB, uint liquidity) = IUniswapV2Router(ROUTER)
            .addLiquidity(
                WCRO,
                DBF,
                WCROAmount,
                DBFAmount,
                1,
                1,
                msg.sender,
                block.timestamp + 300
            );

        amountA = amountA + amountB;

        return liquidity;
    }

    function removeLiquidity(uint amount) public {
        require(enabled == 1, "Contract not enabled");
        require(IERC20(PAIR).balanceOf(msg.sender) >= amount, "You dont have this much liquidity");
        require(IERC20(PAIR).allowance(msg.sender, address(this)) >= amount, "Token transfer not approved");
        
        IERC20(PAIR).transferFrom(msg.sender, address(this), amount);
        IERC20(PAIR).approve(ROUTER, amount);

        IUniswapV2Router(ROUTER)
            .removeLiquidity(
                WCRO,
                DBF,
                amount,
                1,
                1,
                msg.sender,
                block.timestamp + 300
            );
    }

    function getTokenPriceDBFTOWCRO(uint amount) public view returns(uint) {
        require(enabled == 1, "Contract not enabled");
        IUniswapV2Pair liq = IUniswapV2Pair(PAIR);
        (uint Res0, uint Res1,) = liq.getReserves();

        return((amount*Res1)/Res0);
    }

    function getTokenPriceWCROTODBF(uint amount) public view returns(uint) {
        require(enabled == 1, "Contract not enabled");
        IUniswapV2Pair liq = IUniswapV2Pair(PAIR);
        (uint Res0, uint Res1,) = liq.getReserves();

        return((amount*Res0)/Res1);
    }

    function SwapWCROFORDBF(uint amount) public {
        require(enabled == 1, "Contract not enabled");
        uint amountOut = (getTokenPriceDBFTOWCRO(amount / 100) * 98);
        
        require(IERC20(WCRO).balanceOf(msg.sender) >= amount, "You dont have this much WCRO");
        require(IERC20(WCRO).allowance(msg.sender, address(this)) >= amount, "Token transfer not approved");
        
        IERC20(WCRO).transferFrom(msg.sender, address(this), amount);
        IERC20(WCRO).approve(ROUTER, amount);

        address[] memory path;
        path = new address[](2);
        path[0] = WCRO;
        path[1] = DBF;

        IUniswapV2Router(ROUTER)
            .swapExactTokensForTokens(
                amount,
                amountOut,
                path,
                msg.sender,
                block.timestamp + 300
            );
    }

    function zapIn(uint amount) public {
        require(enabled == 1, "Contract not enabled");
        uint liquidity = zapInNoStake(amount);
        stake(liquidity);
    }

    function zapInNoStake(uint amount) public returns(uint) {
        require(enabled == 1, "Contract not enabled");
        uint amountIn = (amount / 2);
        uint amountOut = ((getTokenPriceDBFTOWCRO(amount / 2) / 100) * 98);
        
        require(IERC20(WCRO).balanceOf(msg.sender) >= amountIn, "You dont have this much WCRO");
        require(IERC20(WCRO).allowance(msg.sender, address(this)) >= amountIn, "Token transfer not approved");
        
        IERC20(WCRO).transferFrom(msg.sender, address(this), amount);
        IERC20(WCRO).approve(ROUTER, amountIn);

        address[] memory path;
        path = new address[](2);
        path[0] = WCRO;
        path[1] = DBF;

        IUniswapV2Router(ROUTER)
            .swapExactTokensForTokens(
                amountIn,
                amountOut,
                path,
                address(this),
                block.timestamp + 300
            );

        amountIn = (amountIn / 100) * 98;

        IERC20(WCRO).approve(ROUTER, amountIn);
        IERC20(DBF).approve(ROUTER, amountOut);

        (uint amountA, uint amountB, uint liquidity) = IUniswapV2Router(ROUTER)
            .addLiquidity(
                WCRO,
                DBF,
                amountIn,
                amountOut,
                1,
                1,
                msg.sender,
                block.timestamp + 300
            );

        amountA = amountA + amountB;

        return liquidity;
    }

    function zapOut(uint amount) public {
        require(enabled == 1, "Contract not enabled");
        unstake(amount);
        removeLiquidity(amount);
    }

    function stake(uint256 _theQty) public {
        require(enabled == 1, "Contract not enabled");
        require(IERC20(PAIR).balanceOf(msg.sender) >= _theQty, "You do no have enough to stake!");
        require(IERC20(PAIR).allowance(msg.sender, address(this)) >= _theQty, "Token transfer not approved");
        
        uint256 theValue = _theQty;
        if (ZapDatabase(DBaddi).getUserRecordBal(msg.sender) > 0)
        {
            uint256 rewards = calcRewards(msg.sender);
            if (rewards > 0)
            {
                require(IERC20(DBF).balanceOf(DBaddi) >= rewards, "Oops the rewards pool is empty!");
                IERC20(DBF).transferFrom(DBaddi, msg.sender, rewards);
            }

            theValue += ZapDatabase(DBaddi).getUserRecordBal(msg.sender);
        }
        IERC20(PAIR).transferFrom(msg.sender, DBaddi, _theQty);

        ZapDatabase(DBaddi).updateUserRecord(msg.sender, theValue, block.timestamp, block.timestamp);
        ZapDatabase(DBaddi).updateTotalLocked(ZapDatabase(DBaddi).getTotalLocked() + _theQty);
    }

    function unstake(uint256 _theQty) public {
        require(enabled == 1, "Contract not enabled");
        require(ZapDatabase(DBaddi).getUserRecordBal(msg.sender) >= _theQty, "You do not have this much to unstake!");
		
        uint256 theValue = 0;
        if (ZapDatabase(DBaddi).getUserRecordBal(msg.sender) > 0)
        {
            uint256 rewards = calcRewards(msg.sender);
            if (rewards > 0)
            {
                require(IERC20(DBF).balanceOf(DBaddi) >= rewards, "Oops the rewards pool is empty!");
                IERC20(DBF).transferFrom(DBaddi, msg.sender, rewards);
            }
            theValue = ZapDatabase(DBaddi).getUserRecordBal(msg.sender);
            theValue -= _theQty;
        }

        IERC20(PAIR).transferFrom(DBaddi, msg.sender, _theQty);
        
        ZapDatabase(DBaddi).updateUserRecord(msg.sender, theValue, block.timestamp, ZapDatabase(DBaddi).getUserRecordStakedTime(msg.sender));
        ZapDatabase(DBaddi).updateTotalLocked(ZapDatabase(DBaddi).getTotalLocked() - _theQty);
    }

    function claim() public {
        require(enabled == 1, "Contract not enabled");
		require(ZapDatabase(DBaddi).getUserRecordBal(msg.sender) > 0, "You do not have anything to unstake!");
        uint256 rewards = calcRewards(msg.sender);
        require(IERC20(DBF).balanceOf(DBaddi) >= rewards, "Oops the rewards pool is empty!");
        IERC20(DBF).transferFrom(DBaddi, msg.sender, rewards);
        ZapDatabase(DBaddi).updateUserRecord(msg.sender, ZapDatabase(DBaddi).getUserRecordBal(msg.sender), block.timestamp, ZapDatabase(DBaddi).getUserRecordStakedTime(msg.sender));
    }

    function calcRewards(address account) public view returns (uint256) {
        require(enabled == 1, "Contract not enabled");
        uint256 staked = ZapDatabase(DBaddi).getUserRecordBal(account);
        if (staked < 1e18)
        {
            return 0;
        }
        else
        {
            staked = staked / 1e18;
            uint256 rPerToken = rValue / (ZapDatabase(DBaddi).getTotalLocked() / 1e18);
            uint256 uSeconds = block.timestamp - ZapDatabase(DBaddi).getUserRecordLastClaimed(account);
            uint256 rSeconds = uSeconds * rPerToken;
            uint256 indvidualR = staked * rSeconds;
            indvidualR = (indvidualR * multiplier) / 10000;

            return indvidualR;
        }
    }

    function rescueTokens(address account, address _adr, uint256 amount) public {
        require(ZapDatabase(DBaddi).isAdmin(msg.sender) == 1, "Your not an admin");
        IERC20(_adr).transfer(account,amount);
    }

    function rescueNft(uint _id,address recipient, address NFT) public {
        require(ZapDatabase(DBaddi).isAdmin(msg.sender) == 1, "Your not an admin");
        ERC721(NFT).transferFrom(address(this),recipient, _id);
    }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"DBF","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DBaddi","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROUTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapWCROFORDBF","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WCRO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"WCROAmount","type":"uint256"},{"internalType":"uint256","name":"DBFAmount","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"calcRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enabled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTokenPriceDBFTOWCRO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTokenPriceWCROTODBF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"address","name":"NFT","type":"address"}],"name":"rescueNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"_adr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_Addi","type":"address"}],"name":"setDBAddi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_enabled","type":"uint256"}],"name":"setEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mul","type":"uint256"}],"name":"setMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_theQty","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_theQty","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"zapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"zapInNoStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"zapOut","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052733a59f3466ec3957604e0bc02834a8ad5df2ed2cf600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a2ae6273dd65f9fa76c3d383ede9c1261e025dac600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d266f9eb1a93b00d068ece10682d97475439c6a3600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550667e02cf5b4a245460055561271060065560016007553480156200017b57600080fd5b506200019c62000190620001a260201b60201c565b620001aa60201b60201c565b6200026e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b615497806200027e6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80637699cfb211610104578063ace3a8a7116100a2578063cea9d26f11610071578063cea9d26f146104f6578063ef55066614610512578063f2fde38b1461052e578063fe27824a1461054a576101cf565b8063ace3a8a71461045a578063ae1c786814610478578063c2b36e32146104a8578063c5da5794146104d8576101cf565b80638da5cb5b116100de5780638da5cb5b146103d45780639c8f9f23146103f25780639cd441da1461040e578063a694fc3a1461043e576101cf565b80637699cfb21461035857806376c257661461037457806385579741146103a4576101cf565b806332fe7b26116101715780634e71d92d1161014b5780634e71d92d1461030c578063641579a61461031657806370e0dd3214610332578063715018a61461034e576101cf565b806332fe7b26146102b457806335f2df57146102d257806341c5d964146102ee576101cf565b80631b3ed722116101ad5780631b3ed7221461023e5780631d470cb11461025c578063238dafe01461027a5780632e17de7814610298576101cf565b8063150b7a02146101d457806315bbb15b1461020457806315d429bf14610220575b600080fd5b6101ee60048036038101906101e99190614409565b610566565b6040516101fb91906144c7565b60405180910390f35b61021e600480360381019061021991906144e2565b61057a565b005b610228610661565b604051610235919061451e565b60405180910390f35b610246610687565b6040516102539190614548565b60405180910390f35b61026461068d565b604051610271919061451e565b60405180910390f35b6102826106b3565b60405161028f9190614548565b60405180910390f35b6102b260048036038101906102ad91906144e2565b6106b9565b005b6102bc610e2a565b6040516102c9919061451e565b60405180910390f35b6102ec60048036038101906102e79190614563565b610e42565b005b6102f6610fa8565b6040516103039190614548565b60405180910390f35b610314610fae565b005b610330600480360381019061032b91906144e2565b61146f565b005b61034c60048036038101906103479190614590565b6115e0565b005b610356611731565b005b610372600480360381019061036d91906144e2565b6117b9565b005b61038e600480360381019061038991906144e2565b611d19565b60405161039b9190614548565b60405180910390f35b6103be60048036038101906103b991906144e2565b611e3f565b6040516103cb9190614548565b60405180910390f35b6103dc611f65565b6040516103e9919061451e565b60405180910390f35b61040c600480360381019061040791906144e2565b611f8e565b005b610428600480360381019061042391906145e3565b6123db565b6040516104359190614548565b60405180910390f35b610458600480360381019061045391906144e2565b612b63565b005b61046261331a565b60405161046f919061451e565b60405180910390f35b610492600480360381019061048d9190614563565b613340565b60405161049f9190614548565b60405180910390f35b6104c260048036038101906104bd91906144e2565b613602565b6040516104cf9190614548565b60405180910390f35b6104e0613e18565b6040516104ed919061451e565b60405180910390f35b610510600480360381019061050b9190614623565b613e3e565b005b61052c600480360381019061052791906144e2565b613f9f565b005b61054860048036038101906105439190614563565b613ffe565b005b610564600480360381019061055f91906144e2565b6140f5565b005b600063150b7a0260e01b9050949350505050565b60018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324d7806c336040518263ffffffff1660e01b81526004016105d6919061451e565b602060405180830381865afa1580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610617919061468b565b14610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064e90614715565b60405180910390fd5b8060078190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6001600754146106fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f590614781565b60405180910390fd5b80600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b815260040161075a919061451e565b602060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061468b565b10156107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d390614813565b60405180910390fd5b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b815260040161083a919061451e565b602060405180830381865afa158015610857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087b919061468b565b1115610b0b57600061088c33613340565b90506000811115610a5d5780600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610915919061451e565b602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610956919061468b565b1015610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e9061487f565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401610a189392919061489f565b6020604051808303816000875af1158015610a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5b919061490e565b505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b8152600401610ab8919061451e565b602060405180830381865afa158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af9919061468b565b91508282610b07919061496a565b9150505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b8152600401610b8c9392919061489f565b6020604051808303816000875af1158015610bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcf919061490e565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663757704f1338342600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd87af6b336040518263ffffffff1660e01b8152600401610c6c919061451e565b602060405180830381865afa158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cad919061468b565b6040518563ffffffff1660e01b8152600401610ccc949392919061499e565b600060405180830381600087803b158015610ce657600080fd5b505af1158015610cfa573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637620aa5f83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4732da66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce919061468b565b610dd8919061496a565b6040518263ffffffff1660e01b8152600401610df49190614548565b600060405180830381600087803b158015610e0e57600080fd5b505af1158015610e22573d6000803e3d6000fd5b505050505050565b73145677fc4d9b8f19b5d56d1820c48e0443049a3081565b60018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324d7806c336040518263ffffffff1660e01b8152600401610e9e919061451e565b602060405180830381865afa158015610ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edf919061468b565b14610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1690614715565b60405180910390fd5b600160075414610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90614781565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b600160075414610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90614781565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b8152600401611050919061451e565b602060405180830381865afa15801561106d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611091919061468b565b116110d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c890614a55565b60405180910390fd5b60006110dc33613340565b905080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161115c919061451e565b602060405180830381865afa158015611179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d919061468b565b10156111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d59061487f565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b815260040161125f9392919061489f565b6020604051808303816000875af115801561127e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a2919061490e565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663757704f133600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b815260040161133d919061451e565b602060405180830381865afa15801561135a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137e919061468b565b42600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd87af6b336040518263ffffffff1660e01b81526004016113da919061451e565b602060405180830381865afa1580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141b919061468b565b6040518563ffffffff1660e01b815260040161143a949392919061499e565b600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b5050505050565b60018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324d7806c336040518263ffffffff1660e01b81526004016114cb919061451e565b602060405180830381865afa1580156114e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150c919061468b565b1461154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390614715565b60405180910390fd5b600160075414611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890614781565b60405180910390fd5b6127108110156115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd90614ae7565b60405180910390fd5b8060068190555050565b60018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324d7806c336040518263ffffffff1660e01b815260040161163c919061451e565b602060405180830381865afa158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167d919061468b565b146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490614715565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd3084866040518463ffffffff1660e01b81526004016116fa9392919061489f565b600060405180830381600087803b15801561171457600080fd5b505af1158015611728573d6000803e3d6000fd5b50505050505050565b61173961414f565b73ffffffffffffffffffffffffffffffffffffffff16611757611f65565b73ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490614b53565b60405180910390fd5b6117b76000614157565b565b6001600754146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f590614781565b60405180910390fd5b600060626118176064846118129190614ba2565b611e3f565b6118219190614bd3565b905081600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161187f919061451e565b602060405180830381865afa15801561189c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c0919061468b565b1015611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890614c61565b60405180910390fd5b81600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161195f929190614c81565b602060405180830381865afa15801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a0919061468b565b10156119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890614cf6565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611a409392919061489f565b6020604051808303816000875af1158015611a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a83919061490e565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30846040518363ffffffff1660e01b8152600401611af5929190614d16565b6020604051808303816000875af1158015611b14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b38919061490e565b506060600267ffffffffffffffff811115611b5657611b556142de565b5b604051908082528060200260200182016040528015611b845781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110611bbe57611bbd614d3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611c2f57611c2e614d3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff166338ed17398484843361012c42611cab9190614d6e565b6040518663ffffffff1660e01b8152600401611ccb959493929190614e60565b6000604051808303816000875af1158015611cea573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d139190614f82565b50505050565b6000600160075414611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790614781565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df9919061504d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150808286611e2b9190614bd3565b611e359190614ba2565b9350505050919050565b6000600160075414611e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7d90614781565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1f919061504d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150818186611f519190614bd3565b611f5b9190614ba2565b9350505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160075414611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca90614781565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161202f919061451e565b602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612070919061468b565b10156120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a890615112565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161210f929190614c81565b602060405180830381865afa15801561212c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612150919061468b565b1015612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890614cf6565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016121f09392919061489f565b6020604051808303816000875af115801561220f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612233919061490e565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30836040518363ffffffff1660e01b81526004016122a5929190614d16565b6020604051808303816000875af11580156122c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e8919061490e565b5073145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff1663baa2abde600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846001803361012c426123729190614d6e565b6040518863ffffffff1660e01b81526004016123949796959493929190615177565b60408051808303816000875af11580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d691906151e6565b505050565b6000600160075414612422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241990614781565b60405180910390fd5b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161247e919061451e565b602060405180830381865afa15801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf919061468b565b1015612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790614c61565b60405180910390fd5b81600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161255c919061451e565b602060405180830381865afa158015612579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259d919061468b565b10156125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d590615272565b60405180910390fd5b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161263c929190614c81565b602060405180830381865afa158015612659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267d919061468b565b10156126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b590614cf6565b60405180910390fd5b81600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161271c929190614c81565b602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d919061468b565b101561279e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279590614cf6565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b81526004016127fd9392919061489f565b6020604051808303816000875af115801561281c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612840919061490e565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016128a09392919061489f565b6020604051808303816000875af11580156128bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e3919061490e565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30856040518363ffffffff1660e01b8152600401612955929190614d16565b6020604051808303816000875af1158015612974573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612998919061490e565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30846040518363ffffffff1660e01b8152600401612a0a929190614d16565b6020604051808303816000875af1158015612a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4d919061490e565b50600080600073145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff1663e8e33700600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689896001803361012c42612add9190614d6e565b6040518963ffffffff1660e01b8152600401612b00989796959493929190615292565b6060604051808303816000875af1158015612b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b439190615310565b9250925092508183612b559190614d6e565b925080935050505092915050565b600160075414612ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9f90614781565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401612c04919061451e565b602060405180830381865afa158015612c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c45919061468b565b1015612c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7d906153af565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401612ce4929190614c81565b602060405180830381865afa158015612d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d25919061468b565b1015612d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5d90614cf6565b60405180910390fd5b60008190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b8152600401612dc8919061451e565b602060405180830381865afa158015612de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e09919061468b565b1115613096576000612e1a33613340565b90506000811115612feb5780600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612ea3919061451e565b602060405180830381865afa158015612ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee4919061468b565b1015612f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1c9061487f565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401612fa69392919061489f565b6020604051808303816000875af1158015612fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe9919061490e565b505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b8152600401613046919061451e565b602060405180830381865afa158015613063573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613087919061468b565b826130929190614d6e565b9150505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b81526004016131179392919061489f565b6020604051808303816000875af1158015613136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315a919061490e565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663757704f1338342426040518563ffffffff1660e01b81526004016131bc949392919061499e565b600060405180830381600087803b1580156131d657600080fd5b505af11580156131ea573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637620aa5f83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4732da66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561329a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132be919061468b565b6132c89190614d6e565b6040518263ffffffff1660e01b81526004016132e49190614548565b600060405180830381600087803b1580156132fe57600080fd5b505af1158015613312573d6000803e3d6000fd5b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160075414613387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337e90614781565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8846040518263ffffffff1660e01b81526004016133e4919061451e565b602060405180830381865afa158015613401573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613425919061468b565b9050670de0b6b3a76400008110156134415760009150506135fd565b670de0b6b3a7640000816134559190614ba2565b90506000670de0b6b3a7640000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4732da66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f3919061468b565b6134fd9190614ba2565b60055461350a9190614ba2565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8442ed6866040518263ffffffff1660e01b8152600401613569919061451e565b602060405180830381865afa158015613586573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135aa919061468b565b426135b5919061496a565b9050600082826135c59190614bd3565b9050600081856135d59190614bd3565b9050612710600654826135e89190614bd3565b6135f29190614ba2565b905080955050505050505b919050565b6000600160075414613649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364090614781565b60405180910390fd5b60006002836136589190614ba2565b90506000606260646136756002876136709190614ba2565b611e3f565b61367f9190614ba2565b6136899190614bd3565b905081600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016136e7919061451e565b602060405180830381865afa158015613704573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613728919061468b565b1015613769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376090614c61565b60405180910390fd5b81600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016137c7929190614c81565b602060405180830381865afa1580156137e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613808919061468b565b1015613849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384090614cf6565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016138a89392919061489f565b6020604051808303816000875af11580156138c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138eb919061490e565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30846040518363ffffffff1660e01b815260040161395d929190614d16565b6020604051808303816000875af115801561397c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a0919061490e565b506060600267ffffffffffffffff8111156139be576139bd6142de565b5b6040519080825280602002602001820160405280156139ec5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110613a2657613a25614d3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613a9757613a96614d3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff166338ed17398484843061012c42613b139190614d6e565b6040518663ffffffff1660e01b8152600401613b33959493929190614e60565b6000604051808303816000875af1158015613b52573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613b7b9190614f82565b506062606484613b8b9190614ba2565b613b959190614bd3565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30856040518363ffffffff1660e01b8152600401613c08929190614d16565b6020604051808303816000875af1158015613c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4b919061490e565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30846040518363ffffffff1660e01b8152600401613cbd929190614d16565b6020604051808303816000875af1158015613cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d00919061490e565b50600080600073145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff1663e8e33700600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689896001803361012c42613d909190614d6e565b6040518963ffffffff1660e01b8152600401613db3989796959493929190615292565b6060604051808303816000875af1158015613dd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df69190615310565b9250925092508183613e089190614d6e565b9250809650505050505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324d7806c336040518263ffffffff1660e01b8152600401613e9a919061451e565b602060405180830381865afa158015613eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613edb919061468b565b14613f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f1290614715565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401613f56929190614d16565b6020604051808303816000875af1158015613f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f99919061490e565b50505050565b600160075414613fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fdb90614781565b60405180910390fd5b6000613fef82613602565b9050613ffa81612b63565b5050565b61400661414f565b73ffffffffffffffffffffffffffffffffffffffff16614024611f65565b73ffffffffffffffffffffffffffffffffffffffff161461407a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161407190614b53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036140e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140e090615441565b60405180910390fd5b6140f281614157565b50565b60016007541461413a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161413190614781565b60405180910390fd5b614143816106b9565b61414c81611f8e565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061425a8261422f565b9050919050565b61426a8161424f565b811461427557600080fd5b50565b60008135905061428781614261565b92915050565b6000819050919050565b6142a08161428d565b81146142ab57600080fd5b50565b6000813590506142bd81614297565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614316826142cd565b810181811067ffffffffffffffff82111715614335576143346142de565b5b80604052505050565b600061434861421b565b9050614354828261430d565b919050565b600067ffffffffffffffff821115614374576143736142de565b5b61437d826142cd565b9050602081019050919050565b82818337600083830152505050565b60006143ac6143a784614359565b61433e565b9050828152602081018484840111156143c8576143c76142c8565b5b6143d384828561438a565b509392505050565b600082601f8301126143f0576143ef6142c3565b5b8135614400848260208601614399565b91505092915050565b6000806000806080858703121561442357614422614225565b5b600061443187828801614278565b945050602061444287828801614278565b9350506040614453878288016142ae565b925050606085013567ffffffffffffffff8111156144745761447361422a565b5b614480878288016143db565b91505092959194509250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6144c18161448c565b82525050565b60006020820190506144dc60008301846144b8565b92915050565b6000602082840312156144f8576144f7614225565b5b6000614506848285016142ae565b91505092915050565b6145188161424f565b82525050565b6000602082019050614533600083018461450f565b92915050565b6145428161428d565b82525050565b600060208201905061455d6000830184614539565b92915050565b60006020828403121561457957614578614225565b5b600061458784828501614278565b91505092915050565b6000806000606084860312156145a9576145a8614225565b5b60006145b7868287016142ae565b93505060206145c886828701614278565b92505060406145d986828701614278565b9150509250925092565b600080604083850312156145fa576145f9614225565b5b6000614608858286016142ae565b9250506020614619858286016142ae565b9150509250929050565b60008060006060848603121561463c5761463b614225565b5b600061464a86828701614278565b935050602061465b86828701614278565b925050604061466c868287016142ae565b9150509250925092565b60008151905061468581614297565b92915050565b6000602082840312156146a1576146a0614225565b5b60006146af84828501614676565b91505092915050565b600082825260208201905092915050565b7f596f7572206e6f7420616e2061646d696e000000000000000000000000000000600082015250565b60006146ff6011836146b8565b915061470a826146c9565b602082019050919050565b6000602082019050818103600083015261472e816146f2565b9050919050565b7f436f6e7472616374206e6f7420656e61626c6564000000000000000000000000600082015250565b600061476b6014836146b8565b915061477682614735565b602082019050919050565b6000602082019050818103600083015261479a8161475e565b9050919050565b7f596f7520646f206e6f7420686176652074686973206d75636820746f20756e7360008201527f74616b6521000000000000000000000000000000000000000000000000000000602082015250565b60006147fd6025836146b8565b9150614808826147a1565b604082019050919050565b6000602082019050818103600083015261482c816147f0565b9050919050565b7f4f6f707320746865207265776172647320706f6f6c20697320656d7074792100600082015250565b6000614869601f836146b8565b915061487482614833565b602082019050919050565b600060208201905081810360008301526148988161485c565b9050919050565b60006060820190506148b4600083018661450f565b6148c1602083018561450f565b6148ce6040830184614539565b949350505050565b60008115159050919050565b6148eb816148d6565b81146148f657600080fd5b50565b600081519050614908816148e2565b92915050565b60006020828403121561492457614923614225565b5b6000614932848285016148f9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149758261428d565b91506149808361428d565b92508282039050818111156149985761499761493b565b5b92915050565b60006080820190506149b3600083018761450f565b6149c06020830186614539565b6149cd6040830185614539565b6149da6060830184614539565b95945050505050565b7f596f7520646f206e6f74206861766520616e797468696e6720746f20756e737460008201527f616b652100000000000000000000000000000000000000000000000000000000602082015250565b6000614a3f6024836146b8565b9150614a4a826149e3565b604082019050919050565b60006020820190508181036000830152614a6e81614a32565b9050919050565b7f4d756c7469706c696572206d757374206265206174206c65617374203130303060008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ad16021836146b8565b9150614adc82614a75565b604082019050919050565b60006020820190508181036000830152614b0081614ac4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b3d6020836146b8565b9150614b4882614b07565b602082019050919050565b60006020820190508181036000830152614b6c81614b30565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bad8261428d565b9150614bb88361428d565b925082614bc857614bc7614b73565b5b828204905092915050565b6000614bde8261428d565b9150614be98361428d565b9250828202614bf78161428d565b91508282048414831517614c0e57614c0d61493b565b5b5092915050565b7f596f7520646f6e7420686176652074686973206d756368205743524f00000000600082015250565b6000614c4b601c836146b8565b9150614c5682614c15565b602082019050919050565b60006020820190508181036000830152614c7a81614c3e565b9050919050565b6000604082019050614c96600083018561450f565b614ca3602083018461450f565b9392505050565b7f546f6b656e207472616e73666572206e6f7420617070726f7665640000000000600082015250565b6000614ce0601b836146b8565b9150614ceb82614caa565b602082019050919050565b60006020820190508181036000830152614d0f81614cd3565b9050919050565b6000604082019050614d2b600083018561450f565b614d386020830184614539565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614d798261428d565b9150614d848361428d565b9250828201905080821115614d9c57614d9b61493b565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614dd78161424f565b82525050565b6000614de98383614dce565b60208301905092915050565b6000602082019050919050565b6000614e0d82614da2565b614e178185614dad565b9350614e2283614dbe565b8060005b83811015614e53578151614e3a8882614ddd565b9750614e4583614df5565b925050600181019050614e26565b5085935050505092915050565b600060a082019050614e756000830188614539565b614e826020830187614539565b8181036040830152614e948186614e02565b9050614ea3606083018561450f565b614eb06080830184614539565b9695505050505050565b600067ffffffffffffffff821115614ed557614ed46142de565b5b602082029050602081019050919050565b600080fd5b6000614efe614ef984614eba565b61433e565b90508083825260208201905060208402830185811115614f2157614f20614ee6565b5b835b81811015614f4a5780614f368882614676565b845260208401935050602081019050614f23565b5050509392505050565b600082601f830112614f6957614f686142c3565b5b8151614f79848260208601614eeb565b91505092915050565b600060208284031215614f9857614f97614225565b5b600082015167ffffffffffffffff811115614fb657614fb561422a565b5b614fc284828501614f54565b91505092915050565b60006dffffffffffffffffffffffffffff82169050919050565b614fee81614fcb565b8114614ff957600080fd5b50565b60008151905061500b81614fe5565b92915050565b600063ffffffff82169050919050565b61502a81615011565b811461503557600080fd5b50565b60008151905061504781615021565b92915050565b60008060006060848603121561506657615065614225565b5b600061507486828701614ffc565b935050602061508586828701614ffc565b925050604061509686828701615038565b9150509250925092565b7f596f7520646f6e7420686176652074686973206d756368206c6971756964697460008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006150fc6021836146b8565b9150615107826150a0565b604082019050919050565b6000602082019050818103600083015261512b816150ef565b9050919050565b6000819050919050565b6000819050919050565b600061516161515c61515784615132565b61513c565b61428d565b9050919050565b61517181615146565b82525050565b600060e08201905061518c600083018a61450f565b615199602083018961450f565b6151a66040830188614539565b6151b36060830187615168565b6151c06080830186615168565b6151cd60a083018561450f565b6151da60c0830184614539565b98975050505050505050565b600080604083850312156151fd576151fc614225565b5b600061520b85828601614676565b925050602061521c85828601614676565b9150509250929050565b7f596f7520646f6e7420686176652074686973206d756368204442460000000000600082015250565b600061525c601b836146b8565b915061526782615226565b602082019050919050565b6000602082019050818103600083015261528b8161524f565b9050919050565b6000610100820190506152a8600083018b61450f565b6152b5602083018a61450f565b6152c26040830189614539565b6152cf6060830188614539565b6152dc6080830187615168565b6152e960a0830186615168565b6152f660c083018561450f565b61530360e0830184614539565b9998505050505050505050565b60008060006060848603121561532957615328614225565b5b600061533786828701614676565b935050602061534886828701614676565b925050604061535986828701614676565b9150509250925092565b7f596f7520646f206e6f206861766520656e6f75676820746f207374616b652100600082015250565b6000615399601f836146b8565b91506153a482615363565b602082019050919050565b600060208201905081810360008301526153c88161538c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061542b6026836146b8565b9150615436826153cf565b604082019050919050565b6000602082019050818103600083015261545a8161541e565b905091905056fea26469706673582212200d75faae1e1e9ee8ad5d8c2f1047ee454d0e0fe7b57514f7ed75c42dd0e1d2eb64736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80637699cfb211610104578063ace3a8a7116100a2578063cea9d26f11610071578063cea9d26f146104f6578063ef55066614610512578063f2fde38b1461052e578063fe27824a1461054a576101cf565b8063ace3a8a71461045a578063ae1c786814610478578063c2b36e32146104a8578063c5da5794146104d8576101cf565b80638da5cb5b116100de5780638da5cb5b146103d45780639c8f9f23146103f25780639cd441da1461040e578063a694fc3a1461043e576101cf565b80637699cfb21461035857806376c257661461037457806385579741146103a4576101cf565b806332fe7b26116101715780634e71d92d1161014b5780634e71d92d1461030c578063641579a61461031657806370e0dd3214610332578063715018a61461034e576101cf565b806332fe7b26146102b457806335f2df57146102d257806341c5d964146102ee576101cf565b80631b3ed722116101ad5780631b3ed7221461023e5780631d470cb11461025c578063238dafe01461027a5780632e17de7814610298576101cf565b8063150b7a02146101d457806315bbb15b1461020457806315d429bf14610220575b600080fd5b6101ee60048036038101906101e99190614409565b610566565b6040516101fb91906144c7565b60405180910390f35b61021e600480360381019061021991906144e2565b61057a565b005b610228610661565b604051610235919061451e565b60405180910390f35b610246610687565b6040516102539190614548565b60405180910390f35b61026461068d565b604051610271919061451e565b60405180910390f35b6102826106b3565b60405161028f9190614548565b60405180910390f35b6102b260048036038101906102ad91906144e2565b6106b9565b005b6102bc610e2a565b6040516102c9919061451e565b60405180910390f35b6102ec60048036038101906102e79190614563565b610e42565b005b6102f6610fa8565b6040516103039190614548565b60405180910390f35b610314610fae565b005b610330600480360381019061032b91906144e2565b61146f565b005b61034c60048036038101906103479190614590565b6115e0565b005b610356611731565b005b610372600480360381019061036d91906144e2565b6117b9565b005b61038e600480360381019061038991906144e2565b611d19565b60405161039b9190614548565b60405180910390f35b6103be60048036038101906103b991906144e2565b611e3f565b6040516103cb9190614548565b60405180910390f35b6103dc611f65565b6040516103e9919061451e565b60405180910390f35b61040c600480360381019061040791906144e2565b611f8e565b005b610428600480360381019061042391906145e3565b6123db565b6040516104359190614548565b60405180910390f35b610458600480360381019061045391906144e2565b612b63565b005b61046261331a565b60405161046f919061451e565b60405180910390f35b610492600480360381019061048d9190614563565b613340565b60405161049f9190614548565b60405180910390f35b6104c260048036038101906104bd91906144e2565b613602565b6040516104cf9190614548565b60405180910390f35b6104e0613e18565b6040516104ed919061451e565b60405180910390f35b610510600480360381019061050b9190614623565b613e3e565b005b61052c600480360381019061052791906144e2565b613f9f565b005b61054860048036038101906105439190614563565b613ffe565b005b610564600480360381019061055f91906144e2565b6140f5565b005b600063150b7a0260e01b9050949350505050565b60018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324d7806c336040518263ffffffff1660e01b81526004016105d6919061451e565b602060405180830381865afa1580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610617919061468b565b14610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064e90614715565b60405180910390fd5b8060078190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6001600754146106fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f590614781565b60405180910390fd5b80600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b815260040161075a919061451e565b602060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061468b565b10156107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d390614813565b60405180910390fd5b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b815260040161083a919061451e565b602060405180830381865afa158015610857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087b919061468b565b1115610b0b57600061088c33613340565b90506000811115610a5d5780600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610915919061451e565b602060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610956919061468b565b1015610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e9061487f565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401610a189392919061489f565b6020604051808303816000875af1158015610a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5b919061490e565b505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b8152600401610ab8919061451e565b602060405180830381865afa158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af9919061468b565b91508282610b07919061496a565b9150505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b8152600401610b8c9392919061489f565b6020604051808303816000875af1158015610bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcf919061490e565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663757704f1338342600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd87af6b336040518263ffffffff1660e01b8152600401610c6c919061451e565b602060405180830381865afa158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cad919061468b565b6040518563ffffffff1660e01b8152600401610ccc949392919061499e565b600060405180830381600087803b158015610ce657600080fd5b505af1158015610cfa573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637620aa5f83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4732da66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce919061468b565b610dd8919061496a565b6040518263ffffffff1660e01b8152600401610df49190614548565b600060405180830381600087803b158015610e0e57600080fd5b505af1158015610e22573d6000803e3d6000fd5b505050505050565b73145677fc4d9b8f19b5d56d1820c48e0443049a3081565b60018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324d7806c336040518263ffffffff1660e01b8152600401610e9e919061451e565b602060405180830381865afa158015610ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edf919061468b565b14610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1690614715565b60405180910390fd5b600160075414610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90614781565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b600160075414610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90614781565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b8152600401611050919061451e565b602060405180830381865afa15801561106d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611091919061468b565b116110d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c890614a55565b60405180910390fd5b60006110dc33613340565b905080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161115c919061451e565b602060405180830381865afa158015611179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d919061468b565b10156111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d59061487f565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b815260040161125f9392919061489f565b6020604051808303816000875af115801561127e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a2919061490e565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663757704f133600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b815260040161133d919061451e565b602060405180830381865afa15801561135a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137e919061468b565b42600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd87af6b336040518263ffffffff1660e01b81526004016113da919061451e565b602060405180830381865afa1580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141b919061468b565b6040518563ffffffff1660e01b815260040161143a949392919061499e565b600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b5050505050565b60018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324d7806c336040518263ffffffff1660e01b81526004016114cb919061451e565b602060405180830381865afa1580156114e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150c919061468b565b1461154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390614715565b60405180910390fd5b600160075414611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890614781565b60405180910390fd5b6127108110156115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd90614ae7565b60405180910390fd5b8060068190555050565b60018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324d7806c336040518263ffffffff1660e01b815260040161163c919061451e565b602060405180830381865afa158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167d919061468b565b146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490614715565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd3084866040518463ffffffff1660e01b81526004016116fa9392919061489f565b600060405180830381600087803b15801561171457600080fd5b505af1158015611728573d6000803e3d6000fd5b50505050505050565b61173961414f565b73ffffffffffffffffffffffffffffffffffffffff16611757611f65565b73ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490614b53565b60405180910390fd5b6117b76000614157565b565b6001600754146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f590614781565b60405180910390fd5b600060626118176064846118129190614ba2565b611e3f565b6118219190614bd3565b905081600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161187f919061451e565b602060405180830381865afa15801561189c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c0919061468b565b1015611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890614c61565b60405180910390fd5b81600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161195f929190614c81565b602060405180830381865afa15801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a0919061468b565b10156119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890614cf6565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611a409392919061489f565b6020604051808303816000875af1158015611a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a83919061490e565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30846040518363ffffffff1660e01b8152600401611af5929190614d16565b6020604051808303816000875af1158015611b14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b38919061490e565b506060600267ffffffffffffffff811115611b5657611b556142de565b5b604051908082528060200260200182016040528015611b845781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110611bbe57611bbd614d3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611c2f57611c2e614d3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff166338ed17398484843361012c42611cab9190614d6e565b6040518663ffffffff1660e01b8152600401611ccb959493929190614e60565b6000604051808303816000875af1158015611cea573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d139190614f82565b50505050565b6000600160075414611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790614781565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df9919061504d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150808286611e2b9190614bd3565b611e359190614ba2565b9350505050919050565b6000600160075414611e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7d90614781565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1f919061504d565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150818186611f519190614bd3565b611f5b9190614ba2565b9350505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160075414611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca90614781565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161202f919061451e565b602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612070919061468b565b10156120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a890615112565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161210f929190614c81565b602060405180830381865afa15801561212c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612150919061468b565b1015612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890614cf6565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016121f09392919061489f565b6020604051808303816000875af115801561220f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612233919061490e565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30836040518363ffffffff1660e01b81526004016122a5929190614d16565b6020604051808303816000875af11580156122c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e8919061490e565b5073145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff1663baa2abde600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846001803361012c426123729190614d6e565b6040518863ffffffff1660e01b81526004016123949796959493929190615177565b60408051808303816000875af11580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d691906151e6565b505050565b6000600160075414612422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241990614781565b60405180910390fd5b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161247e919061451e565b602060405180830381865afa15801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf919061468b565b1015612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790614c61565b60405180910390fd5b81600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161255c919061451e565b602060405180830381865afa158015612579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259d919061468b565b10156125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d590615272565b60405180910390fd5b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161263c929190614c81565b602060405180830381865afa158015612659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267d919061468b565b10156126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b590614cf6565b60405180910390fd5b81600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161271c929190614c81565b602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d919061468b565b101561279e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279590614cf6565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b81526004016127fd9392919061489f565b6020604051808303816000875af115801561281c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612840919061490e565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016128a09392919061489f565b6020604051808303816000875af11580156128bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e3919061490e565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30856040518363ffffffff1660e01b8152600401612955929190614d16565b6020604051808303816000875af1158015612974573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612998919061490e565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30846040518363ffffffff1660e01b8152600401612a0a929190614d16565b6020604051808303816000875af1158015612a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4d919061490e565b50600080600073145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff1663e8e33700600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689896001803361012c42612add9190614d6e565b6040518963ffffffff1660e01b8152600401612b00989796959493929190615292565b6060604051808303816000875af1158015612b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b439190615310565b9250925092508183612b559190614d6e565b925080935050505092915050565b600160075414612ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9f90614781565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401612c04919061451e565b602060405180830381865afa158015612c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c45919061468b565b1015612c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7d906153af565b60405180910390fd5b80600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401612ce4929190614c81565b602060405180830381865afa158015612d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d25919061468b565b1015612d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5d90614cf6565b60405180910390fd5b60008190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b8152600401612dc8919061451e565b602060405180830381865afa158015612de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e09919061468b565b1115613096576000612e1a33613340565b90506000811115612feb5780600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612ea3919061451e565b602060405180830381865afa158015612ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee4919061468b565b1015612f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1c9061487f565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401612fa69392919061489f565b6020604051808303816000875af1158015612fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe9919061490e565b505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8336040518263ffffffff1660e01b8152600401613046919061451e565b602060405180830381865afa158015613063573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613087919061468b565b826130929190614d6e565b9150505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b81526004016131179392919061489f565b6020604051808303816000875af1158015613136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315a919061490e565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663757704f1338342426040518563ffffffff1660e01b81526004016131bc949392919061499e565b600060405180830381600087803b1580156131d657600080fd5b505af11580156131ea573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637620aa5f83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4732da66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561329a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132be919061468b565b6132c89190614d6e565b6040518263ffffffff1660e01b81526004016132e49190614548565b600060405180830381600087803b1580156132fe57600080fd5b505af1158015613312573d6000803e3d6000fd5b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160075414613387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337e90614781565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380a324d8846040518263ffffffff1660e01b81526004016133e4919061451e565b602060405180830381865afa158015613401573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613425919061468b565b9050670de0b6b3a76400008110156134415760009150506135fd565b670de0b6b3a7640000816134559190614ba2565b90506000670de0b6b3a7640000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4732da66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f3919061468b565b6134fd9190614ba2565b60055461350a9190614ba2565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8442ed6866040518263ffffffff1660e01b8152600401613569919061451e565b602060405180830381865afa158015613586573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135aa919061468b565b426135b5919061496a565b9050600082826135c59190614bd3565b9050600081856135d59190614bd3565b9050612710600654826135e89190614bd3565b6135f29190614ba2565b905080955050505050505b919050565b6000600160075414613649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364090614781565b60405180910390fd5b60006002836136589190614ba2565b90506000606260646136756002876136709190614ba2565b611e3f565b61367f9190614ba2565b6136899190614bd3565b905081600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016136e7919061451e565b602060405180830381865afa158015613704573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613728919061468b565b1015613769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376090614c61565b60405180910390fd5b81600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016137c7929190614c81565b602060405180830381865afa1580156137e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613808919061468b565b1015613849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384090614cf6565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016138a89392919061489f565b6020604051808303816000875af11580156138c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138eb919061490e565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30846040518363ffffffff1660e01b815260040161395d929190614d16565b6020604051808303816000875af115801561397c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a0919061490e565b506060600267ffffffffffffffff8111156139be576139bd6142de565b5b6040519080825280602002602001820160405280156139ec5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110613a2657613a25614d3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613a9757613a96614d3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff166338ed17398484843061012c42613b139190614d6e565b6040518663ffffffff1660e01b8152600401613b33959493929190614e60565b6000604051808303816000875af1158015613b52573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613b7b9190614f82565b506062606484613b8b9190614ba2565b613b959190614bd3565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30856040518363ffffffff1660e01b8152600401613c08929190614d16565b6020604051808303816000875af1158015613c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4b919061490e565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b373145677fc4d9b8f19b5d56d1820c48e0443049a30846040518363ffffffff1660e01b8152600401613cbd929190614d16565b6020604051808303816000875af1158015613cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d00919061490e565b50600080600073145677fc4d9b8f19b5d56d1820c48e0443049a3073ffffffffffffffffffffffffffffffffffffffff1663e8e33700600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689896001803361012c42613d909190614d6e565b6040518963ffffffff1660e01b8152600401613db3989796959493929190615292565b6060604051808303816000875af1158015613dd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df69190615310565b9250925092508183613e089190614d6e565b9250809650505050505050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166324d7806c336040518263ffffffff1660e01b8152600401613e9a919061451e565b602060405180830381865afa158015613eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613edb919061468b565b14613f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f1290614715565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401613f56929190614d16565b6020604051808303816000875af1158015613f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f99919061490e565b50505050565b600160075414613fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fdb90614781565b60405180910390fd5b6000613fef82613602565b9050613ffa81612b63565b5050565b61400661414f565b73ffffffffffffffffffffffffffffffffffffffff16614024611f65565b73ffffffffffffffffffffffffffffffffffffffff161461407a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161407190614b53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036140e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140e090615441565b60405180910390fd5b6140f281614157565b50565b60016007541461413a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161413190614781565b60405180910390fd5b614143816106b9565b61414c81611f8e565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061425a8261422f565b9050919050565b61426a8161424f565b811461427557600080fd5b50565b60008135905061428781614261565b92915050565b6000819050919050565b6142a08161428d565b81146142ab57600080fd5b50565b6000813590506142bd81614297565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614316826142cd565b810181811067ffffffffffffffff82111715614335576143346142de565b5b80604052505050565b600061434861421b565b9050614354828261430d565b919050565b600067ffffffffffffffff821115614374576143736142de565b5b61437d826142cd565b9050602081019050919050565b82818337600083830152505050565b60006143ac6143a784614359565b61433e565b9050828152602081018484840111156143c8576143c76142c8565b5b6143d384828561438a565b509392505050565b600082601f8301126143f0576143ef6142c3565b5b8135614400848260208601614399565b91505092915050565b6000806000806080858703121561442357614422614225565b5b600061443187828801614278565b945050602061444287828801614278565b9350506040614453878288016142ae565b925050606085013567ffffffffffffffff8111156144745761447361422a565b5b614480878288016143db565b91505092959194509250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6144c18161448c565b82525050565b60006020820190506144dc60008301846144b8565b92915050565b6000602082840312156144f8576144f7614225565b5b6000614506848285016142ae565b91505092915050565b6145188161424f565b82525050565b6000602082019050614533600083018461450f565b92915050565b6145428161428d565b82525050565b600060208201905061455d6000830184614539565b92915050565b60006020828403121561457957614578614225565b5b600061458784828501614278565b91505092915050565b6000806000606084860312156145a9576145a8614225565b5b60006145b7868287016142ae565b93505060206145c886828701614278565b92505060406145d986828701614278565b9150509250925092565b600080604083850312156145fa576145f9614225565b5b6000614608858286016142ae565b9250506020614619858286016142ae565b9150509250929050565b60008060006060848603121561463c5761463b614225565b5b600061464a86828701614278565b935050602061465b86828701614278565b925050604061466c868287016142ae565b9150509250925092565b60008151905061468581614297565b92915050565b6000602082840312156146a1576146a0614225565b5b60006146af84828501614676565b91505092915050565b600082825260208201905092915050565b7f596f7572206e6f7420616e2061646d696e000000000000000000000000000000600082015250565b60006146ff6011836146b8565b915061470a826146c9565b602082019050919050565b6000602082019050818103600083015261472e816146f2565b9050919050565b7f436f6e7472616374206e6f7420656e61626c6564000000000000000000000000600082015250565b600061476b6014836146b8565b915061477682614735565b602082019050919050565b6000602082019050818103600083015261479a8161475e565b9050919050565b7f596f7520646f206e6f7420686176652074686973206d75636820746f20756e7360008201527f74616b6521000000000000000000000000000000000000000000000000000000602082015250565b60006147fd6025836146b8565b9150614808826147a1565b604082019050919050565b6000602082019050818103600083015261482c816147f0565b9050919050565b7f4f6f707320746865207265776172647320706f6f6c20697320656d7074792100600082015250565b6000614869601f836146b8565b915061487482614833565b602082019050919050565b600060208201905081810360008301526148988161485c565b9050919050565b60006060820190506148b4600083018661450f565b6148c1602083018561450f565b6148ce6040830184614539565b949350505050565b60008115159050919050565b6148eb816148d6565b81146148f657600080fd5b50565b600081519050614908816148e2565b92915050565b60006020828403121561492457614923614225565b5b6000614932848285016148f9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149758261428d565b91506149808361428d565b92508282039050818111156149985761499761493b565b5b92915050565b60006080820190506149b3600083018761450f565b6149c06020830186614539565b6149cd6040830185614539565b6149da6060830184614539565b95945050505050565b7f596f7520646f206e6f74206861766520616e797468696e6720746f20756e737460008201527f616b652100000000000000000000000000000000000000000000000000000000602082015250565b6000614a3f6024836146b8565b9150614a4a826149e3565b604082019050919050565b60006020820190508181036000830152614a6e81614a32565b9050919050565b7f4d756c7469706c696572206d757374206265206174206c65617374203130303060008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ad16021836146b8565b9150614adc82614a75565b604082019050919050565b60006020820190508181036000830152614b0081614ac4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b3d6020836146b8565b9150614b4882614b07565b602082019050919050565b60006020820190508181036000830152614b6c81614b30565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bad8261428d565b9150614bb88361428d565b925082614bc857614bc7614b73565b5b828204905092915050565b6000614bde8261428d565b9150614be98361428d565b9250828202614bf78161428d565b91508282048414831517614c0e57614c0d61493b565b5b5092915050565b7f596f7520646f6e7420686176652074686973206d756368205743524f00000000600082015250565b6000614c4b601c836146b8565b9150614c5682614c15565b602082019050919050565b60006020820190508181036000830152614c7a81614c3e565b9050919050565b6000604082019050614c96600083018561450f565b614ca3602083018461450f565b9392505050565b7f546f6b656e207472616e73666572206e6f7420617070726f7665640000000000600082015250565b6000614ce0601b836146b8565b9150614ceb82614caa565b602082019050919050565b60006020820190508181036000830152614d0f81614cd3565b9050919050565b6000604082019050614d2b600083018561450f565b614d386020830184614539565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614d798261428d565b9150614d848361428d565b9250828201905080821115614d9c57614d9b61493b565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614dd78161424f565b82525050565b6000614de98383614dce565b60208301905092915050565b6000602082019050919050565b6000614e0d82614da2565b614e178185614dad565b9350614e2283614dbe565b8060005b83811015614e53578151614e3a8882614ddd565b9750614e4583614df5565b925050600181019050614e26565b5085935050505092915050565b600060a082019050614e756000830188614539565b614e826020830187614539565b8181036040830152614e948186614e02565b9050614ea3606083018561450f565b614eb06080830184614539565b9695505050505050565b600067ffffffffffffffff821115614ed557614ed46142de565b5b602082029050602081019050919050565b600080fd5b6000614efe614ef984614eba565b61433e565b90508083825260208201905060208402830185811115614f2157614f20614ee6565b5b835b81811015614f4a5780614f368882614676565b845260208401935050602081019050614f23565b5050509392505050565b600082601f830112614f6957614f686142c3565b5b8151614f79848260208601614eeb565b91505092915050565b600060208284031215614f9857614f97614225565b5b600082015167ffffffffffffffff811115614fb657614fb561422a565b5b614fc284828501614f54565b91505092915050565b60006dffffffffffffffffffffffffffff82169050919050565b614fee81614fcb565b8114614ff957600080fd5b50565b60008151905061500b81614fe5565b92915050565b600063ffffffff82169050919050565b61502a81615011565b811461503557600080fd5b50565b60008151905061504781615021565b92915050565b60008060006060848603121561506657615065614225565b5b600061507486828701614ffc565b935050602061508586828701614ffc565b925050604061509686828701615038565b9150509250925092565b7f596f7520646f6e7420686176652074686973206d756368206c6971756964697460008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006150fc6021836146b8565b9150615107826150a0565b604082019050919050565b6000602082019050818103600083015261512b816150ef565b9050919050565b6000819050919050565b6000819050919050565b600061516161515c61515784615132565b61513c565b61428d565b9050919050565b61517181615146565b82525050565b600060e08201905061518c600083018a61450f565b615199602083018961450f565b6151a66040830188614539565b6151b36060830187615168565b6151c06080830186615168565b6151cd60a083018561450f565b6151da60c0830184614539565b98975050505050505050565b600080604083850312156151fd576151fc614225565b5b600061520b85828601614676565b925050602061521c85828601614676565b9150509250929050565b7f596f7520646f6e7420686176652074686973206d756368204442460000000000600082015250565b600061525c601b836146b8565b915061526782615226565b602082019050919050565b6000602082019050818103600083015261528b8161524f565b9050919050565b6000610100820190506152a8600083018b61450f565b6152b5602083018a61450f565b6152c26040830189614539565b6152cf6060830188614539565b6152dc6080830187615168565b6152e960a0830186615168565b6152f660c083018561450f565b61530360e0830184614539565b9998505050505050505050565b60008060006060848603121561532957615328614225565b5b600061533786828701614676565b935050602061534886828701614676565b925050604061535986828701614676565b9150509250925092565b7f596f7520646f206e6f206861766520656e6f75676820746f207374616b652100600082015250565b6000615399601f836146b8565b91506153a482615363565b602082019050919050565b600060208201905081810360008301526153c88161538c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061542b6026836146b8565b9150615436826153cf565b604082019050919050565b6000602082019050818103600083015261545a8161541e565b905091905056fea26469706673582212200d75faae1e1e9ee8ad5d8c2f1047ee454d0e0fe7b57514f7ed75c42dd0e1d2eb64736f6c63430008110033

Deployed Bytecode Sourcemap

22734:10466:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8116:207;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23279:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22787:66;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23204:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22942:64;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23244:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30324:1064;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22860:75;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23454:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23156:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31396:588;;;:::i;:::-;;23677:282;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32972:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;769:103;;;:::i;:::-;;26497:876;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26209:280;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25921;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;546:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25204:709;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23967:1229;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29232:1084;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23083:64;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31992:747;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27563:1493;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23013:63;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32747:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27381:174;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;880:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29064:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8116:207;8259:6;8285:30;;;8278:37;;8116:207;;;;;;:::o;23279:167::-;23386:1;23355:6;;;;;;;;;;;23343:27;;;23371:10;23343:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;23335:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23430:8;23420:7;:18;;;;23279:167;:::o;22787:66::-;;;;;;;;;;;;;:::o;23204:33::-;;;;:::o;22942:64::-;;;;;;;;;;;;;:::o;23244:26::-;;;;:::o;30324:1064::-;30395:1;30384:7;;:12;30376:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;30492:7;30452:6;;;;;;;;;;;30440:36;;;30477:10;30440:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;;30432:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;30556:16;30642:1;30603:6;;;;;;;;;;;30591:36;;;30628:10;30591:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;30587:478;;;30669:15;30687:23;30699:10;30687:11;:23::i;:::-;30669:41;;30739:1;30729:7;:11;30725:221;;;30815:7;30789:3;;;;;;;;;;;30782:21;;;30804:6;;;;;;;;;;;30782:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;30774:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;30884:3;;;;;;;;;;;30877:24;;;30902:6;;;;;;;;;;;30910:10;30922:7;30877:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30725:221;30983:6;;;;;;;;;;;30971:36;;;31008:10;30971:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30960:59;;31046:7;31034:19;;;;;:::i;:::-;;;30654:411;30587:478;31084:4;;;;;;;;;;;31077:25;;;31103:6;;;;;;;;;;;31111:10;31123:7;31077:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31164:6;;;;;;;;;;;31152:36;;;31189:10;31201:8;31211:15;31240:6;;;;;;;;;;;31228:43;;;31272:10;31228:55;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31152:132;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31307:6;;;;;;;;;;;31295:37;;;31372:7;31345:6;;;;;;;;;;;31333:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;:::i;:::-;31295:85;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30365:1023;30324:1064;:::o;22860:75::-;22893:42;22860:75;:::o;23454:215::-;23557:1;23526:6;;;;;;;;;;;23514:27;;;23542:10;23514:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;23506:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23610:1;23599:7;;:12;23591:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;23656:5;23647:6;;:14;;;;;;;;;;;;;;;;;;23454:215;:::o;23156:41::-;;;;:::o;31396:588::-;31450:1;31439:7;;:12;31431:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;31540:1;31501:6;;;;;;;;;;;31489:36;;;31526:10;31489:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;31481:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;31593:15;31611:23;31623:10;31611:11;:23::i;:::-;31593:41;;31686:7;31660:3;;;;;;;;;;;31653:21;;;31675:6;;;;;;;;;;;31653:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;31645:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;31747:3;;;;;;;;;;;31740:24;;;31765:6;;;;;;;;;;;31773:10;31785:7;31740:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31816:6;;;;;;;;;;;31804:36;;;31841:10;31865:6;;;;;;;;;;;31853:36;;;31890:10;31853:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31903:15;31932:6;;;;;;;;;;;31920:43;;;31964:10;31920:55;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31804:172;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31420:564;31396:588::o;23677:282::-;23783:1;23752:6;;;;;;;;;;;23740:27;;;23768:10;23740:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;23732:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23836:1;23825:7;;:12;23817:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;23889:5;23881:4;:13;;23873:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;23950:4;23937:10;:17;;;;23677:282;:::o;32972:225::-;33101:1;33070:6;;;;;;;;;;;33058:27;;;33086:10;33058:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;33050:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;33142:3;33135:24;;;33168:4;33174:9;33185:3;33135:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32972:225;;;:::o;769:103::-;692:12;:10;:12::i;:::-;681:23;;:7;:5;:7::i;:::-;:23;;;673:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;834:30:::1;861:1;834:18;:30::i;:::-;769:103::o:0;26497:876::-;26571:1;26560:7;;:12;26552:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;26608:14;26665:2;26626:36;26658:3;26649:6;:12;;;;:::i;:::-;26626:22;:36::i;:::-;:41;;;;:::i;:::-;26608:60;;26735:6;26704:4;;;;;;;;;;;26697:22;;;26720:10;26697:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;26689:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;26846:6;26800:4;;;;;;;;;;;26793:22;;;26816:10;26836:4;26793:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;;26785:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;26912:4;;;;;;;;;;;26905:25;;;26931:10;26951:4;26958:6;26905:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26983:4;;;;;;;;;;;26976:20;;;22893:42;27005:6;26976:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27025:21;27078:1;27064:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27057:23;;27101:4;;;;;;;;;;;27091;27096:1;27091:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;27126:3;;;;;;;;;;;27116:4;27121:1;27116:7;;;;;;;;:::i;:::-;;;;;;;:13;;;;;;;;;;;22893:42;27142:63;;;27224:6;27249:9;27277:4;27300:10;27347:3;27329:15;:21;;;;:::i;:::-;27142:223;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26541:832;;26497:876;:::o;26209:280::-;26274:4;26310:1;26299:7;;:12;26291:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;26347:18;26383:4;;;;;;;;;;;26347:41;;26400:9;26411;26425:3;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26399:43;;;;;;;;;26476:4;26470;26463:6;:11;;;;:::i;:::-;26462:18;;;;:::i;:::-;26455:26;;;;;26209:280;;;:::o;25921:::-;25986:4;26022:1;26011:7;;:12;26003:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;26059:18;26095:4;;;;;;;;;;;26059:41;;26112:9;26123;26137:3;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26111:43;;;;;;;;;26188:4;26182;26175:6;:11;;;;:::i;:::-;26174:18;;;;:::i;:::-;26167:26;;;;;25921:280;;;:::o;546:87::-;592:7;619:6;;;;;;;;;;;612:13;;546:87;:::o;25204:709::-;25279:1;25268:7;;:12;25260:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;25362:6;25331:4;;;;;;;;;;;25324:22;;;25347:10;25324:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;25316:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25478:6;25432:4;;;;;;;;;;;25425:22;;;25448:10;25468:4;25425:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;;25417:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;25544:4;;;;;;;;;;;25537:25;;;25563:10;25583:4;25590:6;25537:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25615:4;;;;;;;;;;;25608:20;;;22893:42;25637:6;25608:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22893:42;25657:54;;;25730:4;;;;;;;;;;;25753:3;;;;;;;;;;;25775:6;25800:1;25820;25840:10;25887:3;25869:15;:21;;;;:::i;:::-;25657:248;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;25204:709;:::o;23967:1229::-;24038:4;24073:1;24062:7;;:12;24054:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;24156:10;24125:4;;;;;;;;;;;24118:22;;;24141:10;24118:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;24110:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;24255:9;24225:3;;;;;;;;;;;24218:21;;;24240:10;24218:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;24210:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;24368:10;24322:4;;;;;;;;;;;24315:22;;;24338:10;24358:4;24315:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;24307:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24481:9;24436:3;;;;;;;;;;;24429:21;;;24451:10;24471:4;24429:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;24421:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;24550:4;;;;;;;;;;;24543:25;;;24569:10;24589:4;24596:10;24543:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24625:3;;;;;;;;;;;24618:24;;;24643:10;24663:4;24670:9;24618:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24700:4;;;;;;;;;;;24693:20;;;22893:42;24722:10;24693:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24751:3;;;;;;;;;;;24744:19;;;22893:42;24772:9;24744:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24796:12;24810;24824:14;22893:42;24842:51;;;24912:4;;;;;;;;;;;24935:3;;;;;;;;;;;24957:10;24986:9;25014:1;25034;25054:10;25101:3;25083:15;:21;;;;:::i;:::-;24842:277;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24795:324;;;;;;25152:7;25142;:17;;;;:::i;:::-;25132:27;;25179:9;25172:16;;;;;23967:1229;;;;:::o;29232:1084::-;29301:1;29290:7;;:12;29282:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;29384:7;29353:4;;;;;;;;;;;29346:22;;;29369:10;29346:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;29338:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;29499:7;29453:4;;;;;;;;;;;29446:22;;;29469:10;29489:4;29446:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;;29438:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;29559:16;29578:7;29559:26;;29651:1;29612:6;;;;;;;;;;;29600:36;;;29637:10;29600:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;29596:447;;;29678:15;29696:23;29708:10;29696:11;:23::i;:::-;29678:41;;29748:1;29738:7;:11;29734:221;;;29824:7;29798:3;;;;;;;;;;;29791:21;;;29813:6;;;;;;;;;;;29791:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;29783:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;29893:3;;;;;;;;;;;29886:24;;;29911:6;;;;;;;;;;;29919:10;29931:7;29886:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29734:221;29995:6;;;;;;;;;;;29983:36;;;30020:10;29983:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29971:60;;;;;:::i;:::-;;;29663:380;29596:447;30060:4;;;;;;;;;;;30053:25;;;30079:10;30091:6;;;;;;;;;;;30099:7;30053:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30132:6;;;;;;;;;;;30120:36;;;30157:10;30169:8;30179:15;30196;30120:92;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30235:6;;;;;;;;;;;30223:37;;;30300:7;30273:6;;;;;;;;;;;30261:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;:::i;:::-;30223:85;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29271:1045;29232:1084;:::o;23083:64::-;;;;;;;;;;;;;:::o;31992:747::-;32051:7;32090:1;32079:7;;:12;32071:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;32127:14;32156:6;;;;;;;;;;;32144:36;;;32181:7;32144:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32127:62;;32213:4;32204:6;:13;32200:532;;;32250:1;32243:8;;;;;32200:532;32320:4;32311:6;:13;;;;:::i;:::-;32302:22;;32339:17;32408:4;32381:6;;;;;;;;;;;32369:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;;:::i;:::-;32359:6;;:54;;;;:::i;:::-;32339:74;;32428:16;32477:6;;;;;;;;;;;32465:44;;;32510:7;32465:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32447:15;:71;;;;:::i;:::-;32428:90;;32533:16;32563:9;32552:8;:20;;;;:::i;:::-;32533:39;;32587:18;32617:8;32608:6;:17;;;;:::i;:::-;32587:38;;32681:5;32667:10;;32654;:23;;;;:::i;:::-;32653:33;;;;:::i;:::-;32640:46;;32710:10;32703:17;;;;;;;31992:747;;;;:::o;27563:1493::-;27613:4;27649:1;27638:7;;:12;27630:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;27686:13;27712:1;27703:6;:10;;;;:::i;:::-;27686:28;;27725:14;27788:2;27781:3;27744:34;27776:1;27767:6;:10;;;;:::i;:::-;27744:22;:34::i;:::-;:40;;;;:::i;:::-;27743:47;;;;:::i;:::-;27725:66;;27858:8;27827:4;;;;;;;;;;;27820:22;;;27843:10;27820:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;27812:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27971:8;27925:4;;;;;;;;;;;27918:22;;;27941:10;27961:4;27918:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;27910:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;28039:4;;;;;;;;;;;28032:25;;;28058:10;28078:4;28085:6;28032:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28110:4;;;;;;;;;;;28103:20;;;22893:42;28132:8;28103:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28154:21;28207:1;28193:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28186:23;;28230:4;;;;;;;;;;;28220;28225:1;28220:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;28255:3;;;;;;;;;;;28245:4;28250:1;28245:7;;;;;;;;:::i;:::-;;;;;;;:13;;;;;;;;;;;22893:42;28271:63;;;28353:8;28380:9;28408:4;28439;28481:3;28463:15;:21;;;;:::i;:::-;28271:228;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28542:2;28535:3;28524:8;:14;;;;:::i;:::-;28523:21;;;;:::i;:::-;28512:32;;28564:4;;;;;;;;;;;28557:20;;;22893:42;28586:8;28557:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28613:3;;;;;;;;;;;28606:19;;;22893:42;28634:9;28606:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28658:12;28672;28686:14;22893:42;28704:51;;;28774:4;;;;;;;;;;;28797:3;;;;;;;;;;;28819:8;28846:9;28874:1;28894;28914:10;28961:3;28943:15;:21;;;;:::i;:::-;28704:275;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28657:322;;;;;;29012:7;29002;:17;;;;:::i;:::-;28992:27;;29039:9;29032:16;;;;;;;;27563:1493;;;:::o;23013:63::-;;;;;;;;;;;;;:::o;32747:217::-;32885:1;32854:6;;;;;;;;;;;32842:27;;;32870:10;32842:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;32834:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;32926:4;32919:21;;;32941:7;32949:6;32919:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32747:217;;;:::o;27381:174::-;27446:1;27435:7;;:12;27427:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;27483:14;27500:20;27513:6;27500:12;:20::i;:::-;27483:37;;27531:16;27537:9;27531:5;:16::i;:::-;27416:139;27381:174;:::o;880:201::-;692:12;:10;:12::i;:::-;681:23;;:7;:5;:7::i;:::-;:23;;;673:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;989:1:::1;969:22;;:8;:22;;::::0;961:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1045:28;1064:8;1045:18;:28::i;:::-;880:201:::0;:::o;29064:160::-;29130:1;29119:7;;:12;29111:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;29167:15;29175:6;29167:7;:15::i;:::-;29193:23;29209:6;29193:15;:23::i;:::-;29064:160;:::o;94:98::-;147:7;174:10;167:17;;94:98;:::o;1089:191::-;1163:16;1182:6;;;;;;;;;;;1163:25;;1208:8;1199:6;;:17;;;;;;;;;;;;;;;;;;1263:8;1232:40;;1253:8;1232:40;;;;;;;;;;;;1152:128;1089:191;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:117::-;1306:1;1303;1296:12;1320:117;1429:1;1426;1419:12;1443:102;1484:6;1535:2;1531:7;1526:2;1519:5;1515:14;1511:28;1501:38;;1443:102;;;:::o;1551:180::-;1599:77;1596:1;1589:88;1696:4;1693:1;1686:15;1720:4;1717:1;1710:15;1737:281;1820:27;1842:4;1820:27;:::i;:::-;1812:6;1808:40;1950:6;1938:10;1935:22;1914:18;1902:10;1899:34;1896:62;1893:88;;;1961:18;;:::i;:::-;1893:88;2001:10;1997:2;1990:22;1780:238;1737:281;;:::o;2024:129::-;2058:6;2085:20;;:::i;:::-;2075:30;;2114:33;2142:4;2134:6;2114:33;:::i;:::-;2024:129;;;:::o;2159:307::-;2220:4;2310:18;2302:6;2299:30;2296:56;;;2332:18;;:::i;:::-;2296:56;2370:29;2392:6;2370:29;:::i;:::-;2362:37;;2454:4;2448;2444:15;2436:23;;2159:307;;;:::o;2472:146::-;2569:6;2564:3;2559;2546:30;2610:1;2601:6;2596:3;2592:16;2585:27;2472:146;;;:::o;2624:423::-;2701:5;2726:65;2742:48;2783:6;2742:48;:::i;:::-;2726:65;:::i;:::-;2717:74;;2814:6;2807:5;2800:21;2852:4;2845:5;2841:16;2890:3;2881:6;2876:3;2872:16;2869:25;2866:112;;;2897:79;;:::i;:::-;2866:112;2987:54;3034:6;3029:3;3024;2987:54;:::i;:::-;2707:340;2624:423;;;;;:::o;3066:338::-;3121:5;3170:3;3163:4;3155:6;3151:17;3147:27;3137:122;;3178:79;;:::i;:::-;3137:122;3295:6;3282:20;3320:78;3394:3;3386:6;3379:4;3371:6;3367:17;3320:78;:::i;:::-;3311:87;;3127:277;3066:338;;;;:::o;3410:943::-;3505:6;3513;3521;3529;3578:3;3566:9;3557:7;3553:23;3549:33;3546:120;;;3585:79;;:::i;:::-;3546:120;3705:1;3730:53;3775:7;3766:6;3755:9;3751:22;3730:53;:::i;:::-;3720:63;;3676:117;3832:2;3858:53;3903:7;3894:6;3883:9;3879:22;3858:53;:::i;:::-;3848:63;;3803:118;3960:2;3986:53;4031:7;4022:6;4011:9;4007:22;3986:53;:::i;:::-;3976:63;;3931:118;4116:2;4105:9;4101:18;4088:32;4147:18;4139:6;4136:30;4133:117;;;4169:79;;:::i;:::-;4133:117;4274:62;4328:7;4319:6;4308:9;4304:22;4274:62;:::i;:::-;4264:72;;4059:287;3410:943;;;;;;;:::o;4359:149::-;4395:7;4435:66;4428:5;4424:78;4413:89;;4359:149;;;:::o;4514:115::-;4599:23;4616:5;4599:23;:::i;:::-;4594:3;4587:36;4514:115;;:::o;4635:218::-;4726:4;4764:2;4753:9;4749:18;4741:26;;4777:69;4843:1;4832:9;4828:17;4819:6;4777:69;:::i;:::-;4635:218;;;;:::o;4859:329::-;4918:6;4967:2;4955:9;4946:7;4942:23;4938:32;4935:119;;;4973:79;;:::i;:::-;4935:119;5093:1;5118:53;5163:7;5154:6;5143:9;5139:22;5118:53;:::i;:::-;5108:63;;5064:117;4859:329;;;;:::o;5194:118::-;5281:24;5299:5;5281:24;:::i;:::-;5276:3;5269:37;5194:118;;:::o;5318:222::-;5411:4;5449:2;5438:9;5434:18;5426:26;;5462:71;5530:1;5519:9;5515:17;5506:6;5462:71;:::i;:::-;5318:222;;;;:::o;5546:118::-;5633:24;5651:5;5633:24;:::i;:::-;5628:3;5621:37;5546:118;;:::o;5670:222::-;5763:4;5801:2;5790:9;5786:18;5778:26;;5814:71;5882:1;5871:9;5867:17;5858:6;5814:71;:::i;:::-;5670:222;;;;:::o;5898:329::-;5957:6;6006:2;5994:9;5985:7;5981:23;5977:32;5974:119;;;6012:79;;:::i;:::-;5974:119;6132:1;6157:53;6202:7;6193:6;6182:9;6178:22;6157:53;:::i;:::-;6147:63;;6103:117;5898:329;;;;:::o;6233:619::-;6310:6;6318;6326;6375:2;6363:9;6354:7;6350:23;6346:32;6343:119;;;6381:79;;:::i;:::-;6343:119;6501:1;6526:53;6571:7;6562:6;6551:9;6547:22;6526:53;:::i;:::-;6516:63;;6472:117;6628:2;6654:53;6699:7;6690:6;6679:9;6675:22;6654:53;:::i;:::-;6644:63;;6599:118;6756:2;6782:53;6827:7;6818:6;6807:9;6803:22;6782:53;:::i;:::-;6772:63;;6727:118;6233:619;;;;;:::o;6858:474::-;6926:6;6934;6983:2;6971:9;6962:7;6958:23;6954:32;6951:119;;;6989:79;;:::i;:::-;6951:119;7109:1;7134:53;7179:7;7170:6;7159:9;7155:22;7134:53;:::i;:::-;7124:63;;7080:117;7236:2;7262:53;7307:7;7298:6;7287:9;7283:22;7262:53;:::i;:::-;7252:63;;7207:118;6858:474;;;;;:::o;7338:619::-;7415:6;7423;7431;7480:2;7468:9;7459:7;7455:23;7451:32;7448:119;;;7486:79;;:::i;:::-;7448:119;7606:1;7631:53;7676:7;7667:6;7656:9;7652:22;7631:53;:::i;:::-;7621:63;;7577:117;7733:2;7759:53;7804:7;7795:6;7784:9;7780:22;7759:53;:::i;:::-;7749:63;;7704:118;7861:2;7887:53;7932:7;7923:6;7912:9;7908:22;7887:53;:::i;:::-;7877:63;;7832:118;7338:619;;;;;:::o;7963:143::-;8020:5;8051:6;8045:13;8036:22;;8067:33;8094:5;8067:33;:::i;:::-;7963:143;;;;:::o;8112:351::-;8182:6;8231:2;8219:9;8210:7;8206:23;8202:32;8199:119;;;8237:79;;:::i;:::-;8199:119;8357:1;8382:64;8438:7;8429:6;8418:9;8414:22;8382:64;:::i;:::-;8372:74;;8328:128;8112:351;;;;:::o;8469:169::-;8553:11;8587:6;8582:3;8575:19;8627:4;8622:3;8618:14;8603:29;;8469:169;;;;:::o;8644:167::-;8784:19;8780:1;8772:6;8768:14;8761:43;8644:167;:::o;8817:366::-;8959:3;8980:67;9044:2;9039:3;8980:67;:::i;:::-;8973:74;;9056:93;9145:3;9056:93;:::i;:::-;9174:2;9169:3;9165:12;9158:19;;8817:366;;;:::o;9189:419::-;9355:4;9393:2;9382:9;9378:18;9370:26;;9442:9;9436:4;9432:20;9428:1;9417:9;9413:17;9406:47;9470:131;9596:4;9470:131;:::i;:::-;9462:139;;9189:419;;;:::o;9614:170::-;9754:22;9750:1;9742:6;9738:14;9731:46;9614:170;:::o;9790:366::-;9932:3;9953:67;10017:2;10012:3;9953:67;:::i;:::-;9946:74;;10029:93;10118:3;10029:93;:::i;:::-;10147:2;10142:3;10138:12;10131:19;;9790:366;;;:::o;10162:419::-;10328:4;10366:2;10355:9;10351:18;10343:26;;10415:9;10409:4;10405:20;10401:1;10390:9;10386:17;10379:47;10443:131;10569:4;10443:131;:::i;:::-;10435:139;;10162:419;;;:::o;10587:224::-;10727:34;10723:1;10715:6;10711:14;10704:58;10796:7;10791:2;10783:6;10779:15;10772:32;10587:224;:::o;10817:366::-;10959:3;10980:67;11044:2;11039:3;10980:67;:::i;:::-;10973:74;;11056:93;11145:3;11056:93;:::i;:::-;11174:2;11169:3;11165:12;11158:19;;10817:366;;;:::o;11189:419::-;11355:4;11393:2;11382:9;11378:18;11370:26;;11442:9;11436:4;11432:20;11428:1;11417:9;11413:17;11406:47;11470:131;11596:4;11470:131;:::i;:::-;11462:139;;11189:419;;;:::o;11614:181::-;11754:33;11750:1;11742:6;11738:14;11731:57;11614:181;:::o;11801:366::-;11943:3;11964:67;12028:2;12023:3;11964:67;:::i;:::-;11957:74;;12040:93;12129:3;12040:93;:::i;:::-;12158:2;12153:3;12149:12;12142:19;;11801:366;;;:::o;12173:419::-;12339:4;12377:2;12366:9;12362:18;12354:26;;12426:9;12420:4;12416:20;12412:1;12401:9;12397:17;12390:47;12454:131;12580:4;12454:131;:::i;:::-;12446:139;;12173:419;;;:::o;12598:442::-;12747:4;12785:2;12774:9;12770:18;12762:26;;12798:71;12866:1;12855:9;12851:17;12842:6;12798:71;:::i;:::-;12879:72;12947:2;12936:9;12932:18;12923:6;12879:72;:::i;:::-;12961;13029:2;13018:9;13014:18;13005:6;12961:72;:::i;:::-;12598:442;;;;;;:::o;13046:90::-;13080:7;13123:5;13116:13;13109:21;13098:32;;13046:90;;;:::o;13142:116::-;13212:21;13227:5;13212:21;:::i;:::-;13205:5;13202:32;13192:60;;13248:1;13245;13238:12;13192:60;13142:116;:::o;13264:137::-;13318:5;13349:6;13343:13;13334:22;;13365:30;13389:5;13365:30;:::i;:::-;13264:137;;;;:::o;13407:345::-;13474:6;13523:2;13511:9;13502:7;13498:23;13494:32;13491:119;;;13529:79;;:::i;:::-;13491:119;13649:1;13674:61;13727:7;13718:6;13707:9;13703:22;13674:61;:::i;:::-;13664:71;;13620:125;13407:345;;;;:::o;13758:180::-;13806:77;13803:1;13796:88;13903:4;13900:1;13893:15;13927:4;13924:1;13917:15;13944:194;13984:4;14004:20;14022:1;14004:20;:::i;:::-;13999:25;;14038:20;14056:1;14038:20;:::i;:::-;14033:25;;14082:1;14079;14075:9;14067:17;;14106:1;14100:4;14097:11;14094:37;;;14111:18;;:::i;:::-;14094:37;13944:194;;;;:::o;14144:553::-;14321:4;14359:3;14348:9;14344:19;14336:27;;14373:71;14441:1;14430:9;14426:17;14417:6;14373:71;:::i;:::-;14454:72;14522:2;14511:9;14507:18;14498:6;14454:72;:::i;:::-;14536;14604:2;14593:9;14589:18;14580:6;14536:72;:::i;:::-;14618;14686:2;14675:9;14671:18;14662:6;14618:72;:::i;:::-;14144:553;;;;;;;:::o;14703:223::-;14843:34;14839:1;14831:6;14827:14;14820:58;14912:6;14907:2;14899:6;14895:15;14888:31;14703:223;:::o;14932:366::-;15074:3;15095:67;15159:2;15154:3;15095:67;:::i;:::-;15088:74;;15171:93;15260:3;15171:93;:::i;:::-;15289:2;15284:3;15280:12;15273:19;;14932:366;;;:::o;15304:419::-;15470:4;15508:2;15497:9;15493:18;15485:26;;15557:9;15551:4;15547:20;15543:1;15532:9;15528:17;15521:47;15585:131;15711:4;15585:131;:::i;:::-;15577:139;;15304:419;;;:::o;15729:220::-;15869:34;15865:1;15857:6;15853:14;15846:58;15938:3;15933:2;15925:6;15921:15;15914:28;15729:220;:::o;15955:366::-;16097:3;16118:67;16182:2;16177:3;16118:67;:::i;:::-;16111:74;;16194:93;16283:3;16194:93;:::i;:::-;16312:2;16307:3;16303:12;16296:19;;15955:366;;;:::o;16327:419::-;16493:4;16531:2;16520:9;16516:18;16508:26;;16580:9;16574:4;16570:20;16566:1;16555:9;16551:17;16544:47;16608:131;16734:4;16608:131;:::i;:::-;16600:139;;16327:419;;;:::o;16752:182::-;16892:34;16888:1;16880:6;16876:14;16869:58;16752:182;:::o;16940:366::-;17082:3;17103:67;17167:2;17162:3;17103:67;:::i;:::-;17096:74;;17179:93;17268:3;17179:93;:::i;:::-;17297:2;17292:3;17288:12;17281:19;;16940:366;;;:::o;17312:419::-;17478:4;17516:2;17505:9;17501:18;17493:26;;17565:9;17559:4;17555:20;17551:1;17540:9;17536:17;17529:47;17593:131;17719:4;17593:131;:::i;:::-;17585:139;;17312:419;;;:::o;17737:180::-;17785:77;17782:1;17775:88;17882:4;17879:1;17872:15;17906:4;17903:1;17896:15;17923:185;17963:1;17980:20;17998:1;17980:20;:::i;:::-;17975:25;;18014:20;18032:1;18014:20;:::i;:::-;18009:25;;18053:1;18043:35;;18058:18;;:::i;:::-;18043:35;18100:1;18097;18093:9;18088:14;;17923:185;;;;:::o;18114:410::-;18154:7;18177:20;18195:1;18177:20;:::i;:::-;18172:25;;18211:20;18229:1;18211:20;:::i;:::-;18206:25;;18266:1;18263;18259:9;18288:30;18306:11;18288:30;:::i;:::-;18277:41;;18467:1;18458:7;18454:15;18451:1;18448:22;18428:1;18421:9;18401:83;18378:139;;18497:18;;:::i;:::-;18378:139;18162:362;18114:410;;;;:::o;18530:178::-;18670:30;18666:1;18658:6;18654:14;18647:54;18530:178;:::o;18714:366::-;18856:3;18877:67;18941:2;18936:3;18877:67;:::i;:::-;18870:74;;18953:93;19042:3;18953:93;:::i;:::-;19071:2;19066:3;19062:12;19055:19;;18714:366;;;:::o;19086:419::-;19252:4;19290:2;19279:9;19275:18;19267:26;;19339:9;19333:4;19329:20;19325:1;19314:9;19310:17;19303:47;19367:131;19493:4;19367:131;:::i;:::-;19359:139;;19086:419;;;:::o;19511:332::-;19632:4;19670:2;19659:9;19655:18;19647:26;;19683:71;19751:1;19740:9;19736:17;19727:6;19683:71;:::i;:::-;19764:72;19832:2;19821:9;19817:18;19808:6;19764:72;:::i;:::-;19511:332;;;;;:::o;19849:177::-;19989:29;19985:1;19977:6;19973:14;19966:53;19849:177;:::o;20032:366::-;20174:3;20195:67;20259:2;20254:3;20195:67;:::i;:::-;20188:74;;20271:93;20360:3;20271:93;:::i;:::-;20389:2;20384:3;20380:12;20373:19;;20032:366;;;:::o;20404:419::-;20570:4;20608:2;20597:9;20593:18;20585:26;;20657:9;20651:4;20647:20;20643:1;20632:9;20628:17;20621:47;20685:131;20811:4;20685:131;:::i;:::-;20677:139;;20404:419;;;:::o;20829:332::-;20950:4;20988:2;20977:9;20973:18;20965:26;;21001:71;21069:1;21058:9;21054:17;21045:6;21001:71;:::i;:::-;21082:72;21150:2;21139:9;21135:18;21126:6;21082:72;:::i;:::-;20829:332;;;;;:::o;21167:180::-;21215:77;21212:1;21205:88;21312:4;21309:1;21302:15;21336:4;21333:1;21326:15;21353:191;21393:3;21412:20;21430:1;21412:20;:::i;:::-;21407:25;;21446:20;21464:1;21446:20;:::i;:::-;21441:25;;21489:1;21486;21482:9;21475:16;;21510:3;21507:1;21504:10;21501:36;;;21517:18;;:::i;:::-;21501:36;21353:191;;;;:::o;21550:114::-;21617:6;21651:5;21645:12;21635:22;;21550:114;;;:::o;21670:184::-;21769:11;21803:6;21798:3;21791:19;21843:4;21838:3;21834:14;21819:29;;21670:184;;;;:::o;21860:132::-;21927:4;21950:3;21942:11;;21980:4;21975:3;21971:14;21963:22;;21860:132;;;:::o;21998:108::-;22075:24;22093:5;22075:24;:::i;:::-;22070:3;22063:37;21998:108;;:::o;22112:179::-;22181:10;22202:46;22244:3;22236:6;22202:46;:::i;:::-;22280:4;22275:3;22271:14;22257:28;;22112:179;;;;:::o;22297:113::-;22367:4;22399;22394:3;22390:14;22382:22;;22297:113;;;:::o;22446:732::-;22565:3;22594:54;22642:5;22594:54;:::i;:::-;22664:86;22743:6;22738:3;22664:86;:::i;:::-;22657:93;;22774:56;22824:5;22774:56;:::i;:::-;22853:7;22884:1;22869:284;22894:6;22891:1;22888:13;22869:284;;;22970:6;22964:13;22997:63;23056:3;23041:13;22997:63;:::i;:::-;22990:70;;23083:60;23136:6;23083:60;:::i;:::-;23073:70;;22929:224;22916:1;22913;22909:9;22904:14;;22869:284;;;22873:14;23169:3;23162:10;;22570:608;;;22446:732;;;;:::o;23184:815::-;23439:4;23477:3;23466:9;23462:19;23454:27;;23491:71;23559:1;23548:9;23544:17;23535:6;23491:71;:::i;:::-;23572:72;23640:2;23629:9;23625:18;23616:6;23572:72;:::i;:::-;23691:9;23685:4;23681:20;23676:2;23665:9;23661:18;23654:48;23719:108;23822:4;23813:6;23719:108;:::i;:::-;23711:116;;23837:72;23905:2;23894:9;23890:18;23881:6;23837:72;:::i;:::-;23919:73;23987:3;23976:9;23972:19;23963:6;23919:73;:::i;:::-;23184:815;;;;;;;;:::o;24005:311::-;24082:4;24172:18;24164:6;24161:30;24158:56;;;24194:18;;:::i;:::-;24158:56;24244:4;24236:6;24232:17;24224:25;;24304:4;24298;24294:15;24286:23;;24005:311;;;:::o;24322:117::-;24431:1;24428;24421:12;24462:732;24569:5;24594:81;24610:64;24667:6;24610:64;:::i;:::-;24594:81;:::i;:::-;24585:90;;24695:5;24724:6;24717:5;24710:21;24758:4;24751:5;24747:16;24740:23;;24811:4;24803:6;24799:17;24791:6;24787:30;24840:3;24832:6;24829:15;24826:122;;;24859:79;;:::i;:::-;24826:122;24974:6;24957:231;24991:6;24986:3;24983:15;24957:231;;;25066:3;25095:48;25139:3;25127:10;25095:48;:::i;:::-;25090:3;25083:61;25173:4;25168:3;25164:14;25157:21;;25033:155;25017:4;25012:3;25008:14;25001:21;;24957:231;;;24961:21;24575:619;;24462:732;;;;;:::o;25217:385::-;25299:5;25348:3;25341:4;25333:6;25329:17;25325:27;25315:122;;25356:79;;:::i;:::-;25315:122;25466:6;25460:13;25491:105;25592:3;25584:6;25577:4;25569:6;25565:17;25491:105;:::i;:::-;25482:114;;25305:297;25217:385;;;;:::o;25608:554::-;25703:6;25752:2;25740:9;25731:7;25727:23;25723:32;25720:119;;;25758:79;;:::i;:::-;25720:119;25899:1;25888:9;25884:17;25878:24;25929:18;25921:6;25918:30;25915:117;;;25951:79;;:::i;:::-;25915:117;26056:89;26137:7;26128:6;26117:9;26113:22;26056:89;:::i;:::-;26046:99;;25849:306;25608:554;;;;:::o;26168:114::-;26205:7;26245:30;26238:5;26234:42;26223:53;;26168:114;;;:::o;26288:122::-;26361:24;26379:5;26361:24;:::i;:::-;26354:5;26351:35;26341:63;;26400:1;26397;26390:12;26341:63;26288:122;:::o;26416:143::-;26473:5;26504:6;26498:13;26489:22;;26520:33;26547:5;26520:33;:::i;:::-;26416:143;;;;:::o;26565:93::-;26601:7;26641:10;26634:5;26630:22;26619:33;;26565:93;;;:::o;26664:120::-;26736:23;26753:5;26736:23;:::i;:::-;26729:5;26726:34;26716:62;;26774:1;26771;26764:12;26716:62;26664:120;:::o;26790:141::-;26846:5;26877:6;26871:13;26862:22;;26893:32;26919:5;26893:32;:::i;:::-;26790:141;;;;:::o;26937:661::-;27024:6;27032;27040;27089:2;27077:9;27068:7;27064:23;27060:32;27057:119;;;27095:79;;:::i;:::-;27057:119;27215:1;27240:64;27296:7;27287:6;27276:9;27272:22;27240:64;:::i;:::-;27230:74;;27186:128;27353:2;27379:64;27435:7;27426:6;27415:9;27411:22;27379:64;:::i;:::-;27369:74;;27324:129;27492:2;27518:63;27573:7;27564:6;27553:9;27549:22;27518:63;:::i;:::-;27508:73;;27463:128;26937:661;;;;;:::o;27604:220::-;27744:34;27740:1;27732:6;27728:14;27721:58;27813:3;27808:2;27800:6;27796:15;27789:28;27604:220;:::o;27830:366::-;27972:3;27993:67;28057:2;28052:3;27993:67;:::i;:::-;27986:74;;28069:93;28158:3;28069:93;:::i;:::-;28187:2;28182:3;28178:12;28171:19;;27830:366;;;:::o;28202:419::-;28368:4;28406:2;28395:9;28391:18;28383:26;;28455:9;28449:4;28445:20;28441:1;28430:9;28426:17;28419:47;28483:131;28609:4;28483:131;:::i;:::-;28475:139;;28202:419;;;:::o;28627:85::-;28672:7;28701:5;28690:16;;28627:85;;;:::o;28718:60::-;28746:3;28767:5;28760:12;;28718:60;;;:::o;28784:158::-;28842:9;28875:61;28893:42;28902:32;28928:5;28902:32;:::i;:::-;28893:42;:::i;:::-;28875:61;:::i;:::-;28862:74;;28784:158;;;:::o;28948:147::-;29043:45;29082:5;29043:45;:::i;:::-;29038:3;29031:58;28948:147;;:::o;29101:918::-;29378:4;29416:3;29405:9;29401:19;29393:27;;29430:71;29498:1;29487:9;29483:17;29474:6;29430:71;:::i;:::-;29511:72;29579:2;29568:9;29564:18;29555:6;29511:72;:::i;:::-;29593;29661:2;29650:9;29646:18;29637:6;29593:72;:::i;:::-;29675:80;29751:2;29740:9;29736:18;29727:6;29675:80;:::i;:::-;29765:81;29841:3;29830:9;29826:19;29817:6;29765:81;:::i;:::-;29856:73;29924:3;29913:9;29909:19;29900:6;29856:73;:::i;:::-;29939;30007:3;29996:9;29992:19;29983:6;29939:73;:::i;:::-;29101:918;;;;;;;;;;:::o;30025:507::-;30104:6;30112;30161:2;30149:9;30140:7;30136:23;30132:32;30129:119;;;30167:79;;:::i;:::-;30129:119;30287:1;30312:64;30368:7;30359:6;30348:9;30344:22;30312:64;:::i;:::-;30302:74;;30258:128;30425:2;30451:64;30507:7;30498:6;30487:9;30483:22;30451:64;:::i;:::-;30441:74;;30396:129;30025:507;;;;;:::o;30538:177::-;30678:29;30674:1;30666:6;30662:14;30655:53;30538:177;:::o;30721:366::-;30863:3;30884:67;30948:2;30943:3;30884:67;:::i;:::-;30877:74;;30960:93;31049:3;30960:93;:::i;:::-;31078:2;31073:3;31069:12;31062:19;;30721:366;;;:::o;31093:419::-;31259:4;31297:2;31286:9;31282:18;31274:26;;31346:9;31340:4;31336:20;31332:1;31321:9;31317:17;31310:47;31374:131;31500:4;31374:131;:::i;:::-;31366:139;;31093:419;;;:::o;31518:1029::-;31823:4;31861:3;31850:9;31846:19;31838:27;;31875:71;31943:1;31932:9;31928:17;31919:6;31875:71;:::i;:::-;31956:72;32024:2;32013:9;32009:18;32000:6;31956:72;:::i;:::-;32038;32106:2;32095:9;32091:18;32082:6;32038:72;:::i;:::-;32120;32188:2;32177:9;32173:18;32164:6;32120:72;:::i;:::-;32202:81;32278:3;32267:9;32263:19;32254:6;32202:81;:::i;:::-;32293;32369:3;32358:9;32354:19;32345:6;32293:81;:::i;:::-;32384:73;32452:3;32441:9;32437:19;32428:6;32384:73;:::i;:::-;32467;32535:3;32524:9;32520:19;32511:6;32467:73;:::i;:::-;31518:1029;;;;;;;;;;;:::o;32553:663::-;32641:6;32649;32657;32706:2;32694:9;32685:7;32681:23;32677:32;32674:119;;;32712:79;;:::i;:::-;32674:119;32832:1;32857:64;32913:7;32904:6;32893:9;32889:22;32857:64;:::i;:::-;32847:74;;32803:128;32970:2;32996:64;33052:7;33043:6;33032:9;33028:22;32996:64;:::i;:::-;32986:74;;32941:129;33109:2;33135:64;33191:7;33182:6;33171:9;33167:22;33135:64;:::i;:::-;33125:74;;33080:129;32553:663;;;;;:::o;33222:181::-;33362:33;33358:1;33350:6;33346:14;33339:57;33222:181;:::o;33409:366::-;33551:3;33572:67;33636:2;33631:3;33572:67;:::i;:::-;33565:74;;33648:93;33737:3;33648:93;:::i;:::-;33766:2;33761:3;33757:12;33750:19;;33409:366;;;:::o;33781:419::-;33947:4;33985:2;33974:9;33970:18;33962:26;;34034:9;34028:4;34024:20;34020:1;34009:9;34005:17;33998:47;34062:131;34188:4;34062:131;:::i;:::-;34054:139;;33781:419;;;:::o;34206:225::-;34346:34;34342:1;34334:6;34330:14;34323:58;34415:8;34410:2;34402:6;34398:15;34391:33;34206:225;:::o;34437:366::-;34579:3;34600:67;34664:2;34659:3;34600:67;:::i;:::-;34593:74;;34676:93;34765:3;34676:93;:::i;:::-;34794:2;34789:3;34785:12;34778:19;;34437:366;;;:::o;34809:419::-;34975:4;35013:2;35002:9;34998:18;34990:26;;35062:9;35056:4;35052:20;35048:1;35037:9;35033:17;35026:47;35090:131;35216:4;35090:131;:::i;:::-;35082:139;;34809:419;;;:::o

Swarm Source

ipfs://0d75faae1e1e9ee8ad5d8c2f1047ee454d0e0fe7b57514f7ed75c42dd0e1d2eb

Block Transaction Gas Used Reward
view all blocks validated

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.