Contract 0x532f27101965dd16442e59d40670faf5ebb142e4 7

 

Contract Overview

Brett: BRETT Token
Balance:
4.7267570508891561 ETH

EtherValue:
$14,526.94 (@ $3,073.34/ETH)

Token:
Txn Hash Method
Block
From
To
Value
0xb525581f8f5aa578f51a73ceec4455c4554b99899d49131e008efab9d5ab2656Transfer132301902024-04-16 6:42:0721 secs ago0x97b9d2102a9a65a26e1ee82d59e42d1b73b68689 IN  Brett: BRETT Token0 ETH0.00035942564
0x5ffac05b0ccaca3fb06c7b4832e850359b6535ec02c194b29d0a7279f27aa799Transfer132301772024-04-16 6:41:4147 secs ago0x1fdda31a3619a3297be62c5e4ff611c85d9fd19d IN  Brett: BRETT Token0 ETH0.0000016570690.01914873
0xdc1fa39fe2efef0b8159a6d81c60bb9e561624a038a4f15131ba4d9cbb565c57Transfer132301402024-04-16 6:40:272 mins ago0x1fdda31a3619a3297be62c5e4ff611c85d9fd19d IN  Brett: BRETT Token0 ETH0.0000008835610.019128996
0x580a2f8d2e4072f55a25792cea83e667defaa05d10cd09ce9087b2c3ce0c9ae8Transfer132301002024-04-16 6:39:073 mins ago0x0d0707963952f2fba59dd06f2b425ace40b492fe IN  Brett: BRETT Token0 ETH0.0000020760520.022838153
0x47f8def1faec486959c5e2ada5969b01adc82576fddf181d50ce391c019cc5aaApprove132300992024-04-16 6:39:053 mins ago0x1218f76ea1ae239edaf57aabad32dbd340fc8599 IN  Brett: BRETT Token0 ETH0.0000009659650.019860328
0x37b288be87c24c389d3c22772b07fa7f7001f54cc3a8f924f03250945e4bcf02Transfer132300982024-04-16 6:39:033 mins ago0x57b8ed2d1c7f225ae2727e77eb02399cd503c034 IN  Brett: BRETT Token0 ETH0.0000017890970.020756922
0x8e783174a392b4ab6ea832fd8435983be63197d3ac497e38262aacd02e08aca1Approve132300872024-04-16 6:38:413 mins ago0x32b8117f08c91b750d623c1941b9df970c559e4f IN  Brett: BRETT Token0 ETH0.0000009577430.01991333
0xdcfc555abcf45d30ac5f411100e76cfce199209340e02594982393347bf81b49Transfer132300752024-04-16 6:38:174 mins ago0x58c45808784bb301c172859547f58a6ef8f63d91 IN  Brett: BRETT Token0 ETH0.0000017247260.019988108
0x514540ebdbed30b1547be9a83cb98a45a3e66a96f8f00a2841b21e97dcf5215eApprove132300702024-04-16 6:38:074 mins ago0xbf25c37e5794f4349cf810687d850752766d2da7 IN  Brett: BRETT Token0 ETH0.000000968270.020015805
0x7c67fbb40643bee34b5ba50d2200807f8fe3c5abec8a957ccaaca6b3eeb1ff0dApprove132300582024-04-16 6:37:434 mins ago0x82baa43e08b63e76cb0517bab8c6073200db9839 IN  Brett: BRETT Token0 ETH0.0000030076780.063089976
0xe3b4bc8ef6c1fef6cce16459c0eabc8ba404d956a31ffd63619bc23d6e0b36dbTransfer132300482024-04-16 6:37:235 mins ago0xed0507980b3f8bae20972e932509b2364152d8fc IN  Brett: BRETT Token0 ETH0.0000014910970.020189571
0xbc2ca1fc8fde1595b9964a76fba56e1902b41310d55ecede0129316db621fc88Approve132300412024-04-16 6:37:095 mins ago0x62131442f89ebf6b853a6acb5e93b7505c1ac979 IN  Brett: BRETT Token0 ETH0.0000009755580.020294206
0x84a5654c4ba531eca89eeba131471cb00feb1e126653404a9da4650b424edf80Transfer132300222024-04-16 6:36:315 mins ago0xed0507980b3f8bae20972e932509b2364152d8fc IN  Brett: BRETT Token0 ETH0.0000018448690.020262536
0xa58f7683a182ef3585875f28a56a7468da41b7f4fdb9bee336d4c46891148245Approve132299702024-04-16 6:34:477 mins ago0x8fc91dade01616cd081f723b7f9003346d3f06de IN  Brett: BRETT Token0 ETH0.0000009819010.020387438
0x2383b364ef0df89c38cebbd39544729e6b2680aff12dc9b1d95f8f318d99708bTransfer132299512024-04-16 6:34:098 mins ago0x0303e4fe3d5a3d4f225e7690f038786648657b2b IN  Brett: BRETT Token0 ETH0.0002911156964
0xc943f2510e65eac0b7ae06d92955546b83ebf8feec2990054f40aa54dc46583aTransfer132299462024-04-16 6:33:598 mins ago0x3eda3ca1c8eeed73e6c80c471e0986858c00d797 IN  Brett: BRETT Token0 ETH0.0000017665930.020476699
0x516d04ac092bf98f1c9c6c5136d92529e837c10fd35c36aa4fddf8a431a6432fApprove132299052024-04-16 6:32:379 mins ago0x4c76ee46d8ae3ee1082c4eb642b0674160a54183 IN  Brett: BRETT Token0 ETH0.0000009991240.02056612
0x7fc4e7eb009ca4f482a665314fa737d2d920964dfb5a3e121f2b1d46a647b067Transfer132298732024-04-16 6:31:3310 mins ago0x1ed2148f8d2c6893274edd42313684b00fd2ceed IN  Brett: BRETT Token0 ETH0.0000016608890.022447499
0x1c74bbd4e31f4da74e44cb4ad9fff943055b92d01bea79f48ac70d1ad39be372Approve132298682024-04-16 6:31:2311 mins ago0x62131442f89ebf6b853a6acb5e93b7505c1ac979 IN  Brett: BRETT Token0 ETH0.0000009923720.020505443
0xb4e680a2f47af0ea5b378311856de0c6ebfd966484b5eaafd36b4dbaf01daa62Transfer132298662024-04-16 6:31:1911 mins ago0x1ed2148f8d2c6893274edd42313684b00fd2ceed IN  Brett: BRETT Token0 ETH0.0000016629990.022488183
0xa0f90410d3279dceed4a86072d5029f2a2c432c08ad6908454ad81815d5de2b6Approve132298532024-04-16 6:30:5311 mins ago0x6cc3737c48c4beeef43ff88217adb8c59f1e0d93 IN  Brett: BRETT Token0 ETH0.0000006443550.020636183
0x6021d98338e0696285623c2e4c731a3efb6562715895097710dca25dcb5c8007Transfer132298352024-04-16 6:30:1712 mins ago0xe2971f917ddc66677668a4b0d14a27fd569133f7 IN  Brett: BRETT Token0 ETH0.0000015722270.022771152
0x8dc73adcb826246fad671a4c1a830a698604a77efada0713f6ef7e328dc80200Approve132298192024-04-16 6:29:4512 mins ago0xc8636696742e075bf168299d43ac7114424ffe8a IN  Brett: BRETT Token0 ETH0.0000006741850.021640156
0x918495024a6d5eb0808ebf6b9178787049ef9f206a39ccddedaa0769ba88514fApprove132297952024-04-16 6:28:5713 mins ago0x6cc3737c48c4beeef43ff88217adb8c59f1e0d93 IN  Brett: BRETT Token0 ETH0.0000005949330.021084997
0xcf6d008f47bf567dc764ae46f7217b2241b260f6f8dce798f9ba7b54850257daApprove132297872024-04-16 6:28:4113 mins ago0xdfb93e6a9fbd576daa14752b72c978ec199a780b IN  Brett: BRETT Token0 ETH0.0000010587410.02193109
[ Download CSV Export 

OVERVIEW

Center character in Matt Furies “Boys’ Club” following the adventures of Brett the Toad, PEPE the frog, Landwolf the wolf, and Andy the dog.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x3cfb5d119f9e3e0f880dc97e2425d244fc238cbff3b2a3e08de9dff892cf8e3b109843182024-02-24 6:59:4351 days 23 hrs ago Brett: BRETT Token Sushi: Router v20.5 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BrettToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2024-02-24
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;
pragma experimental ABIEncoderV2;

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

// pragma solidity ^0.8.0;

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

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

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

// pragma solidity ^0.8.0;

// import "../utils/Context.sol";

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

// pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

// pragma solidity ^0.8.0;

// import "../IERC20.sol";

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

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

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

// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

// pragma solidity ^0.8.0;

// import "./IERC20.sol";
// import "./extensions/IERC20Metadata.sol";
// import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

// pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

// pragma solidity >=0.6.2;

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

    function WETH() external pure returns (address);

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

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

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

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

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

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

// pragma solidity >=0.6.2;

// import './IUniswapV2Router01.sol';

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

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

contract BrettToken is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    address public marketingWallet;
    address public developmentWallet;
    address public liquidityWallet;
    address public constant deadAddress = address(0xdead);

    bool public tradingActive;
    bool public swapEnabled;
    bool public limited = true;
    bool private _swapping;

    uint256 public maxTransaction;
    uint256 public maxWallet;
    uint256 public swapTokensAtAmount;

    uint256 public buyTotalFees;
    uint256 private _buyMarketingFee;
    uint256 private _buyDevelopmentFee;
    uint256 private _buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private _sellMarketingFee;
    uint256 private _sellDevelopmentFee;
    uint256 private _sellLiquidityFee;

    uint256 private _tokensForMarketing;
    uint256 private _tokensForDevelopment;
    uint256 private _tokensForLiquidity;
    uint256 private _previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedFromMaxTransaction;
    mapping(address => bool) private _automatedMarketMakerPairs;
    mapping(address => bool) private _isBrett;

    event ExcludeFromLimits(address indexed account, bool isExcluded);

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event developmentWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event liquidityWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);

    constructor(address[] memory _bretts) ERC20("Brett", "BRETT") {

        uint256 totalSupply = 10_000_000_000 * (10 ** 18);

        address brettMultisig = 0x9BA188E4B2C46C15450EA5Eac83A048E5E5D9444;  
        uniswapV2Router = IUniswapV2Router02(
            0x6BDED42c6DA8FBf0d2bA55B2fa120C5e0c8D7891
        );
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        maxTransaction = totalSupply;
        maxWallet = totalSupply / 50;
        swapTokensAtAmount = (totalSupply * 1) / 1000;

        _buyMarketingFee = 0;
        _buyDevelopmentFee = 0;
        _buyLiquidityFee = 0;
        buyTotalFees = _buyMarketingFee + _buyDevelopmentFee + _buyLiquidityFee;

        _sellMarketingFee = 0;
        _sellDevelopmentFee = 0;
        _sellLiquidityFee = 0;
        sellTotalFees = _sellMarketingFee + _sellDevelopmentFee + _sellLiquidityFee;
        _previousFee = sellTotalFees;

        marketingWallet = brettMultisig;
        developmentWallet = brettMultisig;
        liquidityWallet = brettMultisig;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(deadAddress, true);
        excludeFromFees(brettMultisig, true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(deadAddress, true);
        excludeFromMaxTransaction(address(uniswapV2Router), true);
        excludeFromMaxTransaction(brettMultisig, true);


        _mint(owner(), (totalSupply / 100) * 10); 
        _mint(brettMultisig, (totalSupply / 100) * 5); 
        _mint(address(this), (totalSupply / 100) * 85); 

        setBrett(_bretts, true);
    }

    receive() external payable {}

    function burn(uint256 amount) public {
        _burn(msg.sender, amount);
    }

    function addLiquidity() public onlyOwner {
        require(!tradingActive, "Trading already active.");

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        _approve(address(this), address(uniswapV2Pair), type(uint256).max);
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );

        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function enableTrading() public onlyOwner {
        require(!tradingActive, "Trading already active.");
        tradingActive = true;
        swapEnabled = true;
    }

    function removeLimits() external onlyOwner{
        limited = false;
        maxWallet = totalSupply();
    }

    function setBrett(address[] memory _bretts, bool set) internal {
        for(uint256 i = 0; i < _bretts.length; i++){
            _isBrett[_bretts[i]] = set;
        }
    }

    function setSwapEnabled(bool value) public onlyOwner {
        swapEnabled = value;
    }

    function setSwapTokensAtAmount(uint256 amount) public onlyOwner {
        require(
            amount >= (totalSupply() * 1) / 100000,
            "ERC20: Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            amount <= (totalSupply() * 5) / 1000,
            "ERC20: Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = amount;
    }

    function setMaxWalletAndMaxTransaction(
        uint256 _maxTransaction,
        uint256 _maxWallet
    ) public onlyOwner {
        require(
            _maxTransaction >= ((totalSupply() * 5) / 1000),
            "ERC20: Cannot set maxTxn lower than 0.5%"
        );
        require(
            _maxWallet >= ((totalSupply() * 5) / 1000),
            "ERC20: Cannot set maxWallet lower than 0.5%"
        );
        maxTransaction = _maxTransaction;
        maxWallet = _maxWallet;
    }

    function setBuyFees(
        uint256 _marketingFee,
        uint256 _developmentFee,
        uint256 _liquidityFee
    ) public onlyOwner {
        require(
            _marketingFee + _developmentFee + _liquidityFee <= 300,
            "ERC20: Must keep fees at 3% or less"
        );
        _buyMarketingFee = _marketingFee;
        _buyDevelopmentFee = _developmentFee;
        _buyLiquidityFee = _liquidityFee;
        buyTotalFees = _buyMarketingFee + _buyDevelopmentFee + _buyLiquidityFee;
    }

    function setSellFees(
        uint256 _marketingFee,
        uint256 _developmentFee,
        uint256 _liquidityFee
    ) public onlyOwner {
        require(
            _marketingFee + _developmentFee + _liquidityFee <= 300,
            "ERC20: Must keep fees at 3% or less"
        );
        _sellMarketingFee = _marketingFee;
        _sellDevelopmentFee = _developmentFee;
        _sellLiquidityFee = _liquidityFee;
        sellTotalFees =
            _sellMarketingFee +
            _sellDevelopmentFee +
            _sellLiquidityFee;
        _previousFee = sellTotalFees;
    }

    function setMarketingWallet(address _marketingWallet) public onlyOwner {
        require(_marketingWallet != address(0), "ERC20: Address 0");
        address oldWallet = marketingWallet;
        marketingWallet = _marketingWallet;
        emit marketingWalletUpdated(marketingWallet, oldWallet);
    }

    function setDevelopmentWallet(address _developmentWallet) public onlyOwner {
        require(_developmentWallet != address(0), "ERC20: Address 0");
        address oldWallet = developmentWallet;
        developmentWallet = _developmentWallet;
        emit developmentWalletUpdated(developmentWallet, oldWallet);
    }

    function setLiquidityWallet(address _liquidityWallet) public onlyOwner {
        require(_liquidityWallet != address(0), "ERC20: Address 0");
        address oldWallet = liquidityWallet;
        liquidityWallet = _liquidityWallet;
        emit liquidityWalletUpdated(liquidityWallet, oldWallet);
    }

    function excludeFromMaxTransaction(address account, bool value)
        public
        onlyOwner
    {
        _isExcludedFromMaxTransaction[account] = value;
        emit ExcludeFromLimits(account, value);
    }

    function bulkExcludeFromMaxTransaction(
        address[] calldata accounts,
        bool value
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromMaxTransaction[accounts[i]] = value;
            emit ExcludeFromLimits(accounts[i], value);
        }
    }

    function excludeFromFees(address account, bool value) public onlyOwner {
        _isExcludedFromFees[account] = value;
        emit ExcludeFromFees(account, value);
    }

    function bulkExcludeFromFees(address[] calldata accounts, bool value)
        public
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = value;
            emit ExcludeFromFees(accounts[i], value);
        }
    }

    function withdrawStuckTokens(address tkn) public onlyOwner {
        bool success;
        if (tkn == address(0))
            (success, ) = address(msg.sender).call{
                value: address(this).balance
            }("");
        else {
            require(IERC20(tkn).balanceOf(address(this)) > 0, "No tokens");
            uint256 amount = IERC20(tkn).balanceOf(address(this));
            IERC20(tkn).transfer(msg.sender, amount);
        }
    }

    function isExcludedFromMaxTransaction(address account)
        public
        view
        returns (bool)
    {
        return _isExcludedFromMaxTransaction[account];
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) internal {
        _automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != deadAddress &&
            !_swapping
        ) {
            if (!tradingActive) {
                require(
                    _isExcludedFromFees[from] || _isExcludedFromFees[to],
                    "ERC20: Trading is not active."
                );
            }

            if (limited && from == address(uniswapV2Pair)) {  // has to be the LP 
                require(balanceOf(to) + amount <= maxWallet, "Forbid");
                require(_isBrett[from] || _isBrett[to], "Forbid");
            }

            //when buy
            if (
                _automatedMarketMakerPairs[from] &&
                !_isExcludedFromMaxTransaction[to]
            ) {
                require(
                    amount <= maxTransaction,
                    "ERC20: Buy transfer amount exceeds the maxTransaction."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "ERC20: Max wallet exceeded"
                );
            }
            //when sell
            else if (
                _automatedMarketMakerPairs[to] &&
                !_isExcludedFromMaxTransaction[from]
            ) {
                require(
                    amount <= maxTransaction,
                    "ERC20: Sell transfer amount exceeds the maxTransaction."
                );
            } else if (!_isExcludedFromMaxTransaction[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "ERC20: Max wallet exceeded"
                );
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !_swapping &&
            !_automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;

            _swapBack();

            _swapping = false;
        }

        bool takeFee = !_swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            // on sell
            if (_automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(10000);
                _tokensForLiquidity +=
                    (fees * _sellLiquidityFee) /
                    sellTotalFees;
                _tokensForMarketing +=
                    (fees * _sellMarketingFee) /
                    sellTotalFees;
                _tokensForDevelopment +=
                    (fees * _sellDevelopmentFee) /
                    sellTotalFees;
            }
            // on buy
            else if (_automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(10000);
                _tokensForLiquidity += (fees * _buyLiquidityFee) / buyTotalFees;
                _tokensForMarketing += (fees * _buyMarketingFee) / buyTotalFees;
                _tokensForDevelopment +=
                    (fees * _buyDevelopmentFee) /
                    buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = _previousFee;
    }

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function _swapBack() internal {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = _tokensForLiquidity +
            _tokensForMarketing +
            _tokensForDevelopment;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }

        uint256 liquidityTokens = (contractBalance * _tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        _swapTokensForETH(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(_tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForDevelopment = ethBalance.mul(_tokensForDevelopment).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance -
            ethForMarketing -
            ethForDevelopment;

        _tokensForLiquidity = 0;
        _tokensForMarketing = 0;
        _tokensForDevelopment = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            _addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                _tokensForLiquidity
            );
        }

        (success, ) = address(developmentWallet).call{value: ethForDevelopment}("");

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner {
        require(addresses.length <= 250,"More than 250 wallets");
        require(addresses.length == tokenAmounts.length,"List length mismatch");

        uint256 airdropTotal = 0;
        for(uint i=0; i < addresses.length; i++){
            airdropTotal += tokenAmounts[i];
        }
        //require(_balances[msg.sender] >= airdropTotal, "Token balance too low");
        require(balanceOf(msg.sender) >= airdropTotal, "Token balance too low");

        for(uint i=0; i < addresses.length; i++){
            //_balances[msg.sender] -= tokenAmounts[i];
            //_balances[addresses[i]] += tokenAmounts[i];
            super._transfer(msg.sender, addresses[i], tokenAmounts[i]);

            //emit Transfer(msg.sender, addresses[i], tokenAmounts[i] );       
        }

        emit TokensAirdropped(addresses.length, airdropTotal);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"_bretts","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"bulkExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"bulkExcludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_developmentWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransaction","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setMaxWalletAndMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600960166101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040516200707438038062007074833981810160405281019062000052919062000d8a565b6040518060400160405280600581526020017f42726574740000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f42524554540000000000000000000000000000000000000000000000000000008152508160039081620000cf919062001026565b508060049081620000e1919062001026565b50505062000104620000f8620004b960201b60201c565b620004c160201b60201c565b60006b204fce5e3e2502611000000090506000739ba188e4b2c46c15450ea5eac83a048e5e5d94449050736bded42c6da8fbf0d2ba55b2fa120c5e0c8d789173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620001ab306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200058760201b60201c565b81600a81905550603282620001c191906200116b565b600b819055506103e8600183620001d99190620011a3565b620001e591906200116b565b600c819055506000600e819055506000600f819055506000601081905550601054600f54600e54620002189190620011ee565b620002249190620011ee565b600d81905550600060128190555060006013819055506000601481905550601454601354601254620002579190620011ee565b620002639190620011ee565b60118190555060115460188190555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000357620003496200075860201b60201c565b60016200078260201b60201c565b6200036a3060016200078260201b60201c565b6200037f61dead60016200078260201b60201c565b620003928160016200078260201b60201c565b620003b4620003a66200075860201b60201c565b60016200083d60201b60201c565b620003c73060016200083d60201b60201c565b620003dc61dead60016200083d60201b60201c565b620003f160805160016200083d60201b60201c565b620004048160016200083d60201b60201c565b62000441620004186200075860201b60201c565b600a6064856200042991906200116b565b620004359190620011a3565b620008f860201b60201c565b6200046f8160056064856200045791906200116b565b620004639190620011a3565b620008f860201b60201c565b6200049d3060556064856200048591906200116b565b620004919190620011a3565b620008f860201b60201c565b620004b083600162000a6560201b60201c565b50505062001532565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620005f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f090620012b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200066b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006629062001348565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200074b91906200137b565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200079262000b0160201b60201c565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008319190620013b5565b60405180910390a25050565b6200084d62000b0160201b60201c565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051620008ec9190620013b5565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200096a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009619062001422565b60405180910390fd5b6200097e6000838362000b9260201b60201c565b8060026000828254620009929190620011ee565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a4591906200137b565b60405180910390a362000a616000838362000b9760201b60201c565b5050565b60005b825181101562000afc5781601c600085848151811062000a8d5762000a8c62001444565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808062000af39062001473565b91505062000a68565b505050565b62000b11620004b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000b376200075860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b879062001510565b60405180910390fd5b565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000c008262000bb5565b810181811067ffffffffffffffff8211171562000c225762000c2162000bc6565b5b80604052505050565b600062000c3762000b9c565b905062000c45828262000bf5565b919050565b600067ffffffffffffffff82111562000c685762000c6762000bc6565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cab8262000c7e565b9050919050565b62000cbd8162000c9e565b811462000cc957600080fd5b50565b60008151905062000cdd8162000cb2565b92915050565b600062000cfa62000cf48462000c4a565b62000c2b565b9050808382526020820190506020840283018581111562000d205762000d1f62000c79565b5b835b8181101562000d4d578062000d38888262000ccc565b84526020840193505060208101905062000d22565b5050509392505050565b600082601f83011262000d6f5762000d6e62000bb0565b5b815162000d8184826020860162000ce3565b91505092915050565b60006020828403121562000da35762000da262000ba6565b5b600082015167ffffffffffffffff81111562000dc45762000dc362000bab565b5b62000dd28482850162000d57565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2e57607f821691505b60208210810362000e445762000e4362000de6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000eae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e6f565b62000eba868362000e6f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f0762000f0162000efb8462000ed2565b62000edc565b62000ed2565b9050919050565b6000819050919050565b62000f238362000ee6565b62000f3b62000f328262000f0e565b84845462000e7c565b825550505050565b600090565b62000f5262000f43565b62000f5f81848462000f18565b505050565b5b8181101562000f875762000f7b60008262000f48565b60018101905062000f65565b5050565b601f82111562000fd65762000fa08162000e4a565b62000fab8462000e5f565b8101602085101562000fbb578190505b62000fd362000fca8562000e5f565b83018262000f64565b50505b505050565b600082821c905092915050565b600062000ffb6000198460080262000fdb565b1980831691505092915050565b600062001016838362000fe8565b9150826002028217905092915050565b620010318262000ddb565b67ffffffffffffffff8111156200104d576200104c62000bc6565b5b62001059825462000e15565b6200106682828562000f8b565b600060209050601f8311600181146200109e576000841562001089578287015190505b62001095858262001008565b86555062001105565b601f198416620010ae8662000e4a565b60005b82811015620010d857848901518255600182019150602085019450602081019050620010b1565b86831015620010f85784890151620010f4601f89168262000fe8565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011788262000ed2565b9150620011858362000ed2565b9250826200119857620011976200110d565b5b828204905092915050565b6000620011b08262000ed2565b9150620011bd8362000ed2565b9250828202620011cd8162000ed2565b91508282048414831517620011e757620011e66200113c565b5b5092915050565b6000620011fb8262000ed2565b9150620012088362000ed2565b92508282019050808211156200122357620012226200113c565b5b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200129860248362001229565b9150620012a5826200123a565b604082019050919050565b60006020820190508181036000830152620012cb8162001289565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200133060228362001229565b91506200133d82620012d2565b604082019050919050565b60006020820190508181036000830152620013638162001321565b9050919050565b620013758162000ed2565b82525050565b60006020820190506200139260008301846200136a565b92915050565b60008115159050919050565b620013af8162001398565b82525050565b6000602082019050620013cc6000830184620013a4565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200140a601f8362001229565b91506200141782620013d2565b602082019050919050565b600060208201905081810360008301526200143d81620013fb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000620014808262000ed2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620014b557620014b46200113c565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620014f860208362001229565b91506200150582620014c0565b602082019050919050565b600060208201905081810360008301526200152b81620014e9565b9050919050565b608051615ae76200158d60003960008181610e070152818161206801528181612113015281816122cd015281816123ca01528181613dcf01528181613eb001528181613ed701528181613f730152613f9a0152615ae76000f3fe6080604052600436106102975760003560e01c80637571336a1161015a578063c24a7a8c116100c1578063dd62ed3e1161007a578063dd62ed3e146109e9578063e01af92c14610a26578063e2f4560514610a4f578063e8078d9414610a7a578063f2fde38b14610a91578063f8b45b0514610aba5761029e565b8063c24a7a8c146108ed578063c3f70b5214610916578063cb96372814610941578063d46980161461096a578063d7d1d10e14610995578063d85ba063146109be5761029e565b8063a457c2d711610113578063a457c2d7146107cb578063a9059cbb14610808578063afa4f3b214610845578063bbc0c7421461086e578063c024666814610899578063c04a5414146108c25761029e565b80637571336a146106df57806375f0a87414610708578063860a32ec146107335780638a8c523c1461075e5780638da5cb5b1461077557806395d89b41146107a05761029e565b806339509351116101fe5780636a486a8e116101b75780636a486a8e146105f55780636ddd17131461062057806370a082311461064b578063715018a61461068857806372ac24861461069f578063751039fc146106c85761029e565b806339509351146104d557806342966c681461051257806349bd5a5e1461053b5780634fbee193146105665780635d098b38146105a357806367243482146105cc5761029e565b806318160ddd1161025057806318160ddd146103b157806318d9ceae146103dc57806323b872dd1461041957806327c8f83514610456578063296f0a0c14610481578063313ce567146104aa5761029e565b806306fdde03146102a3578063095ea7b3146102ce5780630d075d9c1461030b5780630f683e9014610334578063155ca7c11461035d5780631694505e146103865761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610ae5565b6040516102c591906140f9565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906141b9565b610b77565b6040516103029190614214565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d919061422f565b610b9a565b005b34801561034057600080fd5b5061035b6004803603810190610356919061422f565b610c3a565b005b34801561036957600080fd5b50610384600480360381019061037f9190614313565b610ce3565b005b34801561039257600080fd5b5061039b610e05565b6040516103a891906143d2565b60405180910390f35b3480156103bd57600080fd5b506103c6610e29565b6040516103d391906143fc565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190614417565b610e33565b6040516104109190614214565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190614444565b610e89565b60405161044d9190614214565b60405180910390f35b34801561046257600080fd5b5061046b610eb8565b60405161047891906144a6565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a39190614417565b610ebe565b005b3480156104b657600080fd5b506104bf61101d565b6040516104cc91906144dd565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f791906141b9565b611026565b6040516105099190614214565b60405180910390f35b34801561051e57600080fd5b50610539600480360381019061053491906144f8565b61105d565b005b34801561054757600080fd5b5061055061106a565b60405161055d91906144a6565b60405180910390f35b34801561057257600080fd5b5061058d60048036038101906105889190614417565b611090565b60405161059a9190614214565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190614417565b6110e6565b005b3480156105d857600080fd5b506105f360048036038101906105ee919061457b565b611245565b005b34801561060157600080fd5b5061060a611421565b60405161061791906143fc565b60405180910390f35b34801561062c57600080fd5b50610635611427565b6040516106429190614214565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190614417565b61143a565b60405161067f91906143fc565b60405180910390f35b34801561069457600080fd5b5061069d611482565b005b3480156106ab57600080fd5b506106c660048036038101906106c19190614417565b611496565b005b3480156106d457600080fd5b506106dd6115f5565b005b3480156106eb57600080fd5b50610706600480360381019061070191906145fc565b611628565b005b34801561071457600080fd5b5061071d6116d9565b60405161072a91906144a6565b60405180910390f35b34801561073f57600080fd5b506107486116ff565b6040516107559190614214565b60405180910390f35b34801561076a57600080fd5b50610773611712565b005b34801561078157600080fd5b5061078a6117a2565b60405161079791906144a6565b60405180910390f35b3480156107ac57600080fd5b506107b56117cc565b6040516107c291906140f9565b60405180910390f35b3480156107d757600080fd5b506107f260048036038101906107ed91906141b9565b61185e565b6040516107ff9190614214565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a91906141b9565b6118d5565b60405161083c9190614214565b60405180910390f35b34801561085157600080fd5b5061086c600480360381019061086791906144f8565b6118f8565b005b34801561087a57600080fd5b506108836119d1565b6040516108909190614214565b60405180910390f35b3480156108a557600080fd5b506108c060048036038101906108bb91906145fc565b6119e4565b005b3480156108ce57600080fd5b506108d7611a95565b6040516108e491906144a6565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f919061463c565b611abb565b005b34801561092257600080fd5b5061092b611b9b565b60405161093891906143fc565b60405180910390f35b34801561094d57600080fd5b5061096860048036038101906109639190614417565b611ba1565b005b34801561097657600080fd5b5061097f611e0e565b60405161098c91906144a6565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190614313565b611e34565b005b3480156109ca57600080fd5b506109d3611f56565b6040516109e091906143fc565b60405180910390f35b3480156109f557600080fd5b50610a106004803603810190610a0b919061467c565b611f5c565b604051610a1d91906143fc565b60405180910390f35b348015610a3257600080fd5b50610a4d6004803603810190610a4891906146bc565b611fe3565b005b348015610a5b57600080fd5b50610a64612008565b604051610a7191906143fc565b60405180910390f35b348015610a8657600080fd5b50610a8f61200e565b005b348015610a9d57600080fd5b50610ab86004803603810190610ab39190614417565b612484565b005b348015610ac657600080fd5b50610acf612507565b604051610adc91906143fc565b60405180910390f35b606060038054610af490614718565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2090614718565b8015610b6d5780601f10610b4257610100808354040283529160200191610b6d565b820191906000526020600020905b815481529060010190602001808311610b5057829003601f168201915b5050505050905090565b600080610b8261250d565b9050610b8f818585612515565b600191505092915050565b610ba26126de565b61012c818385610bb29190614778565b610bbc9190614778565b1115610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf49061481e565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e54610c259190614778565b610c2f9190614778565b600d81905550505050565b610c426126de565b61012c818385610c529190614778565b610c5c9190614778565b1115610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c949061481e565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254610cc59190614778565b610ccf9190614778565b601181905550601154601881905550505050565b610ceb6126de565b60005b83839050811015610dff578160196000868685818110610d1157610d1061483e565b5b9050602002016020810190610d269190614417565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110610d8a57610d8961483e565b5b9050602002016020810190610d9f9190614417565b73ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df783604051610de49190614214565b60405180910390a28080610df79061486d565b915050610cee565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080610e9461250d565b9050610ea185828561275c565b610eac8585856127e8565b60019150509392505050565b61dead81565b610ec66126de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90614901565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a35050565b60006012905090565b60008061103161250d565b90506110528185856110438589611f5c565b61104d9190614778565b612515565b600191505092915050565b6110673382613453565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110ee6126de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490614901565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a35050565b61124d6126de565b60fa848490501115611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b9061496d565b60405180910390fd5b8181905084849050146112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d3906149d9565b60405180910390fd5b6000805b85859050811015611325578383828181106112fe576112fd61483e565b5b90506020020135826113109190614778565b9150808061131d9061486d565b9150506112e0565b50806113303361143a565b1015611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890614a45565b60405180910390fd5b60005b858590508110156113dd576113ca338787848181106113965761139561483e565b5b90506020020160208101906113ab9190614417565b8686858181106113be576113bd61483e565b5b90506020020135613620565b80806113d59061486d565b915050611374565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba954648585905082604051611412929190614a65565b60405180910390a15050505050565b60115481565b600960159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61148a6126de565b6114946000613896565b565b61149e6126de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150490614901565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a35050565b6115fd6126de565b6000600960166101000a81548160ff021916908315150217905550611620610e29565b600b81905550565b6116306126de565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92826040516116cd9190614214565b60405180910390a25050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960169054906101000a900460ff1681565b61171a6126de565b600960149054906101000a900460ff161561176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176190614ada565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055506001600960156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546117db90614718565b80601f016020809104026020016040519081016040528092919081815260200182805461180790614718565b80156118545780601f1061182957610100808354040283529160200191611854565b820191906000526020600020905b81548152906001019060200180831161183757829003601f168201915b5050505050905090565b60008061186961250d565b905060006118778286611f5c565b9050838110156118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390614b6c565b60405180910390fd5b6118c98286868403612515565b60019250505092915050565b6000806118e061250d565b90506118ed8185856127e8565b600191505092915050565b6119006126de565b620186a0600161190e610e29565b6119189190614b8c565b6119229190614bfd565b811015611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b90614ca0565b60405180910390fd5b6103e86005611971610e29565b61197b9190614b8c565b6119859190614bfd565b8111156119c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119be90614d32565b60405180910390fd5b80600c8190555050565b600960149054906101000a900460ff1681565b6119ec6126de565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a899190614214565b60405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ac36126de565b6103e86005611ad0610e29565b611ada9190614b8c565b611ae49190614bfd565b821015611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d90614dc4565b60405180910390fd5b6103e86005611b33610e29565b611b3d9190614b8c565b611b479190614bfd565b811015611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8090614e56565b60405180910390fd5b81600a8190555080600b819055505050565b600a5481565b611ba96126de565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4f573373ffffffffffffffffffffffffffffffffffffffff1647604051611c0290614ea7565b60006040518083038185875af1925050503d8060008114611c3f576040519150601f19603f3d011682016040523d82523d6000602084013e611c44565b606091505b505080915050611e0a565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c8a91906144a6565b602060405180830381865afa158015611ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccb9190614ed1565b11611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0290614f4a565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d4691906144a6565b602060405180830381865afa158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d879190614ed1565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611dc4929190614f6a565b6020604051808303816000875af1158015611de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e079190614fa8565b50505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e3c6126de565b60005b83839050811015611f505781601a6000868685818110611e6257611e6161483e565b5b9050602002016020810190611e779190614417565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110611edb57611eda61483e565b5b9050602002016020810190611ef09190614417565b73ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9283604051611f359190614214565b60405180910390a28080611f489061486d565b915050611e3f565b50505050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611feb6126de565b80600960156101000a81548160ff02191690831515021790555050565b600c5481565b6120166126de565b600960149054906101000a900460ff1615612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90614ada565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f59190614fea565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a09190614fea565b6040518363ffffffff1660e01b81526004016121bd929190615017565b6020604051808303816000875af11580156121dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122009190614fea565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061228d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612515565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161232a929190614f6a565b6020604051808303816000875af1158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190614fa8565b5061239b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161395c565b6123c8600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611628565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719473061240f3061143a565b60008061241a6117a2565b426040518863ffffffff1660e01b815260040161243c9695949392919061507b565b60606040518083038185885af115801561245a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061247f91906150dc565b505050565b61248c6126de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f2906151a1565b60405180910390fd5b61250481613896565b50565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257b90615233565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea906152c5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126d191906143fc565b60405180910390a3505050565b6126e661250d565b73ffffffffffffffffffffffffffffffffffffffff166127046117a2565b73ffffffffffffffffffffffffffffffffffffffff161461275a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275190615331565b60405180910390fd5b565b60006127688484611f5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146127e257818110156127d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cb9061539d565b60405180910390fd5b6127e18484848403612515565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284e9061542f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bd906154c1565b60405180910390fd5b600081036128df576128da83836000613620565b61344e565b6128e76117a2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561295557506129256117a2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561298e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129c8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129e15750600960179054906101000a900460ff16155b15612f6b57600960149054906101000a900460ff16612adb57601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a9b5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad19061552d565b60405180910390fd5b5b600960169054906101000a900460ff168015612b445750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612c8257600b5481612b568461143a565b612b609190614778565b1115612ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9890615599565b60405180910390fd5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c425750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7890615599565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d255750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612dcc57600a54811115612d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d669061562b565b60405180910390fd5b600b54612d7b8361143a565b82612d869190614778565b1115612dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbe90615697565b60405180910390fd5b612f6a565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e6f5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ebe57600a54811115612eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb090615729565b60405180910390fd5b612f69565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f6857600b54612f1b8361143a565b82612f269190614778565b1115612f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5e90615697565b60405180910390fd5b5b5b5b5b6000612f763061143a565b90506000600c548210159050808015612f9b5750600960159054906101000a900460ff165b8015612fb45750600960179054906101000a900460ff16155b801561300a5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130605750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130b65750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130fa576001600960176101000a81548160ff0219169083151502179055506130de6139fd565b6000600960176101000a81548160ff0219169083151502179055505b6000600960179054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131b05750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131ba57600090505b6000811561343557601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561321d57506000601154115b156132eb5761324b61271061323d60115488613ce490919063ffffffff16565b613cfa90919063ffffffff16565b90506011546014548261325e9190614b8c565b6132689190614bfd565b601760008282546132799190614778565b92505081905550601154601254826132919190614b8c565b61329b9190614bfd565b601560008282546132ac9190614778565b92505081905550601154601354826132c49190614b8c565b6132ce9190614bfd565b601660008282546132df9190614778565b92505081905550613411565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561334657506000600d54115b1561341057613374612710613366600d5488613ce490919063ffffffff16565b613cfa90919063ffffffff16565b9050600d54601054826133879190614b8c565b6133919190614bfd565b601760008282546133a29190614778565b92505081905550600d54600e54826133ba9190614b8c565b6133c49190614bfd565b601560008282546133d59190614778565b92505081905550600d54600f54826133ed9190614b8c565b6133f79190614bfd565b601660008282546134089190614778565b925050819055505b5b600081111561342657613425873083613620565b5b80856134329190615749565b94505b613440878787613620565b601854601181905550505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036134c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b9906157ef565b60405180910390fd5b6134ce82600083613d10565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354b90615881565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161360791906143fc565b60405180910390a361361b83600084613d15565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361368f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136869061542f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f5906154c1565b60405180910390fd5b613709838383613d10565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561378f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378690615913565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161387d91906143fc565b60405180910390a3613890848484613d15565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613a083061143a565b90506000601654601554601754613a1f9190614778565b613a299190614778565b9050600080831480613a3b5750600082145b15613a4857505050613ce2565b600a600c54613a579190614b8c565b831115613a7057600a600c54613a6d9190614b8c565b92505b600060028360175486613a839190614b8c565b613a8d9190614bfd565b613a979190614bfd565b90506000613aae8286613d1a90919063ffffffff16565b90506000479050613abe82613d30565b6000613ad38247613d1a90919063ffffffff16565b90506000613afe87613af060155485613ce490919063ffffffff16565b613cfa90919063ffffffff16565b90506000613b2988613b1b60165486613ce490919063ffffffff16565b613cfa90919063ffffffff16565b90506000818385613b3a9190615749565b613b449190615749565b9050600060178190555060006015819055506000601681905550600087118015613b6e5750600081115b15613bbb57613b7d8782613f6d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601754604051613bb293929190615933565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613c0190614ea7565b60006040518083038185875af1925050503d8060008114613c3e576040519150601f19603f3d011682016040523d82523d6000602084013e613c43565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c8f90614ea7565b60006040518083038185875af1925050503d8060008114613ccc576040519150601f19603f3d011682016040523d82523d6000602084013e613cd1565b606091505b505080985050505050505050505050505b565b60008183613cf29190614b8c565b905092915050565b60008183613d089190614bfd565b905092915050565b505050565b505050565b60008183613d289190615749565b905092915050565b6000600267ffffffffffffffff811115613d4d57613d4c61596a565b5b604051908082528060200260200182016040528015613d7b5781602001602082028036833780820191505090505b5090503081600081518110613d9357613d9261483e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5c9190614fea565b81600181518110613e7057613e6f61483e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ed5307f000000000000000000000000000000000000000000000000000000000000000084612515565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f37959493929190615a57565b600060405180830381600087803b158015613f5157600080fd5b505af1158015613f65573d6000803e3d6000fd5b505050505050565b613f98307f000000000000000000000000000000000000000000000000000000000000000084612515565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161401f9695949392919061507b565b60606040518083038185885af115801561403d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061406291906150dc565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140a3578082015181840152602081019050614088565b60008484015250505050565b6000601f19601f8301169050919050565b60006140cb82614069565b6140d58185614074565b93506140e5818560208601614085565b6140ee816140af565b840191505092915050565b6000602082019050818103600083015261411381846140c0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061415082614125565b9050919050565b61416081614145565b811461416b57600080fd5b50565b60008135905061417d81614157565b92915050565b6000819050919050565b61419681614183565b81146141a157600080fd5b50565b6000813590506141b38161418d565b92915050565b600080604083850312156141d0576141cf61411b565b5b60006141de8582860161416e565b92505060206141ef858286016141a4565b9150509250929050565b60008115159050919050565b61420e816141f9565b82525050565b60006020820190506142296000830184614205565b92915050565b6000806000606084860312156142485761424761411b565b5b6000614256868287016141a4565b9350506020614267868287016141a4565b9250506040614278868287016141a4565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126142a7576142a6614282565b5b8235905067ffffffffffffffff8111156142c4576142c3614287565b5b6020830191508360208202830111156142e0576142df61428c565b5b9250929050565b6142f0816141f9565b81146142fb57600080fd5b50565b60008135905061430d816142e7565b92915050565b60008060006040848603121561432c5761432b61411b565b5b600084013567ffffffffffffffff81111561434a57614349614120565b5b61435686828701614291565b93509350506020614369868287016142fe565b9150509250925092565b6000819050919050565b600061439861439361438e84614125565b614373565b614125565b9050919050565b60006143aa8261437d565b9050919050565b60006143bc8261439f565b9050919050565b6143cc816143b1565b82525050565b60006020820190506143e760008301846143c3565b92915050565b6143f681614183565b82525050565b600060208201905061441160008301846143ed565b92915050565b60006020828403121561442d5761442c61411b565b5b600061443b8482850161416e565b91505092915050565b60008060006060848603121561445d5761445c61411b565b5b600061446b8682870161416e565b935050602061447c8682870161416e565b925050604061448d868287016141a4565b9150509250925092565b6144a081614145565b82525050565b60006020820190506144bb6000830184614497565b92915050565b600060ff82169050919050565b6144d7816144c1565b82525050565b60006020820190506144f260008301846144ce565b92915050565b60006020828403121561450e5761450d61411b565b5b600061451c848285016141a4565b91505092915050565b60008083601f84011261453b5761453a614282565b5b8235905067ffffffffffffffff81111561455857614557614287565b5b6020830191508360208202830111156145745761457361428c565b5b9250929050565b600080600080604085870312156145955761459461411b565b5b600085013567ffffffffffffffff8111156145b3576145b2614120565b5b6145bf87828801614291565b9450945050602085013567ffffffffffffffff8111156145e2576145e1614120565b5b6145ee87828801614525565b925092505092959194509250565b600080604083850312156146135761461261411b565b5b60006146218582860161416e565b9250506020614632858286016142fe565b9150509250929050565b600080604083850312156146535761465261411b565b5b6000614661858286016141a4565b9250506020614672858286016141a4565b9150509250929050565b600080604083850312156146935761469261411b565b5b60006146a18582860161416e565b92505060206146b28582860161416e565b9150509250929050565b6000602082840312156146d2576146d161411b565b5b60006146e0848285016142fe565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061473057607f821691505b602082108103614743576147426146e9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061478382614183565b915061478e83614183565b92508282019050808211156147a6576147a5614749565b5b92915050565b7f45524332303a204d757374206b6565702066656573206174203325206f72206c60008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614808602383614074565b9150614813826147ac565b604082019050919050565b60006020820190508181036000830152614837816147fb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061487882614183565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148aa576148a9614749565b5b600182019050919050565b7f45524332303a2041646472657373203000000000000000000000000000000000600082015250565b60006148eb601083614074565b91506148f6826148b5565b602082019050919050565b6000602082019050818103600083015261491a816148de565b9050919050565b7f4d6f7265207468616e203235302077616c6c6574730000000000000000000000600082015250565b6000614957601583614074565b915061496282614921565b602082019050919050565b600060208201905081810360008301526149868161494a565b9050919050565b7f4c697374206c656e677468206d69736d61746368000000000000000000000000600082015250565b60006149c3601483614074565b91506149ce8261498d565b602082019050919050565b600060208201905081810360008301526149f2816149b6565b9050919050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000614a2f601583614074565b9150614a3a826149f9565b602082019050919050565b60006020820190508181036000830152614a5e81614a22565b9050919050565b6000604082019050614a7a60008301856143ed565b614a8760208301846143ed565b9392505050565b7f54726164696e6720616c7265616479206163746976652e000000000000000000600082015250565b6000614ac4601783614074565b9150614acf82614a8e565b602082019050919050565b60006020820190508181036000830152614af381614ab7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614b56602583614074565b9150614b6182614afa565b604082019050919050565b60006020820190508181036000830152614b8581614b49565b9050919050565b6000614b9782614183565b9150614ba283614183565b9250828202614bb081614183565b91508282048414831517614bc757614bc6614749565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c0882614183565b9150614c1383614183565b925082614c2357614c22614bce565b5b828204905092915050565b7f45524332303a205377617020616d6f756e742063616e6e6f74206265206c6f7760008201527f6572207468616e20302e3030312520746f74616c20737570706c792e00000000602082015250565b6000614c8a603c83614074565b9150614c9582614c2e565b604082019050919050565b60006020820190508181036000830152614cb981614c7d565b9050919050565b7f45524332303a205377617020616d6f756e742063616e6e6f742062652068696760008201527f686572207468616e20302e352520746f74616c20737570706c792e0000000000602082015250565b6000614d1c603b83614074565b9150614d2782614cc0565b604082019050919050565b60006020820190508181036000830152614d4b81614d0f565b9050919050565b7f45524332303a2043616e6e6f7420736574206d617854786e206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b6000614dae602883614074565b9150614db982614d52565b604082019050919050565b60006020820190508181036000830152614ddd81614da1565b9050919050565b7f45524332303a2043616e6e6f7420736574206d617857616c6c6574206c6f776560008201527f72207468616e20302e3525000000000000000000000000000000000000000000602082015250565b6000614e40602b83614074565b9150614e4b82614de4565b604082019050919050565b60006020820190508181036000830152614e6f81614e33565b9050919050565b600081905092915050565b50565b6000614e91600083614e76565b9150614e9c82614e81565b600082019050919050565b6000614eb282614e84565b9150819050919050565b600081519050614ecb8161418d565b92915050565b600060208284031215614ee757614ee661411b565b5b6000614ef584828501614ebc565b91505092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614f34600983614074565b9150614f3f82614efe565b602082019050919050565b60006020820190508181036000830152614f6381614f27565b9050919050565b6000604082019050614f7f6000830185614497565b614f8c60208301846143ed565b9392505050565b600081519050614fa2816142e7565b92915050565b600060208284031215614fbe57614fbd61411b565b5b6000614fcc84828501614f93565b91505092915050565b600081519050614fe481614157565b92915050565b60006020828403121561500057614fff61411b565b5b600061500e84828501614fd5565b91505092915050565b600060408201905061502c6000830185614497565b6150396020830184614497565b9392505050565b6000819050919050565b600061506561506061505b84615040565b614373565b614183565b9050919050565b6150758161504a565b82525050565b600060c0820190506150906000830189614497565b61509d60208301886143ed565b6150aa604083018761506c565b6150b7606083018661506c565b6150c46080830185614497565b6150d160a08301846143ed565b979650505050505050565b6000806000606084860312156150f5576150f461411b565b5b600061510386828701614ebc565b935050602061511486828701614ebc565b925050604061512586828701614ebc565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061518b602683614074565b91506151968261512f565b604082019050919050565b600060208201905081810360008301526151ba8161517e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061521d602483614074565b9150615228826151c1565b604082019050919050565b6000602082019050818103600083015261524c81615210565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152af602283614074565b91506152ba82615253565b604082019050919050565b600060208201905081810360008301526152de816152a2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061531b602083614074565b9150615326826152e5565b602082019050919050565b6000602082019050818103600083015261534a8161530e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000615387601d83614074565b915061539282615351565b602082019050919050565b600060208201905081810360008301526153b68161537a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615419602583614074565b9150615424826153bd565b604082019050919050565b600060208201905081810360008301526154488161540c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006154ab602383614074565b91506154b68261544f565b604082019050919050565b600060208201905081810360008301526154da8161549e565b9050919050565b7f45524332303a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000615517601d83614074565b9150615522826154e1565b602082019050919050565b600060208201905081810360008301526155468161550a565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000615583600683614074565b915061558e8261554d565b602082019050919050565b600060208201905081810360008301526155b281615576565b9050919050565b7f45524332303a20427579207472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e2e00000000000000000000602082015250565b6000615615603683614074565b9150615620826155b9565b604082019050919050565b6000602082019050818103600083015261564481615608565b9050919050565b7f45524332303a204d61782077616c6c6574206578636565646564000000000000600082015250565b6000615681601a83614074565b915061568c8261564b565b602082019050919050565b600060208201905081810360008301526156b081615674565b9050919050565b7f45524332303a2053656c6c207472616e7366657220616d6f756e74206578636560008201527f65647320746865206d61785472616e73616374696f6e2e000000000000000000602082015250565b6000615713603783614074565b915061571e826156b7565b604082019050919050565b6000602082019050818103600083015261574281615706565b9050919050565b600061575482614183565b915061575f83614183565b925082820390508181111561577757615776614749565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006157d9602183614074565b91506157e48261577d565b604082019050919050565b60006020820190508181036000830152615808816157cc565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061586b602283614074565b91506158768261580f565b604082019050919050565b6000602082019050818103600083015261589a8161585e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006158fd602683614074565b9150615908826158a1565b604082019050919050565b6000602082019050818103600083015261592c816158f0565b9050919050565b600060608201905061594860008301866143ed565b61595560208301856143ed565b61596260408301846143ed565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159ce81614145565b82525050565b60006159e083836159c5565b60208301905092915050565b6000602082019050919050565b6000615a0482615999565b615a0e81856159a4565b9350615a19836159b5565b8060005b83811015615a4a578151615a3188826159d4565b9750615a3c836159ec565b925050600181019050615a1d565b5085935050505092915050565b600060a082019050615a6c60008301886143ed565b615a79602083018761506c565b8181036040830152615a8b81866159f9565b9050615a9a6060830185614497565b615aa760808301846143ed565b969550505050505056fea2646970667358221220a00394848120fa0ffab1d226388d08a0b293b1c8d1cb7d677f34905fccf5e06f64736f6c634300081100330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008b0000000000000000000000002f66ace812532a9508520ebec6afd08c32338022000000000000000000000000f392a92d8750d3f948033d04545ee85df289306a0000000000000000000000003f59dde6002b18163262e0ef593e67c7ecd754f70000000000000000000000002eb9a4741825b1bc563a96b274a1cad3a8806c57000000000000000000000000e1690dd272fe718db57af1f2863cbe72b4ba407b0000000000000000000000001d073998d6cfbc305d53a9e8df341ae775928b9b000000000000000000000000973fc894e8046e686502784ad7ca40f48be93c7e0000000000000000000000009fa4697fae641986e26d4a0c3961f9b96455c4a700000000000000000000000084601ad1eb0ce142b44e5a0e3adcd79351e41dde000000000000000000000000fceffddcb543287ce10f5e9e7f8de4157b3c170100000000000000000000000004a9d53236ac03a95ba93dff306b12011967a846000000000000000000000000b5f79e70759ca3734c2b3ebbdf9458831c0bb601000000000000000000000000d26577d6bc29660e1357ea3cc0a313cd540aa1dc000000000000000000000000d41f0b53687947a6b20f6d7e1d08fe5800e2562c000000000000000000000000db61978d5df8bc79fa7965c52f45179bec9730ff000000000000000000000000309f1bc8a6318ac0963beac32de02abcf264a3a2000000000000000000000000e1535baca9593d4b2d1c9083a616e23f1f1fd5140000000000000000000000003d800647fe576d82d6a0f32df78eec09cbac85ce0000000000000000000000000a643f60b068f7f6d68508eee524a027468d31dd0000000000000000000000009fbe8599d79acbfb40a83bd3d33620db2f701e0c00000000000000000000000042a5ef45a045ab091e4e575e96ed28e439ae02d8000000000000000000000000f86263404da9c47a68a076041355b988edbb959a000000000000000000000000b99635d6f4e935b25c7c8092613be9da797cf1ca000000000000000000000000311caf5ce308516154ee47a926531b0c56e7c0b900000000000000000000000077e018bf4b1c1ba9872d43a9d8c95ff8081c402e000000000000000000000000adff418cf08a121bc5cf15bdab2801d8416d5dcc000000000000000000000000329b3967cc086d9a7e47299b16ba1d2c045ad9a30000000000000000000000002eee37b11e6a3ff286f04d77bca519459500ea5f0000000000000000000000000806fcc3b9ff04425159c13a4215b21469a084f5000000000000000000000000075890e2fbd35b95cf47df8bd978999d157554e000000000000000000000000013c1861d97bdb852891516cad4ec806d0e6e321b000000000000000000000000375ea660373fac749e03cff731ed380a10ea4bb20000000000000000000000001cbe4b4252e8afdcfeea7b12ad95d7090860dfaf000000000000000000000000342e42b53f205f470f7dbcf3ed1278e893c1b273000000000000000000000000668f37fede8b9f2e66e98f6b3b20061b444d9c5400000000000000000000000075b867e833b04d47d2b63204a2746e378a9d6b65000000000000000000000000f4f0dc0aff0f03435760246ded24db69ed3cfb960000000000000000000000007507c9ee7fc92d164cc1c02cdd2a3f0f4079722c00000000000000000000000030226f2a0881cfcfe06bbcc770bdf499d4af92ad000000000000000000000000d589d97844a0cb94300e72180363696be29c1399000000000000000000000000baf15ede72121a032eb38137b797c5e0fa27d0d100000000000000000000000022818f87e9d07d007e8967811e2e3b225756567300000000000000000000000000e063d058d8bf815da697e07097752afa997e71000000000000000000000000600b9677f189cb9ef2f8fe3171e25540fcf34e22000000000000000000000000075120d076dd8e47067633887b91510b4a1444f50000000000000000000000009982ca38e0257aeb40c6c2de28acdc45511ddddf000000000000000000000000ead990edcb0ab53188e850d4f8679e27b21cd5110000000000000000000000005c69aef59d7cc892c5e47764ef4024dfd52c3b6c000000000000000000000000899624126624a645d93a3724553893cafce06a660000000000000000000000001f72007138690934cde217c95c550a8bcb13cccf000000000000000000000000388d0acb9284207602c842efb19a36c0b4635e29000000000000000000000000fa08f0a53251356ecac47ffc32444c20ff11ab9200000000000000000000000037de3e915528e533135a806bea22a11331e229ae000000000000000000000000c58258be9fb1594e2d4f0910da21a61a717a57040000000000000000000000007f020b7f99eec3689309c917c1cfb0a21530f1ab0000000000000000000000002440bffbc217a1ac736a85ba5eb44282b92acede0000000000000000000000008b33f76d5226f994718bcdb02593a518725d85650000000000000000000000005b6eace4229dd1dde6c3b7ac2a8372fa9be5ea870000000000000000000000004f7828bf49685c416d2f1523684ca1d96391e8de0000000000000000000000000d5e00266ac965cb486e1685156ea37bd61649e5000000000000000000000000188d2b33a67ce2445157ea540314c9cbd4e3fd7c000000000000000000000000c005800bda365aab99abf42e7e2e8a782855b705000000000000000000000000dde0612a5c8de87df27988fb0b69d7c173e5d88a0000000000000000000000004e847e67e11faeaef49ec42e451a13dcc0aad7a8000000000000000000000000ccfaa5cdbc265199aae588bb08a8b0e61e61b29b000000000000000000000000fdbb0e84340d17d5da390ea2325cce477b29218500000000000000000000000083926eb6f4c829970e7793b42da3347c784f6cba000000000000000000000000d5fddd924903db70f01952e6fb356a5186c65649000000000000000000000000d2bfaa9537a26d4fc2a5b4282a625e1aaffa494b000000000000000000000000b4cad1c293491f340bb206d03c25caffa7a801080000000000000000000000004473dfae0064116588a15c5759d60da0b62a88360000000000000000000000001f41f702ff5e6b397ef2bf4eccec790bc48d6e1800000000000000000000000020654acfb211d13ef7afc18e0cb11d74e9ead01c000000000000000000000000d0739459c5945bbedc7669bcb38c92cce9afa8de0000000000000000000000003eb8cc890223b82b16a110f87a9669c8bc401ceb0000000000000000000000006969480d52c7a8dd3fdf5b3f9742750f9f229fe1000000000000000000000000f802ec5a8172c7ca8255d3e23ad5cf0fc9bab93c000000000000000000000000be2b77aa2e86130541febed8521ddac791a018a4000000000000000000000000f726a54d9e3fff9dfa5837a891d24a4d3f5f723c00000000000000000000000087edc5758b40b5b06aeb22ba72357c9103e9ad2400000000000000000000000021bca832ce1e3dff27f163f4e714f3b4cf6adfe800000000000000000000000018edf91933ac7d1b22b9895062b4529cc259ddf70000000000000000000000004675d01fa3b1f483f04c364b6f9e2c2696ec6c6f000000000000000000000000820d53c86dbe7fa68e0e416ea27667fc3f4e0cea000000000000000000000000c420a1f5c5acb57ccdada2bb66db038395fc3a5e0000000000000000000000008dd6f3a1ff485f5f5f35aa6add1504a12fb9c02b000000000000000000000000afed93d81473f2b75b74f3a9777a5edd29bbe3a5000000000000000000000000662861d0b4263d296198386e7c67aa505bfe994b0000000000000000000000002685f62636dadef7256697870cd30faa011bb2ae000000000000000000000000eade1f5bf8a327ec8ad39981a324c8999a268bae000000000000000000000000e6216b6afb96c770f252b2cf704343f35cefbe4e0000000000000000000000005a395ae92f10f082380a6254e5aa904cf60b5be20000000000000000000000008c6309ccd5a0c57588ac0a6a31cfe6fcbc6fa009000000000000000000000000714b42f9d81f8edde9e116099605987607860e64000000000000000000000000a80786f35a7119dff0c1b35cfefd896e6629b02b00000000000000000000000079190bb5b76100ec0819cf8649f3ef3a9ac355bc0000000000000000000000006d3796f653418e89e4981085038e0face1d9fadd000000000000000000000000ab9671b7991e82788d03eb89946b1e3ccc5532af000000000000000000000000da57c7852b3dd2e98e90b7f15ddb069fe08b90fc0000000000000000000000004f9cb6a36e77e0fc952270c229ec96f80227c5e90000000000000000000000001bfc74841fe9ec54ee4013458c98f6907f17e31d00000000000000000000000038635f1fe7b99550a5558ef7f724306ca32c47c7000000000000000000000000737827d92492b8f570399966f7a0535907f4e444000000000000000000000000445fdbc220d4fba472e775150e586c216507a5c60000000000000000000000004f05d2fab42d82a12d4d03bc3151b57a4ac0477a0000000000000000000000004b28ef9232bdd5ca684b761962cad3fa85e73aec00000000000000000000000097456c9b31420f34026972c25b8765bf51f105c6000000000000000000000000073cca7d486f3e776009ce7a63c55b2d1442b789000000000000000000000000070e3175e3972fd0a855415ad44d26dc431da3c6000000000000000000000000e9e768a9ebdbbb599ee92ea820c09fc745934b09000000000000000000000000bbe94a5cfcf3c83a399f7d10d4fc94448f034f32000000000000000000000000971a8115a573f9ccf10f9147c835a10698fba57a000000000000000000000000589a05518fe93f127bbacbd4a186706f821f65c80000000000000000000000000c1f076f34119d8f184c89b72fb480e6dfc4773f00000000000000000000000086bd1e313ea2c4628ec65a57cf1bef654f943682000000000000000000000000e0d76c92ff46c474d1dc63c90ff6f2ec313626d900000000000000000000000080038953ce1cdfce7561abb73216de83f8baaef0000000000000000000000000b15f04298d7c61c23bad271e8f79f9db4573adf10000000000000000000000001591c783efb2bf91b348b6b31f2b04de1442836c0000000000000000000000001a9f0972d99244ab96fcc30f52ae7959e49627890000000000000000000000000f8d8e26f88d828d83c4d416eca051c91f969c960000000000000000000000007b887b64cd512fed8926d16b81f0c1977d084aa2000000000000000000000000ff15066bfcc84e9d00e7a105f278431a5fab9aca0000000000000000000000009df471084bcf2cb668a83dfd7b285bc03ea7785e000000000000000000000000019b5a49faa53a82e4e7c9aa0ffc5fd7d64ed0280000000000000000000000005932a689e340177da130b9c4e8cfcb3787de91820000000000000000000000001ceb9e682759dfc9abddd94b84524c2a3d5696ae00000000000000000000000034663af357ffbe89ad130dbb076d320f9db2bda6000000000000000000000000aa66c242c49d0981af4376d6a6c7b7ec55f92d260000000000000000000000009d78b12d0d41671c101e8c4a84ee9748c528a8220000000000000000000000006e5cc665a562d6f593d596e5cb3b98acc0bfc980000000000000000000000000bb050500f22a3b13e3fa8f0f0cdba5e41017d37a0000000000000000000000007d818a7ed38fd631db061b2bfc3dec6b82895458000000000000000000000000f6a829673233d04719f6670766775484438260590000000000000000000000006c043a885402f7cb32dcdf89df8de436625f8e8f000000000000000000000000c40a08c9e23ed198a44b2141d9eddf55220744f0000000000000000000000000e5853ab7817dd9c5c112cc73705a864370ed40c2000000000000000000000000cb71798ab3f04767743d0f0651845478791cd6140000000000000000000000004d1394d67572cbbde5001d496b32caccc3d83a26

Deployed Bytecode

0x6080604052600436106102975760003560e01c80637571336a1161015a578063c24a7a8c116100c1578063dd62ed3e1161007a578063dd62ed3e146109e9578063e01af92c14610a26578063e2f4560514610a4f578063e8078d9414610a7a578063f2fde38b14610a91578063f8b45b0514610aba5761029e565b8063c24a7a8c146108ed578063c3f70b5214610916578063cb96372814610941578063d46980161461096a578063d7d1d10e14610995578063d85ba063146109be5761029e565b8063a457c2d711610113578063a457c2d7146107cb578063a9059cbb14610808578063afa4f3b214610845578063bbc0c7421461086e578063c024666814610899578063c04a5414146108c25761029e565b80637571336a146106df57806375f0a87414610708578063860a32ec146107335780638a8c523c1461075e5780638da5cb5b1461077557806395d89b41146107a05761029e565b806339509351116101fe5780636a486a8e116101b75780636a486a8e146105f55780636ddd17131461062057806370a082311461064b578063715018a61461068857806372ac24861461069f578063751039fc146106c85761029e565b806339509351146104d557806342966c681461051257806349bd5a5e1461053b5780634fbee193146105665780635d098b38146105a357806367243482146105cc5761029e565b806318160ddd1161025057806318160ddd146103b157806318d9ceae146103dc57806323b872dd1461041957806327c8f83514610456578063296f0a0c14610481578063313ce567146104aa5761029e565b806306fdde03146102a3578063095ea7b3146102ce5780630d075d9c1461030b5780630f683e9014610334578063155ca7c11461035d5780631694505e146103865761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610ae5565b6040516102c591906140f9565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906141b9565b610b77565b6040516103029190614214565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d919061422f565b610b9a565b005b34801561034057600080fd5b5061035b6004803603810190610356919061422f565b610c3a565b005b34801561036957600080fd5b50610384600480360381019061037f9190614313565b610ce3565b005b34801561039257600080fd5b5061039b610e05565b6040516103a891906143d2565b60405180910390f35b3480156103bd57600080fd5b506103c6610e29565b6040516103d391906143fc565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190614417565b610e33565b6040516104109190614214565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190614444565b610e89565b60405161044d9190614214565b60405180910390f35b34801561046257600080fd5b5061046b610eb8565b60405161047891906144a6565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a39190614417565b610ebe565b005b3480156104b657600080fd5b506104bf61101d565b6040516104cc91906144dd565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f791906141b9565b611026565b6040516105099190614214565b60405180910390f35b34801561051e57600080fd5b50610539600480360381019061053491906144f8565b61105d565b005b34801561054757600080fd5b5061055061106a565b60405161055d91906144a6565b60405180910390f35b34801561057257600080fd5b5061058d60048036038101906105889190614417565b611090565b60405161059a9190614214565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190614417565b6110e6565b005b3480156105d857600080fd5b506105f360048036038101906105ee919061457b565b611245565b005b34801561060157600080fd5b5061060a611421565b60405161061791906143fc565b60405180910390f35b34801561062c57600080fd5b50610635611427565b6040516106429190614214565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190614417565b61143a565b60405161067f91906143fc565b60405180910390f35b34801561069457600080fd5b5061069d611482565b005b3480156106ab57600080fd5b506106c660048036038101906106c19190614417565b611496565b005b3480156106d457600080fd5b506106dd6115f5565b005b3480156106eb57600080fd5b50610706600480360381019061070191906145fc565b611628565b005b34801561071457600080fd5b5061071d6116d9565b60405161072a91906144a6565b60405180910390f35b34801561073f57600080fd5b506107486116ff565b6040516107559190614214565b60405180910390f35b34801561076a57600080fd5b50610773611712565b005b34801561078157600080fd5b5061078a6117a2565b60405161079791906144a6565b60405180910390f35b3480156107ac57600080fd5b506107b56117cc565b6040516107c291906140f9565b60405180910390f35b3480156107d757600080fd5b506107f260048036038101906107ed91906141b9565b61185e565b6040516107ff9190614214565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a91906141b9565b6118d5565b60405161083c9190614214565b60405180910390f35b34801561085157600080fd5b5061086c600480360381019061086791906144f8565b6118f8565b005b34801561087a57600080fd5b506108836119d1565b6040516108909190614214565b60405180910390f35b3480156108a557600080fd5b506108c060048036038101906108bb91906145fc565b6119e4565b005b3480156108ce57600080fd5b506108d7611a95565b6040516108e491906144a6565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f919061463c565b611abb565b005b34801561092257600080fd5b5061092b611b9b565b60405161093891906143fc565b60405180910390f35b34801561094d57600080fd5b5061096860048036038101906109639190614417565b611ba1565b005b34801561097657600080fd5b5061097f611e0e565b60405161098c91906144a6565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190614313565b611e34565b005b3480156109ca57600080fd5b506109d3611f56565b6040516109e091906143fc565b60405180910390f35b3480156109f557600080fd5b50610a106004803603810190610a0b919061467c565b611f5c565b604051610a1d91906143fc565b60405180910390f35b348015610a3257600080fd5b50610a4d6004803603810190610a4891906146bc565b611fe3565b005b348015610a5b57600080fd5b50610a64612008565b604051610a7191906143fc565b60405180910390f35b348015610a8657600080fd5b50610a8f61200e565b005b348015610a9d57600080fd5b50610ab86004803603810190610ab39190614417565b612484565b005b348015610ac657600080fd5b50610acf612507565b604051610adc91906143fc565b60405180910390f35b606060038054610af490614718565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2090614718565b8015610b6d5780601f10610b4257610100808354040283529160200191610b6d565b820191906000526020600020905b815481529060010190602001808311610b5057829003601f168201915b5050505050905090565b600080610b8261250d565b9050610b8f818585612515565b600191505092915050565b610ba26126de565b61012c818385610bb29190614778565b610bbc9190614778565b1115610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf49061481e565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e54610c259190614778565b610c2f9190614778565b600d81905550505050565b610c426126de565b61012c818385610c529190614778565b610c5c9190614778565b1115610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c949061481e565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254610cc59190614778565b610ccf9190614778565b601181905550601154601881905550505050565b610ceb6126de565b60005b83839050811015610dff578160196000868685818110610d1157610d1061483e565b5b9050602002016020810190610d269190614417565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110610d8a57610d8961483e565b5b9050602002016020810190610d9f9190614417565b73ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df783604051610de49190614214565b60405180910390a28080610df79061486d565b915050610cee565b50505050565b7f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789181565b6000600254905090565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080610e9461250d565b9050610ea185828561275c565b610eac8585856127e8565b60019150509392505050565b61dead81565b610ec66126de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90614901565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a35050565b60006012905090565b60008061103161250d565b90506110528185856110438589611f5c565b61104d9190614778565b612515565b600191505092915050565b6110673382613453565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110ee6126de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490614901565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a35050565b61124d6126de565b60fa848490501115611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b9061496d565b60405180910390fd5b8181905084849050146112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d3906149d9565b60405180910390fd5b6000805b85859050811015611325578383828181106112fe576112fd61483e565b5b90506020020135826113109190614778565b9150808061131d9061486d565b9150506112e0565b50806113303361143a565b1015611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890614a45565b60405180910390fd5b60005b858590508110156113dd576113ca338787848181106113965761139561483e565b5b90506020020160208101906113ab9190614417565b8686858181106113be576113bd61483e565b5b90506020020135613620565b80806113d59061486d565b915050611374565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba954648585905082604051611412929190614a65565b60405180910390a15050505050565b60115481565b600960159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61148a6126de565b6114946000613896565b565b61149e6126de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150490614901565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a35050565b6115fd6126de565b6000600960166101000a81548160ff021916908315150217905550611620610e29565b600b81905550565b6116306126de565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92826040516116cd9190614214565b60405180910390a25050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960169054906101000a900460ff1681565b61171a6126de565b600960149054906101000a900460ff161561176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176190614ada565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055506001600960156101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546117db90614718565b80601f016020809104026020016040519081016040528092919081815260200182805461180790614718565b80156118545780601f1061182957610100808354040283529160200191611854565b820191906000526020600020905b81548152906001019060200180831161183757829003601f168201915b5050505050905090565b60008061186961250d565b905060006118778286611f5c565b9050838110156118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390614b6c565b60405180910390fd5b6118c98286868403612515565b60019250505092915050565b6000806118e061250d565b90506118ed8185856127e8565b600191505092915050565b6119006126de565b620186a0600161190e610e29565b6119189190614b8c565b6119229190614bfd565b811015611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b90614ca0565b60405180910390fd5b6103e86005611971610e29565b61197b9190614b8c565b6119859190614bfd565b8111156119c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119be90614d32565b60405180910390fd5b80600c8190555050565b600960149054906101000a900460ff1681565b6119ec6126de565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a899190614214565b60405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ac36126de565b6103e86005611ad0610e29565b611ada9190614b8c565b611ae49190614bfd565b821015611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d90614dc4565b60405180910390fd5b6103e86005611b33610e29565b611b3d9190614b8c565b611b479190614bfd565b811015611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8090614e56565b60405180910390fd5b81600a8190555080600b819055505050565b600a5481565b611ba96126de565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4f573373ffffffffffffffffffffffffffffffffffffffff1647604051611c0290614ea7565b60006040518083038185875af1925050503d8060008114611c3f576040519150601f19603f3d011682016040523d82523d6000602084013e611c44565b606091505b505080915050611e0a565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c8a91906144a6565b602060405180830381865afa158015611ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccb9190614ed1565b11611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0290614f4a565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d4691906144a6565b602060405180830381865afa158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d879190614ed1565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611dc4929190614f6a565b6020604051808303816000875af1158015611de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e079190614fa8565b50505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e3c6126de565b60005b83839050811015611f505781601a6000868685818110611e6257611e6161483e565b5b9050602002016020810190611e779190614417565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110611edb57611eda61483e565b5b9050602002016020810190611ef09190614417565b73ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9283604051611f359190614214565b60405180910390a28080611f489061486d565b915050611e3f565b50505050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611feb6126de565b80600960156101000a81548160ff02191690831515021790555050565b600c5481565b6120166126de565b600960149054906101000a900460ff1615612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90614ada565b60405180910390fd5b7f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f59190614fea565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a09190614fea565b6040518363ffffffff1660e01b81526004016121bd929190615017565b6020604051808303816000875af11580156121dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122009190614fea565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061228d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612515565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d78917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161232a929190614f6a565b6020604051808303816000875af1158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190614fa8565b5061239b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161395c565b6123c8600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611628565b7f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789173ffffffffffffffffffffffffffffffffffffffff1663f305d719473061240f3061143a565b60008061241a6117a2565b426040518863ffffffff1660e01b815260040161243c9695949392919061507b565b60606040518083038185885af115801561245a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061247f91906150dc565b505050565b61248c6126de565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f2906151a1565b60405180910390fd5b61250481613896565b50565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257b90615233565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea906152c5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126d191906143fc565b60405180910390a3505050565b6126e661250d565b73ffffffffffffffffffffffffffffffffffffffff166127046117a2565b73ffffffffffffffffffffffffffffffffffffffff161461275a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275190615331565b60405180910390fd5b565b60006127688484611f5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146127e257818110156127d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cb9061539d565b60405180910390fd5b6127e18484848403612515565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284e9061542f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bd906154c1565b60405180910390fd5b600081036128df576128da83836000613620565b61344e565b6128e76117a2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561295557506129256117a2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561298e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129c8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129e15750600960179054906101000a900460ff16155b15612f6b57600960149054906101000a900460ff16612adb57601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a9b5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad19061552d565b60405180910390fd5b5b600960169054906101000a900460ff168015612b445750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612c8257600b5481612b568461143a565b612b609190614778565b1115612ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9890615599565b60405180910390fd5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c425750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7890615599565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d255750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612dcc57600a54811115612d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d669061562b565b60405180910390fd5b600b54612d7b8361143a565b82612d869190614778565b1115612dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbe90615697565b60405180910390fd5b612f6a565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e6f5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ebe57600a54811115612eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb090615729565b60405180910390fd5b612f69565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f6857600b54612f1b8361143a565b82612f269190614778565b1115612f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5e90615697565b60405180910390fd5b5b5b5b5b6000612f763061143a565b90506000600c548210159050808015612f9b5750600960159054906101000a900460ff165b8015612fb45750600960179054906101000a900460ff16155b801561300a5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130605750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130b65750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130fa576001600960176101000a81548160ff0219169083151502179055506130de6139fd565b6000600960176101000a81548160ff0219169083151502179055505b6000600960179054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131b05750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131ba57600090505b6000811561343557601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561321d57506000601154115b156132eb5761324b61271061323d60115488613ce490919063ffffffff16565b613cfa90919063ffffffff16565b90506011546014548261325e9190614b8c565b6132689190614bfd565b601760008282546132799190614778565b92505081905550601154601254826132919190614b8c565b61329b9190614bfd565b601560008282546132ac9190614778565b92505081905550601154601354826132c49190614b8c565b6132ce9190614bfd565b601660008282546132df9190614778565b92505081905550613411565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561334657506000600d54115b1561341057613374612710613366600d5488613ce490919063ffffffff16565b613cfa90919063ffffffff16565b9050600d54601054826133879190614b8c565b6133919190614bfd565b601760008282546133a29190614778565b92505081905550600d54600e54826133ba9190614b8c565b6133c49190614bfd565b601560008282546133d59190614778565b92505081905550600d54600f54826133ed9190614b8c565b6133f79190614bfd565b601660008282546134089190614778565b925050819055505b5b600081111561342657613425873083613620565b5b80856134329190615749565b94505b613440878787613620565b601854601181905550505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036134c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b9906157ef565b60405180910390fd5b6134ce82600083613d10565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354b90615881565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161360791906143fc565b60405180910390a361361b83600084613d15565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361368f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136869061542f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f5906154c1565b60405180910390fd5b613709838383613d10565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561378f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378690615913565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161387d91906143fc565b60405180910390a3613890848484613d15565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613a083061143a565b90506000601654601554601754613a1f9190614778565b613a299190614778565b9050600080831480613a3b5750600082145b15613a4857505050613ce2565b600a600c54613a579190614b8c565b831115613a7057600a600c54613a6d9190614b8c565b92505b600060028360175486613a839190614b8c565b613a8d9190614bfd565b613a979190614bfd565b90506000613aae8286613d1a90919063ffffffff16565b90506000479050613abe82613d30565b6000613ad38247613d1a90919063ffffffff16565b90506000613afe87613af060155485613ce490919063ffffffff16565b613cfa90919063ffffffff16565b90506000613b2988613b1b60165486613ce490919063ffffffff16565b613cfa90919063ffffffff16565b90506000818385613b3a9190615749565b613b449190615749565b9050600060178190555060006015819055506000601681905550600087118015613b6e5750600081115b15613bbb57613b7d8782613f6d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601754604051613bb293929190615933565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613c0190614ea7565b60006040518083038185875af1925050503d8060008114613c3e576040519150601f19603f3d011682016040523d82523d6000602084013e613c43565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c8f90614ea7565b60006040518083038185875af1925050503d8060008114613ccc576040519150601f19603f3d011682016040523d82523d6000602084013e613cd1565b606091505b505080985050505050505050505050505b565b60008183613cf29190614b8c565b905092915050565b60008183613d089190614bfd565b905092915050565b505050565b505050565b60008183613d289190615749565b905092915050565b6000600267ffffffffffffffff811115613d4d57613d4c61596a565b5b604051908082528060200260200182016040528015613d7b5781602001602082028036833780820191505090505b5090503081600081518110613d9357613d9261483e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5c9190614fea565b81600181518110613e7057613e6f61483e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ed5307f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789184612515565b7f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789173ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f37959493929190615a57565b600060405180830381600087803b158015613f5157600080fd5b505af1158015613f65573d6000803e3d6000fd5b505050505050565b613f98307f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789184612515565b7f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789173ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161401f9695949392919061507b565b60606040518083038185885af115801561403d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061406291906150dc565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140a3578082015181840152602081019050614088565b60008484015250505050565b6000601f19601f8301169050919050565b60006140cb82614069565b6140d58185614074565b93506140e5818560208601614085565b6140ee816140af565b840191505092915050565b6000602082019050818103600083015261411381846140c0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061415082614125565b9050919050565b61416081614145565b811461416b57600080fd5b50565b60008135905061417d81614157565b92915050565b6000819050919050565b61419681614183565b81146141a157600080fd5b50565b6000813590506141b38161418d565b92915050565b600080604083850312156141d0576141cf61411b565b5b60006141de8582860161416e565b92505060206141ef858286016141a4565b9150509250929050565b60008115159050919050565b61420e816141f9565b82525050565b60006020820190506142296000830184614205565b92915050565b6000806000606084860312156142485761424761411b565b5b6000614256868287016141a4565b9350506020614267868287016141a4565b9250506040614278868287016141a4565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126142a7576142a6614282565b5b8235905067ffffffffffffffff8111156142c4576142c3614287565b5b6020830191508360208202830111156142e0576142df61428c565b5b9250929050565b6142f0816141f9565b81146142fb57600080fd5b50565b60008135905061430d816142e7565b92915050565b60008060006040848603121561432c5761432b61411b565b5b600084013567ffffffffffffffff81111561434a57614349614120565b5b61435686828701614291565b93509350506020614369868287016142fe565b9150509250925092565b6000819050919050565b600061439861439361438e84614125565b614373565b614125565b9050919050565b60006143aa8261437d565b9050919050565b60006143bc8261439f565b9050919050565b6143cc816143b1565b82525050565b60006020820190506143e760008301846143c3565b92915050565b6143f681614183565b82525050565b600060208201905061441160008301846143ed565b92915050565b60006020828403121561442d5761442c61411b565b5b600061443b8482850161416e565b91505092915050565b60008060006060848603121561445d5761445c61411b565b5b600061446b8682870161416e565b935050602061447c8682870161416e565b925050604061448d868287016141a4565b9150509250925092565b6144a081614145565b82525050565b60006020820190506144bb6000830184614497565b92915050565b600060ff82169050919050565b6144d7816144c1565b82525050565b60006020820190506144f260008301846144ce565b92915050565b60006020828403121561450e5761450d61411b565b5b600061451c848285016141a4565b91505092915050565b60008083601f84011261453b5761453a614282565b5b8235905067ffffffffffffffff81111561455857614557614287565b5b6020830191508360208202830111156145745761457361428c565b5b9250929050565b600080600080604085870312156145955761459461411b565b5b600085013567ffffffffffffffff8111156145b3576145b2614120565b5b6145bf87828801614291565b9450945050602085013567ffffffffffffffff8111156145e2576145e1614120565b5b6145ee87828801614525565b925092505092959194509250565b600080604083850312156146135761461261411b565b5b60006146218582860161416e565b9250506020614632858286016142fe565b9150509250929050565b600080604083850312156146535761465261411b565b5b6000614661858286016141a4565b9250506020614672858286016141a4565b9150509250929050565b600080604083850312156146935761469261411b565b5b60006146a18582860161416e565b92505060206146b28582860161416e565b9150509250929050565b6000602082840312156146d2576146d161411b565b5b60006146e0848285016142fe565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061473057607f821691505b602082108103614743576147426146e9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061478382614183565b915061478e83614183565b92508282019050808211156147a6576147a5614749565b5b92915050565b7f45524332303a204d757374206b6565702066656573206174203325206f72206c60008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614808602383614074565b9150614813826147ac565b604082019050919050565b60006020820190508181036000830152614837816147fb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061487882614183565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148aa576148a9614749565b5b600182019050919050565b7f45524332303a2041646472657373203000000000000000000000000000000000600082015250565b60006148eb601083614074565b91506148f6826148b5565b602082019050919050565b6000602082019050818103600083015261491a816148de565b9050919050565b7f4d6f7265207468616e203235302077616c6c6574730000000000000000000000600082015250565b6000614957601583614074565b915061496282614921565b602082019050919050565b600060208201905081810360008301526149868161494a565b9050919050565b7f4c697374206c656e677468206d69736d61746368000000000000000000000000600082015250565b60006149c3601483614074565b91506149ce8261498d565b602082019050919050565b600060208201905081810360008301526149f2816149b6565b9050919050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000614a2f601583614074565b9150614a3a826149f9565b602082019050919050565b60006020820190508181036000830152614a5e81614a22565b9050919050565b6000604082019050614a7a60008301856143ed565b614a8760208301846143ed565b9392505050565b7f54726164696e6720616c7265616479206163746976652e000000000000000000600082015250565b6000614ac4601783614074565b9150614acf82614a8e565b602082019050919050565b60006020820190508181036000830152614af381614ab7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614b56602583614074565b9150614b6182614afa565b604082019050919050565b60006020820190508181036000830152614b8581614b49565b9050919050565b6000614b9782614183565b9150614ba283614183565b9250828202614bb081614183565b91508282048414831517614bc757614bc6614749565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c0882614183565b9150614c1383614183565b925082614c2357614c22614bce565b5b828204905092915050565b7f45524332303a205377617020616d6f756e742063616e6e6f74206265206c6f7760008201527f6572207468616e20302e3030312520746f74616c20737570706c792e00000000602082015250565b6000614c8a603c83614074565b9150614c9582614c2e565b604082019050919050565b60006020820190508181036000830152614cb981614c7d565b9050919050565b7f45524332303a205377617020616d6f756e742063616e6e6f742062652068696760008201527f686572207468616e20302e352520746f74616c20737570706c792e0000000000602082015250565b6000614d1c603b83614074565b9150614d2782614cc0565b604082019050919050565b60006020820190508181036000830152614d4b81614d0f565b9050919050565b7f45524332303a2043616e6e6f7420736574206d617854786e206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b6000614dae602883614074565b9150614db982614d52565b604082019050919050565b60006020820190508181036000830152614ddd81614da1565b9050919050565b7f45524332303a2043616e6e6f7420736574206d617857616c6c6574206c6f776560008201527f72207468616e20302e3525000000000000000000000000000000000000000000602082015250565b6000614e40602b83614074565b9150614e4b82614de4565b604082019050919050565b60006020820190508181036000830152614e6f81614e33565b9050919050565b600081905092915050565b50565b6000614e91600083614e76565b9150614e9c82614e81565b600082019050919050565b6000614eb282614e84565b9150819050919050565b600081519050614ecb8161418d565b92915050565b600060208284031215614ee757614ee661411b565b5b6000614ef584828501614ebc565b91505092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614f34600983614074565b9150614f3f82614efe565b602082019050919050565b60006020820190508181036000830152614f6381614f27565b9050919050565b6000604082019050614f7f6000830185614497565b614f8c60208301846143ed565b9392505050565b600081519050614fa2816142e7565b92915050565b600060208284031215614fbe57614fbd61411b565b5b6000614fcc84828501614f93565b91505092915050565b600081519050614fe481614157565b92915050565b60006020828403121561500057614fff61411b565b5b600061500e84828501614fd5565b91505092915050565b600060408201905061502c6000830185614497565b6150396020830184614497565b9392505050565b6000819050919050565b600061506561506061505b84615040565b614373565b614183565b9050919050565b6150758161504a565b82525050565b600060c0820190506150906000830189614497565b61509d60208301886143ed565b6150aa604083018761506c565b6150b7606083018661506c565b6150c46080830185614497565b6150d160a08301846143ed565b979650505050505050565b6000806000606084860312156150f5576150f461411b565b5b600061510386828701614ebc565b935050602061511486828701614ebc565b925050604061512586828701614ebc565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061518b602683614074565b91506151968261512f565b604082019050919050565b600060208201905081810360008301526151ba8161517e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061521d602483614074565b9150615228826151c1565b604082019050919050565b6000602082019050818103600083015261524c81615210565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152af602283614074565b91506152ba82615253565b604082019050919050565b600060208201905081810360008301526152de816152a2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061531b602083614074565b9150615326826152e5565b602082019050919050565b6000602082019050818103600083015261534a8161530e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000615387601d83614074565b915061539282615351565b602082019050919050565b600060208201905081810360008301526153b68161537a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615419602583614074565b9150615424826153bd565b604082019050919050565b600060208201905081810360008301526154488161540c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006154ab602383614074565b91506154b68261544f565b604082019050919050565b600060208201905081810360008301526154da8161549e565b9050919050565b7f45524332303a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000615517601d83614074565b9150615522826154e1565b602082019050919050565b600060208201905081810360008301526155468161550a565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000615583600683614074565b915061558e8261554d565b602082019050919050565b600060208201905081810360008301526155b281615576565b9050919050565b7f45524332303a20427579207472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e2e00000000000000000000602082015250565b6000615615603683614074565b9150615620826155b9565b604082019050919050565b6000602082019050818103600083015261564481615608565b9050919050565b7f45524332303a204d61782077616c6c6574206578636565646564000000000000600082015250565b6000615681601a83614074565b915061568c8261564b565b602082019050919050565b600060208201905081810360008301526156b081615674565b9050919050565b7f45524332303a2053656c6c207472616e7366657220616d6f756e74206578636560008201527f65647320746865206d61785472616e73616374696f6e2e000000000000000000602082015250565b6000615713603783614074565b915061571e826156b7565b604082019050919050565b6000602082019050818103600083015261574281615706565b9050919050565b600061575482614183565b915061575f83614183565b925082820390508181111561577757615776614749565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006157d9602183614074565b91506157e48261577d565b604082019050919050565b60006020820190508181036000830152615808816157cc565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061586b602283614074565b91506158768261580f565b604082019050919050565b6000602082019050818103600083015261589a8161585e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006158fd602683614074565b9150615908826158a1565b604082019050919050565b6000602082019050818103600083015261592c816158f0565b9050919050565b600060608201905061594860008301866143ed565b61595560208301856143ed565b61596260408301846143ed565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159ce81614145565b82525050565b60006159e083836159c5565b60208301905092915050565b6000602082019050919050565b6000615a0482615999565b615a0e81856159a4565b9350615a19836159b5565b8060005b83811015615a4a578151615a3188826159d4565b9750615a3c836159ec565b925050600181019050615a1d565b5085935050505092915050565b600060a082019050615a6c60008301886143ed565b615a79602083018761506c565b8181036040830152615a8b81866159f9565b9050615a9a6060830185614497565b615aa760808301846143ed565b969550505050505056fea2646970667358221220a00394848120fa0ffab1d226388d08a0b293b1c8d1cb7d677f34905fccf5e06f64736f6c63430008110033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008b0000000000000000000000002f66ace812532a9508520ebec6afd08c32338022000000000000000000000000f392a92d8750d3f948033d04545ee85df289306a0000000000000000000000003f59dde6002b18163262e0ef593e67c7ecd754f70000000000000000000000002eb9a4741825b1bc563a96b274a1cad3a8806c57000000000000000000000000e1690dd272fe718db57af1f2863cbe72b4ba407b0000000000000000000000001d073998d6cfbc305d53a9e8df341ae775928b9b000000000000000000000000973fc894e8046e686502784ad7ca40f48be93c7e0000000000000000000000009fa4697fae641986e26d4a0c3961f9b96455c4a700000000000000000000000084601ad1eb0ce142b44e5a0e3adcd79351e41dde000000000000000000000000fceffddcb543287ce10f5e9e7f8de4157b3c170100000000000000000000000004a9d53236ac03a95ba93dff306b12011967a846000000000000000000000000b5f79e70759ca3734c2b3ebbdf9458831c0bb601000000000000000000000000d26577d6bc29660e1357ea3cc0a313cd540aa1dc000000000000000000000000d41f0b53687947a6b20f6d7e1d08fe5800e2562c000000000000000000000000db61978d5df8bc79fa7965c52f45179bec9730ff000000000000000000000000309f1bc8a6318ac0963beac32de02abcf264a3a2000000000000000000000000e1535baca9593d4b2d1c9083a616e23f1f1fd5140000000000000000000000003d800647fe576d82d6a0f32df78eec09cbac85ce0000000000000000000000000a643f60b068f7f6d68508eee524a027468d31dd0000000000000000000000009fbe8599d79acbfb40a83bd3d33620db2f701e0c00000000000000000000000042a5ef45a045ab091e4e575e96ed28e439ae02d8000000000000000000000000f86263404da9c47a68a076041355b988edbb959a000000000000000000000000b99635d6f4e935b25c7c8092613be9da797cf1ca000000000000000000000000311caf5ce308516154ee47a926531b0c56e7c0b900000000000000000000000077e018bf4b1c1ba9872d43a9d8c95ff8081c402e000000000000000000000000adff418cf08a121bc5cf15bdab2801d8416d5dcc000000000000000000000000329b3967cc086d9a7e47299b16ba1d2c045ad9a30000000000000000000000002eee37b11e6a3ff286f04d77bca519459500ea5f0000000000000000000000000806fcc3b9ff04425159c13a4215b21469a084f5000000000000000000000000075890e2fbd35b95cf47df8bd978999d157554e000000000000000000000000013c1861d97bdb852891516cad4ec806d0e6e321b000000000000000000000000375ea660373fac749e03cff731ed380a10ea4bb20000000000000000000000001cbe4b4252e8afdcfeea7b12ad95d7090860dfaf000000000000000000000000342e42b53f205f470f7dbcf3ed1278e893c1b273000000000000000000000000668f37fede8b9f2e66e98f6b3b20061b444d9c5400000000000000000000000075b867e833b04d47d2b63204a2746e378a9d6b65000000000000000000000000f4f0dc0aff0f03435760246ded24db69ed3cfb960000000000000000000000007507c9ee7fc92d164cc1c02cdd2a3f0f4079722c00000000000000000000000030226f2a0881cfcfe06bbcc770bdf499d4af92ad000000000000000000000000d589d97844a0cb94300e72180363696be29c1399000000000000000000000000baf15ede72121a032eb38137b797c5e0fa27d0d100000000000000000000000022818f87e9d07d007e8967811e2e3b225756567300000000000000000000000000e063d058d8bf815da697e07097752afa997e71000000000000000000000000600b9677f189cb9ef2f8fe3171e25540fcf34e22000000000000000000000000075120d076dd8e47067633887b91510b4a1444f50000000000000000000000009982ca38e0257aeb40c6c2de28acdc45511ddddf000000000000000000000000ead990edcb0ab53188e850d4f8679e27b21cd5110000000000000000000000005c69aef59d7cc892c5e47764ef4024dfd52c3b6c000000000000000000000000899624126624a645d93a3724553893cafce06a660000000000000000000000001f72007138690934cde217c95c550a8bcb13cccf000000000000000000000000388d0acb9284207602c842efb19a36c0b4635e29000000000000000000000000fa08f0a53251356ecac47ffc32444c20ff11ab9200000000000000000000000037de3e915528e533135a806bea22a11331e229ae000000000000000000000000c58258be9fb1594e2d4f0910da21a61a717a57040000000000000000000000007f020b7f99eec3689309c917c1cfb0a21530f1ab0000000000000000000000002440bffbc217a1ac736a85ba5eb44282b92acede0000000000000000000000008b33f76d5226f994718bcdb02593a518725d85650000000000000000000000005b6eace4229dd1dde6c3b7ac2a8372fa9be5ea870000000000000000000000004f7828bf49685c416d2f1523684ca1d96391e8de0000000000000000000000000d5e00266ac965cb486e1685156ea37bd61649e5000000000000000000000000188d2b33a67ce2445157ea540314c9cbd4e3fd7c000000000000000000000000c005800bda365aab99abf42e7e2e8a782855b705000000000000000000000000dde0612a5c8de87df27988fb0b69d7c173e5d88a0000000000000000000000004e847e67e11faeaef49ec42e451a13dcc0aad7a8000000000000000000000000ccfaa5cdbc265199aae588bb08a8b0e61e61b29b000000000000000000000000fdbb0e84340d17d5da390ea2325cce477b29218500000000000000000000000083926eb6f4c829970e7793b42da3347c784f6cba000000000000000000000000d5fddd924903db70f01952e6fb356a5186c65649000000000000000000000000d2bfaa9537a26d4fc2a5b4282a625e1aaffa494b000000000000000000000000b4cad1c293491f340bb206d03c25caffa7a801080000000000000000000000004473dfae0064116588a15c5759d60da0b62a88360000000000000000000000001f41f702ff5e6b397ef2bf4eccec790bc48d6e1800000000000000000000000020654acfb211d13ef7afc18e0cb11d74e9ead01c000000000000000000000000d0739459c5945bbedc7669bcb38c92cce9afa8de0000000000000000000000003eb8cc890223b82b16a110f87a9669c8bc401ceb0000000000000000000000006969480d52c7a8dd3fdf5b3f9742750f9f229fe1000000000000000000000000f802ec5a8172c7ca8255d3e23ad5cf0fc9bab93c000000000000000000000000be2b77aa2e86130541febed8521ddac791a018a4000000000000000000000000f726a54d9e3fff9dfa5837a891d24a4d3f5f723c00000000000000000000000087edc5758b40b5b06aeb22ba72357c9103e9ad2400000000000000000000000021bca832ce1e3dff27f163f4e714f3b4cf6adfe800000000000000000000000018edf91933ac7d1b22b9895062b4529cc259ddf70000000000000000000000004675d01fa3b1f483f04c364b6f9e2c2696ec6c6f000000000000000000000000820d53c86dbe7fa68e0e416ea27667fc3f4e0cea000000000000000000000000c420a1f5c5acb57ccdada2bb66db038395fc3a5e0000000000000000000000008dd6f3a1ff485f5f5f35aa6add1504a12fb9c02b000000000000000000000000afed93d81473f2b75b74f3a9777a5edd29bbe3a5000000000000000000000000662861d0b4263d296198386e7c67aa505bfe994b0000000000000000000000002685f62636dadef7256697870cd30faa011bb2ae000000000000000000000000eade1f5bf8a327ec8ad39981a324c8999a268bae000000000000000000000000e6216b6afb96c770f252b2cf704343f35cefbe4e0000000000000000000000005a395ae92f10f082380a6254e5aa904cf60b5be20000000000000000000000008c6309ccd5a0c57588ac0a6a31cfe6fcbc6fa009000000000000000000000000714b42f9d81f8edde9e116099605987607860e64000000000000000000000000a80786f35a7119dff0c1b35cfefd896e6629b02b00000000000000000000000079190bb5b76100ec0819cf8649f3ef3a9ac355bc0000000000000000000000006d3796f653418e89e4981085038e0face1d9fadd000000000000000000000000ab9671b7991e82788d03eb89946b1e3ccc5532af000000000000000000000000da57c7852b3dd2e98e90b7f15ddb069fe08b90fc0000000000000000000000004f9cb6a36e77e0fc952270c229ec96f80227c5e90000000000000000000000001bfc74841fe9ec54ee4013458c98f6907f17e31d00000000000000000000000038635f1fe7b99550a5558ef7f724306ca32c47c7000000000000000000000000737827d92492b8f570399966f7a0535907f4e444000000000000000000000000445fdbc220d4fba472e775150e586c216507a5c60000000000000000000000004f05d2fab42d82a12d4d03bc3151b57a4ac0477a0000000000000000000000004b28ef9232bdd5ca684b761962cad3fa85e73aec00000000000000000000000097456c9b31420f34026972c25b8765bf51f105c6000000000000000000000000073cca7d486f3e776009ce7a63c55b2d1442b789000000000000000000000000070e3175e3972fd0a855415ad44d26dc431da3c6000000000000000000000000e9e768a9ebdbbb599ee92ea820c09fc745934b09000000000000000000000000bbe94a5cfcf3c83a399f7d10d4fc94448f034f32000000000000000000000000971a8115a573f9ccf10f9147c835a10698fba57a000000000000000000000000589a05518fe93f127bbacbd4a186706f821f65c80000000000000000000000000c1f076f34119d8f184c89b72fb480e6dfc4773f00000000000000000000000086bd1e313ea2c4628ec65a57cf1bef654f943682000000000000000000000000e0d76c92ff46c474d1dc63c90ff6f2ec313626d900000000000000000000000080038953ce1cdfce7561abb73216de83f8baaef0000000000000000000000000b15f04298d7c61c23bad271e8f79f9db4573adf10000000000000000000000001591c783efb2bf91b348b6b31f2b04de1442836c0000000000000000000000001a9f0972d99244ab96fcc30f52ae7959e49627890000000000000000000000000f8d8e26f88d828d83c4d416eca051c91f969c960000000000000000000000007b887b64cd512fed8926d16b81f0c1977d084aa2000000000000000000000000ff15066bfcc84e9d00e7a105f278431a5fab9aca0000000000000000000000009df471084bcf2cb668a83dfd7b285bc03ea7785e000000000000000000000000019b5a49faa53a82e4e7c9aa0ffc5fd7d64ed0280000000000000000000000005932a689e340177da130b9c4e8cfcb3787de91820000000000000000000000001ceb9e682759dfc9abddd94b84524c2a3d5696ae00000000000000000000000034663af357ffbe89ad130dbb076d320f9db2bda6000000000000000000000000aa66c242c49d0981af4376d6a6c7b7ec55f92d260000000000000000000000009d78b12d0d41671c101e8c4a84ee9748c528a8220000000000000000000000006e5cc665a562d6f593d596e5cb3b98acc0bfc980000000000000000000000000bb050500f22a3b13e3fa8f0f0cdba5e41017d37a0000000000000000000000007d818a7ed38fd631db061b2bfc3dec6b82895458000000000000000000000000f6a829673233d04719f6670766775484438260590000000000000000000000006c043a885402f7cb32dcdf89df8de436625f8e8f000000000000000000000000c40a08c9e23ed198a44b2141d9eddf55220744f0000000000000000000000000e5853ab7817dd9c5c112cc73705a864370ed40c2000000000000000000000000cb71798ab3f04767743d0f0651845478791cd6140000000000000000000000004d1394d67572cbbde5001d496b32caccc3d83a26

-----Decoded View---------------
Arg [0] : _bretts (address[]): 0x2f66ACe812532A9508520ebeC6afD08c32338022,0xf392A92D8750D3f948033D04545eE85Df289306A,0x3f59DDe6002b18163262e0Ef593e67C7ecD754f7,0x2EB9a4741825b1BC563a96b274A1CAD3A8806C57,0xE1690DD272Fe718DB57AF1F2863CbE72B4ba407B,0x1d073998D6CfbC305d53A9E8Df341Ae775928B9b,0x973fc894e8046E686502784aD7Ca40f48BE93C7e,0x9fA4697FAe641986E26D4a0C3961f9B96455c4A7,0x84601ad1Eb0ce142b44e5A0e3aDCd79351e41DDE,0xFCeFfDDCB543287cE10f5E9E7f8de4157B3C1701,0x04A9D53236aC03a95BA93Dff306b12011967A846,0xB5F79e70759CA3734C2b3EbbDF9458831C0Bb601,0xD26577D6bC29660E1357eA3cC0a313Cd540aA1dc,0xd41f0B53687947a6B20F6D7e1D08FE5800e2562c,0xdb61978D5DF8bC79fa7965c52F45179beC9730ff,0x309f1Bc8A6318Ac0963BEac32dE02aBcF264A3a2,0xe1535BACA9593D4b2D1C9083A616e23F1f1Fd514,0x3D800647FE576d82D6a0f32Df78EeC09CbAc85Ce,0x0A643f60B068f7f6D68508EEe524A027468d31dD,0x9fbE8599D79ACBfb40A83Bd3d33620DB2f701e0C,0x42a5eF45A045ab091e4e575E96ED28E439aE02D8,0xf86263404da9c47A68a076041355b988EdBB959a,0xb99635D6f4E935b25c7c8092613BE9DA797Cf1cA,0x311CAF5cE308516154eE47A926531b0c56e7C0B9,0x77E018bf4b1c1bA9872d43A9D8C95ff8081C402E,0xAdFF418cF08a121BC5cF15bdAB2801d8416d5dcC,0x329B3967cC086d9a7E47299B16bA1d2C045Ad9A3,0x2EEE37b11E6a3Ff286f04d77BcA519459500eA5f,0x0806Fcc3B9ff04425159C13a4215B21469a084f5,0x075890e2FbD35b95CF47DF8bd978999d157554E0,0x13c1861d97bdB852891516CaD4eC806D0E6e321B,0x375eA660373FAC749E03cFF731eD380A10eA4bb2,0x1Cbe4B4252E8aFDCfeEA7B12AD95d7090860DfAF,0x342e42B53f205F470f7dBCF3eD1278E893C1b273,0x668F37feDE8B9f2e66e98f6b3b20061b444D9C54,0x75B867e833b04d47D2B63204a2746E378a9D6B65,0xF4f0dC0aFf0f03435760246dED24dB69ed3CFb96,0x7507c9EE7Fc92D164cC1C02cdD2a3F0f4079722C,0x30226f2A0881CFcfE06bbCc770bdF499D4Af92aD,0xD589d97844a0Cb94300e72180363696bE29C1399,0xBaf15edE72121A032eb38137b797C5e0FA27D0D1,0x22818f87E9d07D007E8967811E2e3B2257565673,0x00e063d058d8BF815DA697e07097752aFa997e71,0x600B9677f189cb9ef2F8Fe3171e25540FcF34E22,0x075120d076dd8e47067633887B91510b4a1444f5,0x9982Ca38E0257Aeb40C6C2de28ACdc45511DDDDf,0xeAD990eDcB0aB53188e850d4F8679e27b21Cd511,0x5c69aef59d7CC892C5e47764Ef4024Dfd52c3b6c,0x899624126624a645d93A3724553893CaFCE06A66,0x1F72007138690934CdE217c95C550A8bcb13CccF,0x388D0AcB9284207602C842efB19A36C0b4635e29,0xFA08F0a53251356eCAC47ffc32444c20Ff11aB92,0x37dE3e915528e533135A806bea22a11331e229Ae,0xc58258be9Fb1594e2d4F0910Da21A61A717A5704,0x7F020B7F99eec3689309C917c1cFB0a21530F1AB,0x2440BfFbC217A1AC736A85ba5eB44282B92aCede,0x8b33F76D5226f994718BCDB02593A518725D8565,0x5B6EaCE4229Dd1DDe6C3B7aC2a8372fa9bE5Ea87,0x4F7828bf49685c416d2f1523684cA1d96391E8DE,0x0d5e00266AC965Cb486E1685156ea37bD61649e5,0x188d2B33a67Ce2445157Ea540314C9cBD4e3fD7C,0xC005800BdA365AAB99aBf42E7E2e8A782855B705,0xDde0612A5c8de87Df27988fb0B69d7C173e5d88a,0x4E847e67e11FaEAef49ec42e451A13dCc0AAd7a8,0xccFaA5cdbC265199AaE588BB08A8b0e61E61B29B,0xFdbB0E84340d17d5dA390ea2325CCe477B292185,0x83926EB6f4C829970E7793b42Da3347c784f6CBa,0xD5fddD924903dB70f01952E6Fb356a5186c65649,0xD2bfAa9537A26D4fc2a5B4282a625E1AAFFa494B,0xb4cAd1c293491F340bB206d03c25CaFFA7a80108,0x4473DFAe0064116588A15c5759D60da0B62A8836,0x1f41f702FF5e6b397Ef2bF4eCCec790BC48d6E18,0x20654ACfB211D13Ef7AFc18E0CB11d74E9ead01c,0xD0739459c5945bbEDc7669BcB38C92cCe9afA8dE,0x3Eb8cc890223b82B16a110f87a9669c8Bc401Ceb,0x6969480d52c7A8dd3fDF5B3F9742750f9F229FE1,0xF802ec5a8172c7Ca8255D3E23AD5cF0Fc9BAB93c,0xBe2B77AA2e86130541FEBEd8521DdaC791a018A4,0xf726A54d9E3fff9dfA5837a891D24A4d3f5f723C,0x87Edc5758b40B5B06AEB22ba72357c9103e9ad24,0x21BCa832ce1e3DfF27F163f4E714F3B4Cf6Adfe8,0x18eDF91933AC7d1B22b9895062B4529cc259ddF7,0x4675D01FA3b1F483F04C364b6F9E2C2696eC6C6f,0x820D53C86dbE7FA68E0E416ea27667fC3f4E0cea,0xC420a1f5c5AcB57ccDAdA2bB66DB038395FC3A5e,0x8dD6F3A1Ff485F5f5f35AA6ADd1504A12FB9c02B,0xaFEd93D81473F2b75B74F3a9777A5eDd29bbE3a5,0x662861d0b4263D296198386E7C67AA505bfe994b,0x2685f62636DadEF7256697870Cd30fAa011BB2AE,0xeAdE1f5bf8a327Ec8AD39981a324C8999a268BAe,0xE6216B6afb96C770F252B2cf704343F35CEfbe4e,0x5a395ae92F10f082380A6254E5AA904cf60B5BE2,0x8c6309ccD5a0C57588AC0A6A31cFe6FCbC6fa009,0x714b42f9d81F8eDDe9e116099605987607860E64,0xa80786f35a7119dFF0C1B35cfeFD896e6629B02B,0x79190bb5b76100EC0819cf8649F3eF3A9AC355BC,0x6d3796f653418E89E4981085038e0FACe1D9Fadd,0xAB9671B7991e82788d03Eb89946B1e3cCc5532aF,0xda57c7852b3Dd2E98e90b7f15ddb069FE08b90fC,0x4F9CB6a36e77E0FC952270c229ec96f80227c5E9,0x1bFc74841Fe9EC54EE4013458c98F6907F17E31d,0x38635f1Fe7b99550A5558Ef7f724306CA32c47C7,0x737827D92492b8F570399966F7a0535907F4E444,0x445FDbC220d4fbA472E775150E586c216507a5C6,0x4F05d2FAB42d82A12d4D03bc3151B57A4Ac0477A,0x4b28ef9232bDD5CA684b761962cad3fa85E73aEC,0x97456c9b31420f34026972c25B8765bf51F105c6,0x073Cca7d486F3e776009Ce7a63C55B2d1442B789,0x070e3175E3972fD0A855415AD44d26DC431DA3C6,0xE9e768a9EBdBBb599EE92EA820C09fc745934B09,0xbBE94a5cFCf3C83A399F7d10d4fc94448f034F32,0x971A8115A573F9Ccf10f9147c835A10698Fba57A,0x589A05518FE93f127BBAcbD4A186706F821F65C8,0x0C1f076f34119D8f184C89B72fB480E6dFc4773f,0x86Bd1e313EA2c4628EC65a57cf1BeF654F943682,0xe0d76c92ff46c474d1Dc63c90ff6F2eC313626D9,0x80038953cE1CdFCe7561Abb73216dE83F8baAEf0,0xb15F04298D7c61c23bad271e8F79F9db4573aDF1,0x1591C783EfB2Bf91b348B6b31F2B04De1442836c,0x1A9F0972d99244Ab96FcC30f52aE7959e4962789,0x0f8d8e26F88d828d83c4D416eCA051C91f969C96,0x7b887b64cD512feD8926D16b81f0C1977d084Aa2,0xfF15066BFcc84e9d00E7A105f278431A5FAb9Aca,0x9df471084bcF2CB668A83dfd7b285Bc03eA7785e,0x019B5a49faA53A82E4e7c9aa0ffc5Fd7d64ED028,0x5932A689E340177DA130b9c4e8cfCB3787dE9182,0x1CEb9E682759Dfc9ABDdd94B84524C2A3d5696Ae,0x34663af357fFBE89ad130dbB076d320F9DB2BDa6,0xaa66c242C49d0981af4376d6A6c7B7ec55F92D26,0x9D78B12d0d41671c101e8c4A84Ee9748c528A822,0x6e5cc665a562D6f593D596E5cb3b98acC0bfC980,0xBB050500f22A3B13E3fA8F0F0CdbA5E41017D37A,0x7D818A7ED38FD631dB061B2bFc3DEC6b82895458,0xf6A829673233D04719F667076677548443826059,0x6c043a885402f7Cb32DcDF89dF8de436625f8e8f,0xc40a08C9e23Ed198a44b2141d9edDF55220744f0,0xe5853Ab7817Dd9c5C112cc73705A864370ED40C2,0xCb71798AB3f04767743D0f0651845478791Cd614,0x4d1394d67572CbbdE5001d496B32cACcC3D83A26

-----Encoded View---------------
141 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000008b
Arg [2] : 0000000000000000000000002f66ace812532a9508520ebec6afd08c32338022
Arg [3] : 000000000000000000000000f392a92d8750d3f948033d04545ee85df289306a
Arg [4] : 0000000000000000000000003f59dde6002b18163262e0ef593e67c7ecd754f7
Arg [5] : 0000000000000000000000002eb9a4741825b1bc563a96b274a1cad3a8806c57
Arg [6] : 000000000000000000000000e1690dd272fe718db57af1f2863cbe72b4ba407b
Arg [7] : 0000000000000000000000001d073998d6cfbc305d53a9e8df341ae775928b9b
Arg [8] : 000000000000000000000000973fc894e8046e686502784ad7ca40f48be93c7e
Arg [9] : 0000000000000000000000009fa4697fae641986e26d4a0c3961f9b96455c4a7
Arg [10] : 00000000000000000000000084601ad1eb0ce142b44e5a0e3adcd79351e41dde
Arg [11] : 000000000000000000000000fceffddcb543287ce10f5e9e7f8de4157b3c1701
Arg [12] : 00000000000000000000000004a9d53236ac03a95ba93dff306b12011967a846
Arg [13] : 000000000000000000000000b5f79e70759ca3734c2b3ebbdf9458831c0bb601
Arg [14] : 000000000000000000000000d26577d6bc29660e1357ea3cc0a313cd540aa1dc
Arg [15] : 000000000000000000000000d41f0b53687947a6b20f6d7e1d08fe5800e2562c
Arg [16] : 000000000000000000000000db61978d5df8bc79fa7965c52f45179bec9730ff
Arg [17] : 000000000000000000000000309f1bc8a6318ac0963beac32de02abcf264a3a2
Arg [18] : 000000000000000000000000e1535baca9593d4b2d1c9083a616e23f1f1fd514
Arg [19] : 0000000000000000000000003d800647fe576d82d6a0f32df78eec09cbac85ce
Arg [20] : 0000000000000000000000000a643f60b068f7f6d68508eee524a027468d31dd
Arg [21] : 0000000000000000000000009fbe8599d79acbfb40a83bd3d33620db2f701e0c
Arg [22] : 00000000000000000000000042a5ef45a045ab091e4e575e96ed28e439ae02d8
Arg [23] : 000000000000000000000000f86263404da9c47a68a076041355b988edbb959a
Arg [24] : 000000000000000000000000b99635d6f4e935b25c7c8092613be9da797cf1ca
Arg [25] : 000000000000000000000000311caf5ce308516154ee47a926531b0c56e7c0b9
Arg [26] : 00000000000000000000000077e018bf4b1c1ba9872d43a9d8c95ff8081c402e
Arg [27] : 000000000000000000000000adff418cf08a121bc5cf15bdab2801d8416d5dcc
Arg [28] : 000000000000000000000000329b3967cc086d9a7e47299b16ba1d2c045ad9a3
Arg [29] : 0000000000000000000000002eee37b11e6a3ff286f04d77bca519459500ea5f
Arg [30] : 0000000000000000000000000806fcc3b9ff04425159c13a4215b21469a084f5
Arg [31] : 000000000000000000000000075890e2fbd35b95cf47df8bd978999d157554e0
Arg [32] : 00000000000000000000000013c1861d97bdb852891516cad4ec806d0e6e321b
Arg [33] : 000000000000000000000000375ea660373fac749e03cff731ed380a10ea4bb2
Arg [34] : 0000000000000000000000001cbe4b4252e8afdcfeea7b12ad95d7090860dfaf
Arg [35] : 000000000000000000000000342e42b53f205f470f7dbcf3ed1278e893c1b273
Arg [36] : 000000000000000000000000668f37fede8b9f2e66e98f6b3b20061b444d9c54
Arg [37] : 00000000000000000000000075b867e833b04d47d2b63204a2746e378a9d6b65
Arg [38] : 000000000000000000000000f4f0dc0aff0f03435760246ded24db69ed3cfb96
Arg [39] : 0000000000000000000000007507c9ee7fc92d164cc1c02cdd2a3f0f4079722c
Arg [40] : 00000000000000000000000030226f2a0881cfcfe06bbcc770bdf499d4af92ad
Arg [41] : 000000000000000000000000d589d97844a0cb94300e72180363696be29c1399
Arg [42] : 000000000000000000000000baf15ede72121a032eb38137b797c5e0fa27d0d1
Arg [43] : 00000000000000000000000022818f87e9d07d007e8967811e2e3b2257565673
Arg [44] : 00000000000000000000000000e063d058d8bf815da697e07097752afa997e71
Arg [45] : 000000000000000000000000600b9677f189cb9ef2f8fe3171e25540fcf34e22
Arg [46] : 000000000000000000000000075120d076dd8e47067633887b91510b4a1444f5
Arg [47] : 0000000000000000000000009982ca38e0257aeb40c6c2de28acdc45511ddddf
Arg [48] : 000000000000000000000000ead990edcb0ab53188e850d4f8679e27b21cd511
Arg [49] : 0000000000000000000000005c69aef59d7cc892c5e47764ef4024dfd52c3b6c
Arg [50] : 000000000000000000000000899624126624a645d93a3724553893cafce06a66
Arg [51] : 0000000000000000000000001f72007138690934cde217c95c550a8bcb13cccf
Arg [52] : 000000000000000000000000388d0acb9284207602c842efb19a36c0b4635e29
Arg [53] : 000000000000000000000000fa08f0a53251356ecac47ffc32444c20ff11ab92
Arg [54] : 00000000000000000000000037de3e915528e533135a806bea22a11331e229ae
Arg [55] : 000000000000000000000000c58258be9fb1594e2d4f0910da21a61a717a5704
Arg [56] : 0000000000000000000000007f020b7f99eec3689309c917c1cfb0a21530f1ab
Arg [57] : 0000000000000000000000002440bffbc217a1ac736a85ba5eb44282b92acede
Arg [58] : 0000000000000000000000008b33f76d5226f994718bcdb02593a518725d8565
Arg [59] : 0000000000000000000000005b6eace4229dd1dde6c3b7ac2a8372fa9be5ea87
Arg [60] : 0000000000000000000000004f7828bf49685c416d2f1523684ca1d96391e8de
Arg [61] : 0000000000000000000000000d5e00266ac965cb486e1685156ea37bd61649e5
Arg [62] : 000000000000000000000000188d2b33a67ce2445157ea540314c9cbd4e3fd7c
Arg [63] : 000000000000000000000000c005800bda365aab99abf42e7e2e8a782855b705
Arg [64] : 000000000000000000000000dde0612a5c8de87df27988fb0b69d7c173e5d88a
Arg [65] : 0000000000000000000000004e847e67e11faeaef49ec42e451a13dcc0aad7a8
Arg [66] : 000000000000000000000000ccfaa5cdbc265199aae588bb08a8b0e61e61b29b
Arg [67] : 000000000000000000000000fdbb0e84340d17d5da390ea2325cce477b292185
Arg [68] : 00000000000000000000000083926eb6f4c829970e7793b42da3347c784f6cba
Arg [69] : 000000000000000000000000d5fddd924903db70f01952e6fb356a5186c65649
Arg [70] : 000000000000000000000000d2bfaa9537a26d4fc2a5b4282a625e1aaffa494b
Arg [71] : 000000000000000000000000b4cad1c293491f340bb206d03c25caffa7a80108
Arg [72] : 0000000000000000000000004473dfae0064116588a15c5759d60da0b62a8836
Arg [73] : 0000000000000000000000001f41f702ff5e6b397ef2bf4eccec790bc48d6e18
Arg [74] : 00000000000000000000000020654acfb211d13ef7afc18e0cb11d74e9ead01c
Arg [75] : 000000000000000000000000d0739459c5945bbedc7669bcb38c92cce9afa8de
Arg [76] : 0000000000000000000000003eb8cc890223b82b16a110f87a9669c8bc401ceb
Arg [77] : 0000000000000000000000006969480d52c7a8dd3fdf5b3f9742750f9f229fe1
Arg [78] : 000000000000000000000000f802ec5a8172c7ca8255d3e23ad5cf0fc9bab93c
Arg [79] : 000000000000000000000000be2b77aa2e86130541febed8521ddac791a018a4
Arg [80] : 000000000000000000000000f726a54d9e3fff9dfa5837a891d24a4d3f5f723c
Arg [81] : 00000000000000000000000087edc5758b40b5b06aeb22ba72357c9103e9ad24
Arg [82] : 00000000000000000000000021bca832ce1e3dff27f163f4e714f3b4cf6adfe8
Arg [83] : 00000000000000000000000018edf91933ac7d1b22b9895062b4529cc259ddf7
Arg [84] : 0000000000000000000000004675d01fa3b1f483f04c364b6f9e2c2696ec6c6f
Arg [85] : 000000000000000000000000820d53c86dbe7fa68e0e416ea27667fc3f4e0cea
Arg [86] : 000000000000000000000000c420a1f5c5acb57ccdada2bb66db038395fc3a5e
Arg [87] : 0000000000000000000000008dd6f3a1ff485f5f5f35aa6add1504a12fb9c02b
Arg [88] : 000000000000000000000000afed93d81473f2b75b74f3a9777a5edd29bbe3a5
Arg [89] : 000000000000000000000000662861d0b4263d296198386e7c67aa505bfe994b
Arg [90] : 0000000000000000000000002685f62636dadef7256697870cd30faa011bb2ae
Arg [91] : 000000000000000000000000eade1f5bf8a327ec8ad39981a324c8999a268bae
Arg [92] : 000000000000000000000000e6216b6afb96c770f252b2cf704343f35cefbe4e
Arg [93] : 0000000000000000000000005a395ae92f10f082380a6254e5aa904cf60b5be2
Arg [94] : 0000000000000000000000008c6309ccd5a0c57588ac0a6a31cfe6fcbc6fa009
Arg [95] : 000000000000000000000000714b42f9d81f8edde9e116099605987607860e64
Arg [96] : 000000000000000000000000a80786f35a7119dff0c1b35cfefd896e6629b02b
Arg [97] : 00000000000000000000000079190bb5b76100ec0819cf8649f3ef3a9ac355bc
Arg [98] : 0000000000000000000000006d3796f653418e89e4981085038e0face1d9fadd
Arg [99] : 000000000000000000000000ab9671b7991e82788d03eb89946b1e3ccc5532af
Arg [100] : 000000000000000000000000da57c7852b3dd2e98e90b7f15ddb069fe08b90fc
Arg [101] : 0000000000000000000000004f9cb6a36e77e0fc952270c229ec96f80227c5e9
Arg [102] : 0000000000000000000000001bfc74841fe9ec54ee4013458c98f6907f17e31d
Arg [103] : 00000000000000000000000038635f1fe7b99550a5558ef7f724306ca32c47c7
Arg [104] : 000000000000000000000000737827d92492b8f570399966f7a0535907f4e444
Arg [105] : 000000000000000000000000445fdbc220d4fba472e775150e586c216507a5c6
Arg [106] : 0000000000000000000000004f05d2fab42d82a12d4d03bc3151b57a4ac0477a
Arg [107] : 0000000000000000000000004b28ef9232bdd5ca684b761962cad3fa85e73aec
Arg [108] : 00000000000000000000000097456c9b31420f34026972c25b8765bf51f105c6
Arg [109] : 000000000000000000000000073cca7d486f3e776009ce7a63c55b2d1442b789
Arg [110] : 000000000000000000000000070e3175e3972fd0a855415ad44d26dc431da3c6
Arg [111] : 000000000000000000000000e9e768a9ebdbbb599ee92ea820c09fc745934b09
Arg [112] : 000000000000000000000000bbe94a5cfcf3c83a399f7d10d4fc94448f034f32
Arg [113] : 000000000000000000000000971a8115a573f9ccf10f9147c835a10698fba57a
Arg [114] : 000000000000000000000000589a05518fe93f127bbacbd4a186706f821f65c8
Arg [115] : 0000000000000000000000000c1f076f34119d8f184c89b72fb480e6dfc4773f
Arg [116] : 00000000000000000000000086bd1e313ea2c4628ec65a57cf1bef654f943682
Arg [117] : 000000000000000000000000e0d76c92ff46c474d1dc63c90ff6f2ec313626d9
Arg [118] : 00000000000000000000000080038953ce1cdfce7561abb73216de83f8baaef0
Arg [119] : 000000000000000000000000b15f04298d7c61c23bad271e8f79f9db4573adf1
Arg [120] : 0000000000000000000000001591c783efb2bf91b348b6b31f2b04de1442836c
Arg [121] : 0000000000000000000000001a9f0972d99244ab96fcc30f52ae7959e4962789
Arg [122] : 0000000000000000000000000f8d8e26f88d828d83c4d416eca051c91f969c96
Arg [123] : 0000000000000000000000007b887b64cd512fed8926d16b81f0c1977d084aa2
Arg [124] : 000000000000000000000000ff15066bfcc84e9d00e7a105f278431a5fab9aca
Arg [125] : 0000000000000000000000009df471084bcf2cb668a83dfd7b285bc03ea7785e
Arg [126] : 000000000000000000000000019b5a49faa53a82e4e7c9aa0ffc5fd7d64ed028
Arg [127] : 0000000000000000000000005932a689e340177da130b9c4e8cfcb3787de9182
Arg [128] : 0000000000000000000000001ceb9e682759dfc9abddd94b84524c2a3d5696ae
Arg [129] : 00000000000000000000000034663af357ffbe89ad130dbb076d320f9db2bda6
Arg [130] : 000000000000000000000000aa66c242c49d0981af4376d6a6c7b7ec55f92d26
Arg [131] : 0000000000000000000000009d78b12d0d41671c101e8c4a84ee9748c528a822
Arg [132] : 0000000000000000000000006e5cc665a562d6f593d596e5cb3b98acc0bfc980
Arg [133] : 000000000000000000000000bb050500f22a3b13e3fa8f0f0cdba5e41017d37a
Arg [134] : 0000000000000000000000007d818a7ed38fd631db061b2bfc3dec6b82895458
Arg [135] : 000000000000000000000000f6a829673233d04719f667076677548443826059
Arg [136] : 0000000000000000000000006c043a885402f7cb32dcdf89df8de436625f8e8f
Arg [137] : 000000000000000000000000c40a08c9e23ed198a44b2141d9eddf55220744f0
Arg [138] : 000000000000000000000000e5853ab7817dd9c5c112cc73705a864370ed40c2
Arg [139] : 000000000000000000000000cb71798ab3f04767743d0f0651845478791cd614
Arg [140] : 0000000000000000000000004d1394d67572cbbde5001d496b32caccc3d83a26


Deployed ByteCode Sourcemap

34704:18259:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9439:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11940:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41070:515;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41593:601;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43895:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34784:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10568:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44675:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12762:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34992:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42846:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10410:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13466:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38603:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34842:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44861:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42202:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51991:969;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35444:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35086:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10739:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2819:103;;;;;;;;;;;;;:::i;:::-;;42516:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39721:112;;;;;;;;;;;;;:::i;:::-;;43160:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34879:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35116:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39542:171;;;;;;;;;;;;;:::i;:::-;;2178:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9658:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14239:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11122:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40125:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35054:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43714:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34916:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40558:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35180:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44199:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34955:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43386:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35289:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11419:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40026:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35247:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38692:842;;;;;;;;;;;;;:::i;:::-;;3077:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35216:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9439:100;9493:13;9526:5;9519:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9439:100;:::o;11940:242::-;12059:4;12081:13;12097:12;:10;:12::i;:::-;12081:28;;12120:32;12129:5;12136:7;12145:6;12120:8;:32::i;:::-;12170:4;12163:11;;;11940:242;;;;:::o;41070:515::-;2064:13;:11;:13::i;:::-;41296:3:::1;41279:13;41261:15;41245:13;:31;;;;:::i;:::-;:47;;;;:::i;:::-;:54;;41223:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;41392:13;41373:16;:32;;;;41437:15;41416:18;:36;;;;41482:13;41463:16;:32;;;;41561:16;;41540:18;;41521:16;;:37;;;;:::i;:::-;:56;;;;:::i;:::-;41506:12;:71;;;;41070:515:::0;;;:::o;41593:601::-;2064:13;:11;:13::i;:::-;41820:3:::1;41803:13;41785:15;41769:13;:31;;;;:::i;:::-;:47;;;;:::i;:::-;:54;;41747:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;41917:13;41897:17;:33;;;;41963:15;41941:19;:37;;;;42009:13;41989:17;:33;;;;42130:17;;42095:19;;42062:17;;:52;;;;:::i;:::-;:85;;;;:::i;:::-;42033:13;:114;;;;42173:13;;42158:12;:28;;;;41593:601:::0;;;:::o;43895:296::-;2064:13;:11;:13::i;:::-;44021:9:::1;44016:168;44040:8;;:15;;44036:1;:19;44016:168;;;44112:5;44077:19;:32;44097:8;;44106:1;44097:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;44077:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;44153:8;;44162:1;44153:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;44137:35;;;44166:5;44137:35;;;;;;:::i;:::-;;;;;;;;44057:3;;;;;:::i;:::-;;;;44016:168;;;;43895:296:::0;;;:::o;34784:51::-;;;:::o;10568:108::-;10629:7;10656:12;;10649:19;;10568:108;:::o;44675:178::-;44778:4;44807:29;:38;44837:7;44807:38;;;;;;;;;;;;;;;;;;;;;;;;;44800:45;;44675:178;;;:::o;12762:295::-;12893:4;12910:15;12928:12;:10;:12::i;:::-;12910:30;;12951:38;12967:4;12973:7;12982:6;12951:15;:38::i;:::-;13000:27;13010:4;13016:2;13020:6;13000:9;:27::i;:::-;13045:4;13038:11;;;12762:295;;;;;:::o;34992:53::-;35038:6;34992:53;:::o;42846:306::-;2064:13;:11;:13::i;:::-;42964:1:::1;42936:30;;:16;:30;;::::0;42928:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;42998:17;43018:15;;;;;;;;;;;42998:35;;43062:16;43044:15;;:34;;;;;;;;;;;;;;;;;;43134:9;43094:50;;43117:15;;;;;;;;;;;43094:50;;;;;;;;;;;;42917:235;42846:306:::0;:::o;10410:93::-;10468:5;10493:2;10486:9;;10410:93;:::o;13466:270::-;13581:4;13603:13;13619:12;:10;:12::i;:::-;13603:28;;13642:64;13651:5;13658:7;13695:10;13667:25;13677:5;13684:7;13667:9;:25::i;:::-;:38;;;;:::i;:::-;13642:8;:64::i;:::-;13724:4;13717:11;;;13466:270;;;;:::o;38603:81::-;38651:25;38657:10;38669:6;38651:5;:25::i;:::-;38603:81;:::o;34842:28::-;;;;;;;;;;;;;:::o;44861:126::-;44927:4;44951:19;:28;44971:7;44951:28;;;;;;;;;;;;;;;;;;;;;;;;;44944:35;;44861:126;;;:::o;42202:306::-;2064:13;:11;:13::i;:::-;42320:1:::1;42292:30;;:16;:30;;::::0;42284:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;42354:17;42374:15;;;;;;;;;;;42354:35;;42418:16;42400:15;;:34;;;;;;;;;;;;;;;;;;42490:9;42450:50;;42473:15;;;;;;;;;;;42450:50;;;;;;;;;;;;42273:235;42202:306:::0;:::o;51991:969::-;2064:13;:11;:13::i;:::-;52129:3:::1;52109:9;;:16;;:23;;52101:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;52196:12;;:19;;52176:9;;:16;;:39;52168:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;52252:20;52291:6:::0;52287:98:::1;52305:9;;:16;;52301:1;:20;52287:98;;;52358:12;;52371:1;52358:15;;;;;;;:::i;:::-;;;;;;;;52342:31;;;;;:::i;:::-;;;52323:3;;;;;:::i;:::-;;;;52287:98;;;;52512:12;52487:21;52497:10;52487:9;:21::i;:::-;:37;;52479:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;52567:6;52563:324;52581:9;;:16;;52577:1;:20;52563:324;;;52734:58;52750:10;52762:9;;52772:1;52762:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;52776;;52789:1;52776:15;;;;;;;:::i;:::-;;;;;;;;52734;:58::i;:::-;52599:3;;;;;:::i;:::-;;;;52563:324;;;;52904:48;52921:9;;:16;;52939:12;52904:48;;;;;;;:::i;:::-;;;;;;;;52090:870;51991:969:::0;;;;:::o;35444:28::-;;;;:::o;35086:23::-;;;;;;;;;;;;;:::o;10739:177::-;10858:7;10890:9;:18;10900:7;10890:18;;;;;;;;;;;;;;;;10883:25;;10739:177;;;:::o;2819:103::-;2064:13;:11;:13::i;:::-;2884:30:::1;2911:1;2884:18;:30::i;:::-;2819:103::o:0;42516:322::-;2064:13;:11;:13::i;:::-;42640:1:::1;42610:32;;:18;:32;;::::0;42602:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;42674:17;42694;;;;;;;;;;;42674:37;;42742:18;42722:17;;:38;;;;;;;;;;;;;;;;;;42820:9;42776:54;;42801:17;;;;;;;;;;;42776:54;;;;;;;;;;;;42591:247;42516:322:::0;:::o;39721:112::-;2064:13;:11;:13::i;:::-;39784:5:::1;39774:7;;:15;;;;;;;;;;;;;;;;;;39812:13;:11;:13::i;:::-;39800:9;:25;;;;39721:112::o:0;43160:218::-;2064:13;:11;:13::i;:::-;43316:5:::1;43275:29;:38;43305:7;43275:38;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;43355:7;43337:33;;;43364:5;43337:33;;;;;;:::i;:::-;;;;;;;;43160:218:::0;;:::o;34879:30::-;;;;;;;;;;;;;:::o;35116:26::-;;;;;;;;;;;;;:::o;39542:171::-;2064:13;:11;:13::i;:::-;39604::::1;;;;;;;;;;;39603:14;39595:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;39672:4;39656:13;;:20;;;;;;;;;;;;;;;;;;39701:4;39687:11;;:18;;;;;;;;;;;;;;;;;;39542:171::o:0;2178:87::-;2224:7;2251:6;;;;;;;;;;;2244:13;;2178:87;:::o;9658:104::-;9714:13;9747:7;9740:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9658:104;:::o;14239:505::-;14359:4;14381:13;14397:12;:10;:12::i;:::-;14381:28;;14420:24;14447:25;14457:5;14464:7;14447:9;:25::i;:::-;14420:52;;14525:15;14505:16;:35;;14483:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;14641:60;14650:5;14657:7;14685:15;14666:16;:34;14641:8;:60::i;:::-;14732:4;14725:11;;;;14239:505;;;;:::o;11122:234::-;11237:4;11259:13;11275:12;:10;:12::i;:::-;11259:28;;11298;11308:5;11315:2;11319:6;11298:9;:28::i;:::-;11344:4;11337:11;;;11122:234;;;;:::o;40125:425::-;2064:13;:11;:13::i;:::-;40254:6:::1;40249:1;40233:13;:11;:13::i;:::-;:17;;;;:::i;:::-;40232:28;;;;:::i;:::-;40222:6;:38;;40200:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;40413:4;40408:1;40392:13;:11;:13::i;:::-;:17;;;;:::i;:::-;40391:26;;;;:::i;:::-;40381:6;:36;;40359:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;40536:6;40515:18;:27;;;;40125:425:::0;:::o;35054:25::-;;;;;;;;;;;;;:::o;43714:173::-;2064:13;:11;:13::i;:::-;43827:5:::1;43796:19;:28;43816:7;43796:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;43864:7;43848:31;;;43873:5;43848:31;;;;;;:::i;:::-;;;;;;;;43714:173:::0;;:::o;34916:32::-;;;;;;;;;;;;;:::o;40558:504::-;2064:13;:11;:13::i;:::-;40759:4:::1;40754:1;40738:13;:11;:13::i;:::-;:17;;;;:::i;:::-;40737:26;;;;:::i;:::-;40717:15;:47;;40695:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;40902:4;40897:1;40881:13;:11;:13::i;:::-;:17;;;;:::i;:::-;40880:26;;;;:::i;:::-;40865:10;:42;;40843:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;41006:15;40989:14;:32;;;;41044:10;41032:9;:22;;;;40558:504:::0;;:::o;35180:29::-;;;;:::o;44199:468::-;2064:13;:11;:13::i;:::-;44269:12:::1;44311:1:::0;44296:17:::1;;:3;:17;;::::0;44292:368:::1;;44350:10;44342:24;;44392:21;44342:90;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44328:104;;;;;44292:368;;;44510:1;44478:3;44471:21;;;44501:4;44471:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;44463:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;44540:14;44564:3;44557:21;;;44587:4;44557:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44540:53;;44615:3;44608:20;;;44629:10;44641:6;44608:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44448:212;44292:368;44258:409;44199:468:::0;:::o;34955:30::-;;;;;;;;;;;;;:::o;43386:320::-;2064:13;:11;:13::i;:::-;43524:9:::1;43519:180;43543:8;;:15;;43539:1;:19;43519:180;;;43625:5;43580:29;:42;43610:8;;43619:1;43610:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;43580:42;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;43668:8;;43677:1;43668:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;43650:37;;;43681:5;43650:37;;;;;;:::i;:::-;;;;;;;;43560:3;;;;;:::i;:::-;;;;43519:180;;;;43386:320:::0;;;:::o;35289:27::-;;;;:::o;11419:201::-;11553:7;11585:11;:18;11597:5;11585:18;;;;;;;;;;;;;;;:27;11604:7;11585:27;;;;;;;;;;;;;;;;11578:34;;11419:201;;;;:::o;40026:91::-;2064:13;:11;:13::i;:::-;40104:5:::1;40090:11;;:19;;;;;;;;;;;;;;;;;;40026:91:::0;:::o;35247:33::-;;;;:::o;38692:842::-;2064:13;:11;:13::i;:::-;38753::::1;;;;;;;;;;;38752:14;38744:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;38841:15;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38823:55;;;38901:4;38921:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38823:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38807:13;;:147;;;;;;;;;;;;;;;;;;38965:66;38982:4;38997:13;;;;;;;;;;;39013:17;38965:8;:66::i;:::-;39049:13;;;;;;;;;;;39042:29;;;39094:15;39125:17;39042:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39166:58;39203:13;;;;;;;;;;;39219:4;39166:28;:58::i;:::-;39235:55;39269:13;;;;;;;;;;;39285:4;39235:25;:55::i;:::-;39303:15;:31;;;39342:21;39387:4;39407:24;39425:4;39407:9;:24::i;:::-;39446:1;39462::::0;39478:7:::1;:5;:7::i;:::-;39500:15;39303:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38692:842::o:0;3077:238::-;2064:13;:11;:13::i;:::-;3200:1:::1;3180:22;;:8;:22;;::::0;3158:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3279:28;3298:8;3279:18;:28::i;:::-;3077:238:::0;:::o;35216:24::-;;;;:::o;723:98::-;776:7;803:10;796:17;;723:98;:::o;18372:380::-;18525:1;18508:19;;:5;:19;;;18500:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18606:1;18587:21;;:7;:21;;;18579:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18690:6;18660:11;:18;18672:5;18660:18;;;;;;;;;;;;;;;:27;18679:7;18660:27;;;;;;;;;;;;;;;:36;;;;18728:7;18712:32;;18721:5;18712:32;;;18737:6;18712:32;;;;;;:::i;:::-;;;;;;;;18372:380;;;:::o;2343:132::-;2418:12;:10;:12::i;:::-;2407:23;;:7;:5;:7::i;:::-;:23;;;2399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2343:132::o;19043:502::-;19178:24;19205:25;19215:5;19222:7;19205:9;:25::i;:::-;19178:52;;19265:17;19245:16;:37;19241:297;;19345:6;19325:16;:26;;19299:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;19460:51;19469:5;19476:7;19504:6;19485:16;:25;19460:8;:51::i;:::-;19241:297;19167:378;19043:502;;;:::o;45193:4062::-;45341:1;45325:18;;:4;:18;;;45317:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45418:1;45404:16;;:2;:16;;;45396:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;45487:1;45477:6;:11;45473:93;;45505:28;45521:4;45527:2;45531:1;45505:15;:28::i;:::-;45548:7;;45473:93;45604:7;:5;:7::i;:::-;45596:15;;:4;:15;;;;:45;;;;;45634:7;:5;:7::i;:::-;45628:13;;:2;:13;;;;45596:45;:78;;;;;45672:1;45658:16;;:2;:16;;;;45596:78;:112;;;;;35038:6;45691:17;;:2;:17;;;;45596:112;:139;;;;;45726:9;;;;;;;;;;;45725:10;45596:139;45578:1726;;;45767:13;;;;;;;;;;;45762:210;;45831:19;:25;45851:4;45831:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;45860:19;:23;45880:2;45860:23;;;;;;;;;;;;;;;;;;;;;;;;;45831:52;45801:155;;;;;;;;;;;;:::i;:::-;;;;;;;;;45762:210;45992:7;;;;;;;;;;;:41;;;;;46019:13;;;;;;;;;;;46003:30;;:4;:30;;;45992:41;45988:226;;;46110:9;;46100:6;46084:13;46094:2;46084:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;46076:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;46157:8;:14;46166:4;46157:14;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;46175:8;:12;46184:2;46175:12;;;;;;;;;;;;;;;;;;;;;;;;;46157:30;46149:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;45988:226;46276:26;:32;46303:4;46276:32;;;;;;;;;;;;;;;;;;;;;;;;;:87;;;;;46330:29;:33;46360:2;46330:33;;;;;;;;;;;;;;;;;;;;;;;;;46329:34;46276:87;46254:1039;;;46438:14;;46428:6;:24;;46398:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;46625:9;;46608:13;46618:2;46608:9;:13::i;:::-;46599:6;:22;;;;:::i;:::-;:35;;46569:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;46254:1039;;;46786:26;:30;46813:2;46786:30;;;;;;;;;;;;;;;;;;;;;;;;;:87;;;;;46838:29;:35;46868:4;46838:35;;;;;;;;;;;;;;;;;;;;;;;;;46837:36;46786:87;46764:529;;;46948:14;;46938:6;:24;;46908:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;46764:529;;;47088:29;:33;47118:2;47088:33;;;;;;;;;;;;;;;;;;;;;;;;;47083:210;;47198:9;;47181:13;47191:2;47181:9;:13::i;:::-;47172:6;:22;;;;:::i;:::-;:35;;47142:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;47083:210;46764:529;46254:1039;45578:1726;47316:28;47347:24;47365:4;47347:9;:24::i;:::-;47316:55;;47384:12;47423:18;;47399:20;:42;;47384:57;;47472:7;:35;;;;;47496:11;;;;;;;;;;;47472:35;:62;;;;;47525:9;;;;;;;;;;;47524:10;47472:62;:112;;;;;47552:26;:32;47579:4;47552:32;;;;;;;;;;;;;;;;;;;;;;;;;47551:33;47472:112;:155;;;;;47602:19;:25;47622:4;47602:25;;;;;;;;;;;;;;;;;;;;;;;;;47601:26;47472:155;:196;;;;;47645:19;:23;47665:2;47645:23;;;;;;;;;;;;;;;;;;;;;;;;;47644:24;47472:196;47454:331;;;47707:4;47695:9;;:16;;;;;;;;;;;;;;;;;;47728:11;:9;:11::i;:::-;47768:5;47756:9;;:17;;;;;;;;;;;;;;;;;;47454:331;47797:12;47813:9;;;;;;;;;;;47812:10;47797:25;;47839:19;:25;47859:4;47839:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;47868:19;:23;47888:2;47868:23;;;;;;;;;;;;;;;;;;;;;;;;;47839:52;47835:100;;;47918:5;47908:15;;47835:100;47947:12;47980:7;47976:1187;;;48032:26;:30;48059:2;48032:30;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;48082:1;48066:13;;:17;48032:51;48028:986;;;48111:36;48141:5;48111:25;48122:13;;48111:6;:10;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;48104:43;;48260:13;;48218:17;;48211:4;:24;;;;:::i;:::-;48210:63;;;;:::i;:::-;48166:19;;:107;;;;;;;:::i;:::-;;;;;;;;48386:13;;48344:17;;48337:4;:24;;;;:::i;:::-;48336:63;;;;:::i;:::-;48292:19;;:107;;;;;;;:::i;:::-;;;;;;;;48516:13;;48472:19;;48465:4;:26;;;;:::i;:::-;48464:65;;;;:::i;:::-;48418:21;;:111;;;;;;;:::i;:::-;;;;;;;;48028:986;;;48591:26;:32;48618:4;48591:32;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;;48642:1;48627:12;;:16;48591:52;48587:427;;;48671:35;48700:5;48671:24;48682:12;;48671:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;48664:42;;48776:12;;48756:16;;48749:4;:23;;;;:::i;:::-;48748:40;;;;:::i;:::-;48725:19;;:63;;;;;;;:::i;:::-;;;;;;;;48858:12;;48838:16;;48831:4;:23;;;;:::i;:::-;48830:40;;;;:::i;:::-;48807:19;;:63;;;;;;;:::i;:::-;;;;;;;;48986:12;;48943:18;;48936:4;:25;;;;:::i;:::-;48935:63;;;;:::i;:::-;48889:21;;:109;;;;;;;:::i;:::-;;;;;;;;48587:427;48028:986;49041:1;49034:4;:8;49030:91;;;49063:42;49079:4;49093;49100;49063:15;:42::i;:::-;49030:91;49147:4;49137:14;;;;;:::i;:::-;;;47976:1187;49175:33;49191:4;49197:2;49201:6;49175:15;:33::i;:::-;49235:12;;49219:13;:28;;;;45306:3949;;;;45193:4062;;;;:::o;17259:675::-;17362:1;17343:21;;:7;:21;;;17335:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17415:49;17436:7;17453:1;17457:6;17415:20;:49::i;:::-;17477:22;17502:9;:18;17512:7;17502:18;;;;;;;;;;;;;;;;17477:43;;17557:6;17539:14;:24;;17531:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17676:6;17659:14;:23;17638:9;:18;17648:7;17638:18;;;;;;;;;;;;;;;:44;;;;17793:6;17777:12;;:22;;;;;;;;;;;17854:1;17828:37;;17837:7;17828:37;;;17858:6;17828:37;;;;;;:::i;:::-;;;;;;;;17878:48;17898:7;17915:1;17919:6;17878:19;:48::i;:::-;17324:610;17259:675;;:::o;15214:877::-;15361:1;15345:18;;:4;:18;;;15337:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15438:1;15424:16;;:2;:16;;;15416:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15493:38;15514:4;15520:2;15524:6;15493:20;:38::i;:::-;15544:19;15566:9;:15;15576:4;15566:15;;;;;;;;;;;;;;;;15544:37;;15629:6;15614:11;:21;;15592:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;15769:6;15755:11;:20;15737:9;:15;15747:4;15737:15;;;;;;;;;;;;;;;:38;;;;15972:6;15955:9;:13;15965:2;15955:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;16022:2;16007:26;;16016:4;16007:26;;;16026:6;16007:26;;;;;;:::i;:::-;;;;;;;;16046:37;16066:4;16072:2;16076:6;16046:19;:37::i;:::-;15326:765;15214:877;;;:::o;3475:191::-;3549:16;3568:6;;;;;;;;;;;3549:25;;3594:8;3585:6;;:17;;;;;;;;;;;;;;;;;;3649:8;3618:40;;3639:8;3618:40;;;;;;;;;;;;3538:128;3475:191;:::o;44995:190::-;45114:5;45079:26;:32;45106:4;45079:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;45171:5;45137:40;;45165:4;45137:40;;;;;;;;;;;;44995:190;;:::o;50154:1829::-;50195:23;50221:24;50239:4;50221:9;:24::i;:::-;50195:50;;50256:25;50354:21;;50319:19;;50284;;:54;;;;:::i;:::-;:91;;;;:::i;:::-;50256:119;;50386:12;50434:1;50415:15;:20;:46;;;;50460:1;50439:17;:22;50415:46;50411:85;;;50478:7;;;;;50411:85;50551:2;50530:18;;:23;;;;:::i;:::-;50512:15;:41;50508:115;;;50609:2;50588:18;;:23;;;;:::i;:::-;50570:41;;50508:115;50635:23;50749:1;50716:17;50680:19;;50662:15;:37;;;;:::i;:::-;50661:72;;;;:::i;:::-;:89;;;;:::i;:::-;50635:115;;50761:26;50790:36;50810:15;50790;:19;;:36;;;;:::i;:::-;50761:65;;50839:25;50867:21;50839:49;;50901:37;50919:18;50901:17;:37::i;:::-;50951:18;50972:44;50998:17;50972:21;:25;;:44;;;;:::i;:::-;50951:65;;51029:23;51055:82;51109:17;51055:35;51070:19;;51055:10;:14;;:35;;;;:::i;:::-;:39;;:82;;;;:::i;:::-;51029:108;;51150:25;51178:84;51234:17;51178:37;51193:21;;51178:10;:14;;:37;;;;:::i;:::-;:41;;:84;;;;:::i;:::-;51150:112;;51275:23;51358:17;51327:15;51301:10;:41;;;;:::i;:::-;:74;;;;:::i;:::-;51275:100;;51410:1;51388:19;:23;;;;51444:1;51422:19;:23;;;;51480:1;51456:21;:25;;;;51516:1;51498:15;:19;:42;;;;;51539:1;51521:15;:19;51498:42;51494:280;;;51557:47;51571:15;51588;51557:13;:47::i;:::-;51624:138;51657:18;51694:15;51728:19;;51624:138;;;;;;;;:::i;:::-;;;;;;;;51494:280;51808:17;;;;;;;;;;;51800:31;;51839:17;51800:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51786:75;;;;;51896:15;;;;;;;;;;;51888:29;;51939:21;51888:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51874:101;;;;;50184:1799;;;;;;;;;;50154:1829;:::o;24720:98::-;24778:7;24809:1;24805;:5;;;;:::i;:::-;24798:12;;24720:98;;;;:::o;25119:::-;25177:7;25208:1;25204;:5;;;;:::i;:::-;25197:12;;25119:98;;;;:::o;20145:125::-;;;;:::o;20874:124::-;;;;:::o;24363:98::-;24421:7;24452:1;24448;:5;;;;:::i;:::-;24441:12;;24363:98;;;;:::o;49263:503::-;49331:21;49369:1;49355:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49331:40;;49400:4;49382;49387:1;49382:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;49426:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49416:4;49421:1;49416:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;49461:62;49478:4;49493:15;49511:11;49461:8;:62::i;:::-;49562:15;:66;;;49643:11;49669:1;49685:4;49712;49732:15;49562:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49320:446;49263:503;:::o;49774:372::-;49857:62;49874:4;49889:15;49907:11;49857:8;:62::i;:::-;49932:15;:31;;;49971:9;50004:4;50024:11;50050:1;50066;50082:15;;;;;;;;;;;50112;49932:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;49774:372;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:619::-;3523:6;3531;3539;3588:2;3576:9;3567:7;3563:23;3559:32;3556:119;;;3594:79;;:::i;:::-;3556:119;3714:1;3739:53;3784:7;3775:6;3764:9;3760:22;3739:53;:::i;:::-;3729:63;;3685:117;3841:2;3867:53;3912:7;3903:6;3892:9;3888:22;3867:53;:::i;:::-;3857:63;;3812:118;3969:2;3995:53;4040:7;4031:6;4020:9;4016:22;3995:53;:::i;:::-;3985:63;;3940:118;3446:619;;;;;:::o;4071:117::-;4180:1;4177;4170:12;4194:117;4303:1;4300;4293:12;4317:117;4426:1;4423;4416:12;4457:568;4530:8;4540:6;4590:3;4583:4;4575:6;4571:17;4567:27;4557:122;;4598:79;;:::i;:::-;4557:122;4711:6;4698:20;4688:30;;4741:18;4733:6;4730:30;4727:117;;;4763:79;;:::i;:::-;4727:117;4877:4;4869:6;4865:17;4853:29;;4931:3;4923:4;4915:6;4911:17;4901:8;4897:32;4894:41;4891:128;;;4938:79;;:::i;:::-;4891:128;4457:568;;;;;:::o;5031:116::-;5101:21;5116:5;5101:21;:::i;:::-;5094:5;5091:32;5081:60;;5137:1;5134;5127:12;5081:60;5031:116;:::o;5153:133::-;5196:5;5234:6;5221:20;5212:29;;5250:30;5274:5;5250:30;:::i;:::-;5153:133;;;;:::o;5292:698::-;5384:6;5392;5400;5449:2;5437:9;5428:7;5424:23;5420:32;5417:119;;;5455:79;;:::i;:::-;5417:119;5603:1;5592:9;5588:17;5575:31;5633:18;5625:6;5622:30;5619:117;;;5655:79;;:::i;:::-;5619:117;5768:80;5840:7;5831:6;5820:9;5816:22;5768:80;:::i;:::-;5750:98;;;;5546:312;5897:2;5923:50;5965:7;5956:6;5945:9;5941:22;5923:50;:::i;:::-;5913:60;;5868:115;5292:698;;;;;:::o;5996:60::-;6024:3;6045:5;6038:12;;5996:60;;;:::o;6062:142::-;6112:9;6145:53;6163:34;6172:24;6190:5;6172:24;:::i;:::-;6163:34;:::i;:::-;6145:53;:::i;:::-;6132:66;;6062:142;;;:::o;6210:126::-;6260:9;6293:37;6324:5;6293:37;:::i;:::-;6280:50;;6210:126;;;:::o;6342:153::-;6419:9;6452:37;6483:5;6452:37;:::i;:::-;6439:50;;6342:153;;;:::o;6501:185::-;6615:64;6673:5;6615:64;:::i;:::-;6610:3;6603:77;6501:185;;:::o;6692:276::-;6812:4;6850:2;6839:9;6835:18;6827:26;;6863:98;6958:1;6947:9;6943:17;6934:6;6863:98;:::i;:::-;6692:276;;;;:::o;6974:118::-;7061:24;7079:5;7061:24;:::i;:::-;7056:3;7049:37;6974:118;;:::o;7098:222::-;7191:4;7229:2;7218:9;7214:18;7206:26;;7242:71;7310:1;7299:9;7295:17;7286:6;7242:71;:::i;:::-;7098:222;;;;:::o;7326:329::-;7385:6;7434:2;7422:9;7413:7;7409:23;7405:32;7402:119;;;7440:79;;:::i;:::-;7402:119;7560:1;7585:53;7630:7;7621:6;7610:9;7606:22;7585:53;:::i;:::-;7575:63;;7531:117;7326:329;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:118::-;8373:24;8391:5;8373:24;:::i;:::-;8368:3;8361:37;8286:118;;:::o;8410:222::-;8503:4;8541:2;8530:9;8526:18;8518:26;;8554:71;8622:1;8611:9;8607:17;8598:6;8554:71;:::i;:::-;8410:222;;;;:::o;8638:86::-;8673:7;8713:4;8706:5;8702:16;8691:27;;8638:86;;;:::o;8730:112::-;8813:22;8829:5;8813:22;:::i;:::-;8808:3;8801:35;8730:112;;:::o;8848:214::-;8937:4;8975:2;8964:9;8960:18;8952:26;;8988:67;9052:1;9041:9;9037:17;9028:6;8988:67;:::i;:::-;8848:214;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9420:568::-;9493:8;9503:6;9553:3;9546:4;9538:6;9534:17;9530:27;9520:122;;9561:79;;:::i;:::-;9520:122;9674:6;9661:20;9651:30;;9704:18;9696:6;9693:30;9690:117;;;9726:79;;:::i;:::-;9690:117;9840:4;9832:6;9828:17;9816:29;;9894:3;9886:4;9878:6;9874:17;9864:8;9860:32;9857:41;9854:128;;;9901:79;;:::i;:::-;9854:128;9420:568;;;;;:::o;9994:934::-;10116:6;10124;10132;10140;10189:2;10177:9;10168:7;10164:23;10160:32;10157:119;;;10195:79;;:::i;:::-;10157:119;10343:1;10332:9;10328:17;10315:31;10373:18;10365:6;10362:30;10359:117;;;10395:79;;:::i;:::-;10359:117;10508:80;10580:7;10571:6;10560:9;10556:22;10508:80;:::i;:::-;10490:98;;;;10286:312;10665:2;10654:9;10650:18;10637:32;10696:18;10688:6;10685:30;10682:117;;;10718:79;;:::i;:::-;10682:117;10831:80;10903:7;10894:6;10883:9;10879:22;10831:80;:::i;:::-;10813:98;;;;10608:313;9994:934;;;;;;;:::o;10934:468::-;10999:6;11007;11056:2;11044:9;11035:7;11031:23;11027:32;11024:119;;;11062:79;;:::i;:::-;11024:119;11182:1;11207:53;11252:7;11243:6;11232:9;11228:22;11207:53;:::i;:::-;11197:63;;11153:117;11309:2;11335:50;11377:7;11368:6;11357:9;11353:22;11335:50;:::i;:::-;11325:60;;11280:115;10934:468;;;;;:::o;11408:474::-;11476:6;11484;11533:2;11521:9;11512:7;11508:23;11504:32;11501:119;;;11539:79;;:::i;:::-;11501:119;11659:1;11684:53;11729:7;11720:6;11709:9;11705:22;11684:53;:::i;:::-;11674:63;;11630:117;11786:2;11812:53;11857:7;11848:6;11837:9;11833:22;11812:53;:::i;:::-;11802:63;;11757:118;11408:474;;;;;:::o;11888:::-;11956:6;11964;12013:2;12001:9;11992:7;11988:23;11984:32;11981:119;;;12019:79;;:::i;:::-;11981:119;12139:1;12164:53;12209:7;12200:6;12189:9;12185:22;12164:53;:::i;:::-;12154:63;;12110:117;12266:2;12292:53;12337:7;12328:6;12317:9;12313:22;12292:53;:::i;:::-;12282:63;;12237:118;11888:474;;;;;:::o;12368:323::-;12424:6;12473:2;12461:9;12452:7;12448:23;12444:32;12441:119;;;12479:79;;:::i;:::-;12441:119;12599:1;12624:50;12666:7;12657:6;12646:9;12642:22;12624:50;:::i;:::-;12614:60;;12570:114;12368:323;;;;:::o;12697:180::-;12745:77;12742:1;12735:88;12842:4;12839:1;12832:15;12866:4;12863:1;12856:15;12883:320;12927:6;12964:1;12958:4;12954:12;12944:22;;13011:1;13005:4;13001:12;13032:18;13022:81;;13088:4;13080:6;13076:17;13066:27;;13022:81;13150:2;13142:6;13139:14;13119:18;13116:38;13113:84;;13169:18;;:::i;:::-;13113:84;12934:269;12883:320;;;:::o;13209:180::-;13257:77;13254:1;13247:88;13354:4;13351:1;13344:15;13378:4;13375:1;13368:15;13395:191;13435:3;13454:20;13472:1;13454:20;:::i;:::-;13449:25;;13488:20;13506:1;13488:20;:::i;:::-;13483:25;;13531:1;13528;13524:9;13517:16;;13552:3;13549:1;13546:10;13543:36;;;13559:18;;:::i;:::-;13543:36;13395:191;;;;:::o;13592:222::-;13732:34;13728:1;13720:6;13716:14;13709:58;13801:5;13796:2;13788:6;13784:15;13777:30;13592:222;:::o;13820:366::-;13962:3;13983:67;14047:2;14042:3;13983:67;:::i;:::-;13976:74;;14059:93;14148:3;14059:93;:::i;:::-;14177:2;14172:3;14168:12;14161:19;;13820:366;;;:::o;14192:419::-;14358:4;14396:2;14385:9;14381:18;14373:26;;14445:9;14439:4;14435:20;14431:1;14420:9;14416:17;14409:47;14473:131;14599:4;14473:131;:::i;:::-;14465:139;;14192:419;;;:::o;14617:180::-;14665:77;14662:1;14655:88;14762:4;14759:1;14752:15;14786:4;14783:1;14776:15;14803:233;14842:3;14865:24;14883:5;14865:24;:::i;:::-;14856:33;;14911:66;14904:5;14901:77;14898:103;;14981:18;;:::i;:::-;14898:103;15028:1;15021:5;15017:13;15010:20;;14803:233;;;:::o;15042:166::-;15182:18;15178:1;15170:6;15166:14;15159:42;15042:166;:::o;15214:366::-;15356:3;15377:67;15441:2;15436:3;15377:67;:::i;:::-;15370:74;;15453:93;15542:3;15453:93;:::i;:::-;15571:2;15566:3;15562:12;15555:19;;15214:366;;;:::o;15586:419::-;15752:4;15790:2;15779:9;15775:18;15767:26;;15839:9;15833:4;15829:20;15825:1;15814:9;15810:17;15803:47;15867:131;15993:4;15867:131;:::i;:::-;15859:139;;15586:419;;;:::o;16011:171::-;16151:23;16147:1;16139:6;16135:14;16128:47;16011:171;:::o;16188:366::-;16330:3;16351:67;16415:2;16410:3;16351:67;:::i;:::-;16344:74;;16427:93;16516:3;16427:93;:::i;:::-;16545:2;16540:3;16536:12;16529:19;;16188:366;;;:::o;16560:419::-;16726:4;16764:2;16753:9;16749:18;16741:26;;16813:9;16807:4;16803:20;16799:1;16788:9;16784:17;16777:47;16841:131;16967:4;16841:131;:::i;:::-;16833:139;;16560:419;;;:::o;16985:170::-;17125:22;17121:1;17113:6;17109:14;17102:46;16985:170;:::o;17161:366::-;17303:3;17324:67;17388:2;17383:3;17324:67;:::i;:::-;17317:74;;17400:93;17489:3;17400:93;:::i;:::-;17518:2;17513:3;17509:12;17502:19;;17161:366;;;:::o;17533:419::-;17699:4;17737:2;17726:9;17722:18;17714:26;;17786:9;17780:4;17776:20;17772:1;17761:9;17757:17;17750:47;17814:131;17940:4;17814:131;:::i;:::-;17806:139;;17533:419;;;:::o;17958:171::-;18098:23;18094:1;18086:6;18082:14;18075:47;17958:171;:::o;18135:366::-;18277:3;18298:67;18362:2;18357:3;18298:67;:::i;:::-;18291:74;;18374:93;18463:3;18374:93;:::i;:::-;18492:2;18487:3;18483:12;18476:19;;18135:366;;;:::o;18507:419::-;18673:4;18711:2;18700:9;18696:18;18688:26;;18760:9;18754:4;18750:20;18746:1;18735:9;18731:17;18724:47;18788:131;18914:4;18788:131;:::i;:::-;18780:139;;18507:419;;;:::o;18932:332::-;19053:4;19091:2;19080:9;19076:18;19068:26;;19104:71;19172:1;19161:9;19157:17;19148:6;19104:71;:::i;:::-;19185:72;19253:2;19242:9;19238:18;19229:6;19185:72;:::i;:::-;18932:332;;;;;:::o;19270:173::-;19410:25;19406:1;19398:6;19394:14;19387:49;19270:173;:::o;19449:366::-;19591:3;19612:67;19676:2;19671:3;19612:67;:::i;:::-;19605:74;;19688:93;19777:3;19688:93;:::i;:::-;19806:2;19801:3;19797:12;19790:19;;19449:366;;;:::o;19821:419::-;19987:4;20025:2;20014:9;20010:18;20002:26;;20074:9;20068:4;20064:20;20060:1;20049:9;20045:17;20038:47;20102:131;20228:4;20102:131;:::i;:::-;20094:139;;19821:419;;;:::o;20246:224::-;20386:34;20382:1;20374:6;20370:14;20363:58;20455:7;20450:2;20442:6;20438:15;20431:32;20246:224;:::o;20476:366::-;20618:3;20639:67;20703:2;20698:3;20639:67;:::i;:::-;20632:74;;20715:93;20804:3;20715:93;:::i;:::-;20833:2;20828:3;20824:12;20817:19;;20476:366;;;:::o;20848:419::-;21014:4;21052:2;21041:9;21037:18;21029:26;;21101:9;21095:4;21091:20;21087:1;21076:9;21072:17;21065:47;21129:131;21255:4;21129:131;:::i;:::-;21121:139;;20848:419;;;:::o;21273:410::-;21313:7;21336:20;21354:1;21336:20;:::i;:::-;21331:25;;21370:20;21388:1;21370:20;:::i;:::-;21365:25;;21425:1;21422;21418:9;21447:30;21465:11;21447:30;:::i;:::-;21436:41;;21626:1;21617:7;21613:15;21610:1;21607:22;21587:1;21580:9;21560:83;21537:139;;21656:18;;:::i;:::-;21537:139;21321:362;21273:410;;;;:::o;21689:180::-;21737:77;21734:1;21727:88;21834:4;21831:1;21824:15;21858:4;21855:1;21848:15;21875:185;21915:1;21932:20;21950:1;21932:20;:::i;:::-;21927:25;;21966:20;21984:1;21966:20;:::i;:::-;21961:25;;22005:1;21995:35;;22010:18;;:::i;:::-;21995:35;22052:1;22049;22045:9;22040:14;;21875:185;;;;:::o;22066:247::-;22206:34;22202:1;22194:6;22190:14;22183:58;22275:30;22270:2;22262:6;22258:15;22251:55;22066:247;:::o;22319:366::-;22461:3;22482:67;22546:2;22541:3;22482:67;:::i;:::-;22475:74;;22558:93;22647:3;22558:93;:::i;:::-;22676:2;22671:3;22667:12;22660:19;;22319:366;;;:::o;22691:419::-;22857:4;22895:2;22884:9;22880:18;22872:26;;22944:9;22938:4;22934:20;22930:1;22919:9;22915:17;22908:47;22972:131;23098:4;22972:131;:::i;:::-;22964:139;;22691:419;;;:::o;23116:246::-;23256:34;23252:1;23244:6;23240:14;23233:58;23325:29;23320:2;23312:6;23308:15;23301:54;23116:246;:::o;23368:366::-;23510:3;23531:67;23595:2;23590:3;23531:67;:::i;:::-;23524:74;;23607:93;23696:3;23607:93;:::i;:::-;23725:2;23720:3;23716:12;23709:19;;23368:366;;;:::o;23740:419::-;23906:4;23944:2;23933:9;23929:18;23921:26;;23993:9;23987:4;23983:20;23979:1;23968:9;23964:17;23957:47;24021:131;24147:4;24021:131;:::i;:::-;24013:139;;23740:419;;;:::o;24165:227::-;24305:34;24301:1;24293:6;24289:14;24282:58;24374:10;24369:2;24361:6;24357:15;24350:35;24165:227;:::o;24398:366::-;24540:3;24561:67;24625:2;24620:3;24561:67;:::i;:::-;24554:74;;24637:93;24726:3;24637:93;:::i;:::-;24755:2;24750:3;24746:12;24739:19;;24398:366;;;:::o;24770:419::-;24936:4;24974:2;24963:9;24959:18;24951:26;;25023:9;25017:4;25013:20;25009:1;24998:9;24994:17;24987:47;25051:131;25177:4;25051:131;:::i;:::-;25043:139;;24770:419;;;:::o;25195:230::-;25335:34;25331:1;25323:6;25319:14;25312:58;25404:13;25399:2;25391:6;25387:15;25380:38;25195:230;:::o;25431:366::-;25573:3;25594:67;25658:2;25653:3;25594:67;:::i;:::-;25587:74;;25670:93;25759:3;25670:93;:::i;:::-;25788:2;25783:3;25779:12;25772:19;;25431:366;;;:::o;25803:419::-;25969:4;26007:2;25996:9;25992:18;25984:26;;26056:9;26050:4;26046:20;26042:1;26031:9;26027:17;26020:47;26084:131;26210:4;26084:131;:::i;:::-;26076:139;;25803:419;;;:::o;26228:147::-;26329:11;26366:3;26351:18;;26228:147;;;;:::o;26381:114::-;;:::o;26501:398::-;26660:3;26681:83;26762:1;26757:3;26681:83;:::i;:::-;26674:90;;26773:93;26862:3;26773:93;:::i;:::-;26891:1;26886:3;26882:11;26875:18;;26501:398;;;:::o;26905:379::-;27089:3;27111:147;27254:3;27111:147;:::i;:::-;27104:154;;27275:3;27268:10;;26905:379;;;:::o;27290:143::-;27347:5;27378:6;27372:13;27363:22;;27394:33;27421:5;27394:33;:::i;:::-;27290:143;;;;:::o;27439:351::-;27509:6;27558:2;27546:9;27537:7;27533:23;27529:32;27526:119;;;27564:79;;:::i;:::-;27526:119;27684:1;27709:64;27765:7;27756:6;27745:9;27741:22;27709:64;:::i;:::-;27699:74;;27655:128;27439:351;;;;:::o;27796:159::-;27936:11;27932:1;27924:6;27920:14;27913:35;27796:159;:::o;27961:365::-;28103:3;28124:66;28188:1;28183:3;28124:66;:::i;:::-;28117:73;;28199:93;28288:3;28199:93;:::i;:::-;28317:2;28312:3;28308:12;28301:19;;27961:365;;;:::o;28332:419::-;28498:4;28536:2;28525:9;28521:18;28513:26;;28585:9;28579:4;28575:20;28571:1;28560:9;28556:17;28549:47;28613:131;28739:4;28613:131;:::i;:::-;28605:139;;28332:419;;;:::o;28757:332::-;28878:4;28916:2;28905:9;28901:18;28893:26;;28929:71;28997:1;28986:9;28982:17;28973:6;28929:71;:::i;:::-;29010:72;29078:2;29067:9;29063:18;29054:6;29010:72;:::i;:::-;28757:332;;;;;:::o;29095:137::-;29149:5;29180:6;29174:13;29165:22;;29196:30;29220:5;29196:30;:::i;:::-;29095:137;;;;:::o;29238:345::-;29305:6;29354:2;29342:9;29333:7;29329:23;29325:32;29322:119;;;29360:79;;:::i;:::-;29322:119;29480:1;29505:61;29558:7;29549:6;29538:9;29534:22;29505:61;:::i;:::-;29495:71;;29451:125;29238:345;;;;:::o;29589:143::-;29646:5;29677:6;29671:13;29662:22;;29693:33;29720:5;29693:33;:::i;:::-;29589:143;;;;:::o;29738:351::-;29808:6;29857:2;29845:9;29836:7;29832:23;29828:32;29825:119;;;29863:79;;:::i;:::-;29825:119;29983:1;30008:64;30064:7;30055:6;30044:9;30040:22;30008:64;:::i;:::-;29998:74;;29954:128;29738:351;;;;:::o;30095:332::-;30216:4;30254:2;30243:9;30239:18;30231:26;;30267:71;30335:1;30324:9;30320:17;30311:6;30267:71;:::i;:::-;30348:72;30416:2;30405:9;30401:18;30392:6;30348:72;:::i;:::-;30095:332;;;;;:::o;30433:85::-;30478:7;30507:5;30496:16;;30433:85;;;:::o;30524:158::-;30582:9;30615:61;30633:42;30642:32;30668:5;30642:32;:::i;:::-;30633:42;:::i;:::-;30615:61;:::i;:::-;30602:74;;30524:158;;;:::o;30688:147::-;30783:45;30822:5;30783:45;:::i;:::-;30778:3;30771:58;30688:147;;:::o;30841:807::-;31090:4;31128:3;31117:9;31113:19;31105:27;;31142:71;31210:1;31199:9;31195:17;31186:6;31142:71;:::i;:::-;31223:72;31291:2;31280:9;31276:18;31267:6;31223:72;:::i;:::-;31305:80;31381:2;31370:9;31366:18;31357:6;31305:80;:::i;:::-;31395;31471:2;31460:9;31456:18;31447:6;31395:80;:::i;:::-;31485:73;31553:3;31542:9;31538:19;31529:6;31485:73;:::i;:::-;31568;31636:3;31625:9;31621:19;31612:6;31568:73;:::i;:::-;30841:807;;;;;;;;;:::o;31654:663::-;31742:6;31750;31758;31807:2;31795:9;31786:7;31782:23;31778:32;31775:119;;;31813:79;;:::i;:::-;31775:119;31933:1;31958:64;32014:7;32005:6;31994:9;31990:22;31958:64;:::i;:::-;31948:74;;31904:128;32071:2;32097:64;32153:7;32144:6;32133:9;32129:22;32097:64;:::i;:::-;32087:74;;32042:129;32210:2;32236:64;32292:7;32283:6;32272:9;32268:22;32236:64;:::i;:::-;32226:74;;32181:129;31654:663;;;;;:::o;32323:225::-;32463:34;32459:1;32451:6;32447:14;32440:58;32532:8;32527:2;32519:6;32515:15;32508:33;32323:225;:::o;32554:366::-;32696:3;32717:67;32781:2;32776:3;32717:67;:::i;:::-;32710:74;;32793:93;32882:3;32793:93;:::i;:::-;32911:2;32906:3;32902:12;32895:19;;32554:366;;;:::o;32926:419::-;33092:4;33130:2;33119:9;33115:18;33107:26;;33179:9;33173:4;33169:20;33165:1;33154:9;33150:17;33143:47;33207:131;33333:4;33207:131;:::i;:::-;33199:139;;32926:419;;;:::o;33351:223::-;33491:34;33487:1;33479:6;33475:14;33468:58;33560:6;33555:2;33547:6;33543:15;33536:31;33351:223;:::o;33580:366::-;33722:3;33743:67;33807:2;33802:3;33743:67;:::i;:::-;33736:74;;33819:93;33908:3;33819:93;:::i;:::-;33937:2;33932:3;33928:12;33921:19;;33580:366;;;:::o;33952:419::-;34118:4;34156:2;34145:9;34141:18;34133:26;;34205:9;34199:4;34195:20;34191:1;34180:9;34176:17;34169:47;34233:131;34359:4;34233:131;:::i;:::-;34225:139;;33952:419;;;:::o;34377:221::-;34517:34;34513:1;34505:6;34501:14;34494:58;34586:4;34581:2;34573:6;34569:15;34562:29;34377:221;:::o;34604:366::-;34746:3;34767:67;34831:2;34826:3;34767:67;:::i;:::-;34760:74;;34843:93;34932:3;34843:93;:::i;:::-;34961:2;34956:3;34952:12;34945:19;;34604:366;;;:::o;34976:419::-;35142:4;35180:2;35169:9;35165:18;35157:26;;35229:9;35223:4;35219:20;35215:1;35204:9;35200:17;35193:47;35257:131;35383:4;35257:131;:::i;:::-;35249:139;;34976:419;;;:::o;35401:182::-;35541:34;35537:1;35529:6;35525:14;35518:58;35401:182;:::o;35589:366::-;35731:3;35752:67;35816:2;35811:3;35752:67;:::i;:::-;35745:74;;35828:93;35917:3;35828:93;:::i;:::-;35946:2;35941:3;35937:12;35930:19;;35589:366;;;:::o;35961:419::-;36127:4;36165:2;36154:9;36150:18;36142:26;;36214:9;36208:4;36204:20;36200:1;36189:9;36185:17;36178:47;36242:131;36368:4;36242:131;:::i;:::-;36234:139;;35961:419;;;:::o;36386:179::-;36526:31;36522:1;36514:6;36510:14;36503:55;36386:179;:::o;36571:366::-;36713:3;36734:67;36798:2;36793:3;36734:67;:::i;:::-;36727:74;;36810:93;36899:3;36810:93;:::i;:::-;36928:2;36923:3;36919:12;36912:19;;36571:366;;;:::o;36943:419::-;37109:4;37147:2;37136:9;37132:18;37124:26;;37196:9;37190:4;37186:20;37182:1;37171:9;37167:17;37160:47;37224:131;37350:4;37224:131;:::i;:::-;37216:139;;36943:419;;;:::o;37368:224::-;37508:34;37504:1;37496:6;37492:14;37485:58;37577:7;37572:2;37564:6;37560:15;37553:32;37368:224;:::o;37598:366::-;37740:3;37761:67;37825:2;37820:3;37761:67;:::i;:::-;37754:74;;37837:93;37926:3;37837:93;:::i;:::-;37955:2;37950:3;37946:12;37939:19;;37598:366;;;:::o;37970:419::-;38136:4;38174:2;38163:9;38159:18;38151:26;;38223:9;38217:4;38213:20;38209:1;38198:9;38194:17;38187:47;38251:131;38377:4;38251:131;:::i;:::-;38243:139;;37970:419;;;:::o;38395:222::-;38535:34;38531:1;38523:6;38519:14;38512:58;38604:5;38599:2;38591:6;38587:15;38580:30;38395:222;:::o;38623:366::-;38765:3;38786:67;38850:2;38845:3;38786:67;:::i;:::-;38779:74;;38862:93;38951:3;38862:93;:::i;:::-;38980:2;38975:3;38971:12;38964:19;;38623:366;;;:::o;38995:419::-;39161:4;39199:2;39188:9;39184:18;39176:26;;39248:9;39242:4;39238:20;39234:1;39223:9;39219:17;39212:47;39276:131;39402:4;39276:131;:::i;:::-;39268:139;;38995:419;;;:::o;39420:179::-;39560:31;39556:1;39548:6;39544:14;39537:55;39420:179;:::o;39605:366::-;39747:3;39768:67;39832:2;39827:3;39768:67;:::i;:::-;39761:74;;39844:93;39933:3;39844:93;:::i;:::-;39962:2;39957:3;39953:12;39946:19;;39605:366;;;:::o;39977:419::-;40143:4;40181:2;40170:9;40166:18;40158:26;;40230:9;40224:4;40220:20;40216:1;40205:9;40201:17;40194:47;40258:131;40384:4;40258:131;:::i;:::-;40250:139;;39977:419;;;:::o;40402:156::-;40542:8;40538:1;40530:6;40526:14;40519:32;40402:156;:::o;40564:365::-;40706:3;40727:66;40791:1;40786:3;40727:66;:::i;:::-;40720:73;;40802:93;40891:3;40802:93;:::i;:::-;40920:2;40915:3;40911:12;40904:19;;40564:365;;;:::o;40935:419::-;41101:4;41139:2;41128:9;41124:18;41116:26;;41188:9;41182:4;41178:20;41174:1;41163:9;41159:17;41152:47;41216:131;41342:4;41216:131;:::i;:::-;41208:139;;40935:419;;;:::o;41360:241::-;41500:34;41496:1;41488:6;41484:14;41477:58;41569:24;41564:2;41556:6;41552:15;41545:49;41360:241;:::o;41607:366::-;41749:3;41770:67;41834:2;41829:3;41770:67;:::i;:::-;41763:74;;41846:93;41935:3;41846:93;:::i;:::-;41964:2;41959:3;41955:12;41948:19;;41607:366;;;:::o;41979:419::-;42145:4;42183:2;42172:9;42168:18;42160:26;;42232:9;42226:4;42222:20;42218:1;42207:9;42203:17;42196:47;42260:131;42386:4;42260:131;:::i;:::-;42252:139;;41979:419;;;:::o;42404:176::-;42544:28;42540:1;42532:6;42528:14;42521:52;42404:176;:::o;42586:366::-;42728:3;42749:67;42813:2;42808:3;42749:67;:::i;:::-;42742:74;;42825:93;42914:3;42825:93;:::i;:::-;42943:2;42938:3;42934:12;42927:19;;42586:366;;;:::o;42958:419::-;43124:4;43162:2;43151:9;43147:18;43139:26;;43211:9;43205:4;43201:20;43197:1;43186:9;43182:17;43175:47;43239:131;43365:4;43239:131;:::i;:::-;43231:139;;42958:419;;;:::o;43383:242::-;43523:34;43519:1;43511:6;43507:14;43500:58;43592:25;43587:2;43579:6;43575:15;43568:50;43383:242;:::o;43631:366::-;43773:3;43794:67;43858:2;43853:3;43794:67;:::i;:::-;43787:74;;43870:93;43959:3;43870:93;:::i;:::-;43988:2;43983:3;43979:12;43972:19;;43631:366;;;:::o;44003:419::-;44169:4;44207:2;44196:9;44192:18;44184:26;;44256:9;44250:4;44246:20;44242:1;44231:9;44227:17;44220:47;44284:131;44410:4;44284:131;:::i;:::-;44276:139;;44003:419;;;:::o;44428:194::-;44468:4;44488:20;44506:1;44488:20;:::i;:::-;44483:25;;44522:20;44540:1;44522:20;:::i;:::-;44517:25;;44566:1;44563;44559:9;44551:17;;44590:1;44584:4;44581:11;44578:37;;;44595:18;;:::i;:::-;44578:37;44428:194;;;;:::o;44628:220::-;44768:34;44764:1;44756:6;44752:14;44745:58;44837:3;44832:2;44824:6;44820:15;44813:28;44628:220;:::o;44854:366::-;44996:3;45017:67;45081:2;45076:3;45017:67;:::i;:::-;45010:74;;45093:93;45182:3;45093:93;:::i;:::-;45211:2;45206:3;45202:12;45195:19;;44854:366;;;:::o;45226:419::-;45392:4;45430:2;45419:9;45415:18;45407:26;;45479:9;45473:4;45469:20;45465:1;45454:9;45450:17;45443:47;45507:131;45633:4;45507:131;:::i;:::-;45499:139;;45226:419;;;:::o;45651:221::-;45791:34;45787:1;45779:6;45775:14;45768:58;45860:4;45855:2;45847:6;45843:15;45836:29;45651:221;:::o;45878:366::-;46020:3;46041:67;46105:2;46100:3;46041:67;:::i;:::-;46034:74;;46117:93;46206:3;46117:93;:::i;:::-;46235:2;46230:3;46226:12;46219:19;;45878:366;;;:::o;46250:419::-;46416:4;46454:2;46443:9;46439:18;46431:26;;46503:9;46497:4;46493:20;46489:1;46478:9;46474:17;46467:47;46531:131;46657:4;46531:131;:::i;:::-;46523:139;;46250:419;;;:::o;46675:225::-;46815:34;46811:1;46803:6;46799:14;46792:58;46884:8;46879:2;46871:6;46867:15;46860:33;46675:225;:::o;46906:366::-;47048:3;47069:67;47133:2;47128:3;47069:67;:::i;:::-;47062:74;;47145:93;47234:3;47145:93;:::i;:::-;47263:2;47258:3;47254:12;47247:19;;46906:366;;;:::o;47278:419::-;47444:4;47482:2;47471:9;47467:18;47459:26;;47531:9;47525:4;47521:20;47517:1;47506:9;47502:17;47495:47;47559:131;47685:4;47559:131;:::i;:::-;47551:139;;47278:419;;;:::o;47703:442::-;47852:4;47890:2;47879:9;47875:18;47867:26;;47903:71;47971:1;47960:9;47956:17;47947:6;47903:71;:::i;:::-;47984:72;48052:2;48041:9;48037:18;48028:6;47984:72;:::i;:::-;48066;48134:2;48123:9;48119:18;48110:6;48066:72;:::i;:::-;47703:442;;;;;;:::o;48151:180::-;48199:77;48196:1;48189:88;48296:4;48293:1;48286:15;48320:4;48317:1;48310:15;48337:114;48404:6;48438:5;48432:12;48422:22;;48337:114;;;:::o;48457:184::-;48556:11;48590:6;48585:3;48578:19;48630:4;48625:3;48621:14;48606:29;;48457:184;;;;:::o;48647:132::-;48714:4;48737:3;48729:11;;48767:4;48762:3;48758:14;48750:22;;48647:132;;;:::o;48785:108::-;48862:24;48880:5;48862:24;:::i;:::-;48857:3;48850:37;48785:108;;:::o;48899:179::-;48968:10;48989:46;49031:3;49023:6;48989:46;:::i;:::-;49067:4;49062:3;49058:14;49044:28;;48899:179;;;;:::o;49084:113::-;49154:4;49186;49181:3;49177:14;49169:22;;49084:113;;;:::o;49233:732::-;49352:3;49381:54;49429:5;49381:54;:::i;:::-;49451:86;49530:6;49525:3;49451:86;:::i;:::-;49444:93;;49561:56;49611:5;49561:56;:::i;:::-;49640:7;49671:1;49656:284;49681:6;49678:1;49675:13;49656:284;;;49757:6;49751:13;49784:63;49843:3;49828:13;49784:63;:::i;:::-;49777:70;;49870:60;49923:6;49870:60;:::i;:::-;49860:70;;49716:224;49703:1;49700;49696:9;49691:14;;49656:284;;;49660:14;49956:3;49949:10;;49357:608;;;49233:732;;;;:::o;49971:831::-;50234:4;50272:3;50261:9;50257:19;50249:27;;50286:71;50354:1;50343:9;50339:17;50330:6;50286:71;:::i;:::-;50367:80;50443:2;50432:9;50428:18;50419:6;50367:80;:::i;:::-;50494:9;50488:4;50484:20;50479:2;50468:9;50464:18;50457:48;50522:108;50625:4;50616:6;50522:108;:::i;:::-;50514:116;;50640:72;50708:2;50697:9;50693:18;50684:6;50640:72;:::i;:::-;50722:73;50790:3;50779:9;50775:19;50766:6;50722:73;:::i;:::-;49971:831;;;;;;;;:::o

Swarm Source

ipfs://a00394848120fa0ffab1d226388d08a0b293b1c8d1cb7d677f34905fccf5e06f
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.