Contract 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x221dc283f06b9bc5b25cf48fd8260054a910386d1387b30afb392476b98dd96fMint And Stake M...448894742022-12-09 16:20:033 hrs 23 mins ago0x27a0443e8483803a3ed364e40a7922d6b4d3e545 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00019746
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413Handle Rewards448830452022-12-09 15:52:213 hrs 51 mins ago0x957bc3c9a6e2822a9d9ccf9fe808301a8757b8cd IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00022775
0x6b8387c2bf9477e64a5dcb537499d53f365e2970efe6f89f93ea18d5198e2438Handle Rewards448820712022-12-09 15:48:033 hrs 55 mins ago0x4426023bbeac104ea9f6f816c979f4e39c174957 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00085758
0x265db13c5f701ccd0e1598531971ac4b73b246297ef9c39e1d01b2c660dc896dHandle Rewards448819932022-12-09 15:47:413 hrs 55 mins ago0x4426023bbeac104ea9f6f816c979f4e39c174957 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00081997
0x1bc4ea50c6bb40973e609d516f8eca5ce6ec054c20a967894d137a025d47809fHandle Rewards448356652022-12-09 12:00:237 hrs 43 mins ago0xeba1355ff04d111d2e5f5c8e20f729b9ff57ecf5 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00019023
0x460596928dacfdcdf1981db0e07c6a25e6d8d321538726ee10572705a4060480Unstake And Rede...448271452022-12-09 11:18:568 hrs 24 mins ago0xf69ea6646cf682262e84cd7c67133eac59cef07b IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00017837
0x5b2d67edc8cc893a2ed5625a82efad31bfbd638ac201a76b7b699cfc2c164e7bMint And Stake M...448112012022-12-09 9:47:539 hrs 55 mins ago0xe0a09b49721fbd8b23c67a3a9fde44be4412b8fd IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0.12 ETH0.00018717
0xe8be15ae3e0320108739f51bc9f08eb2bfb2895aeabe6ce8833dd2fd474ab6b1Handle Rewards447979352022-12-09 8:31:5811 hrs 11 mins ago0x486d25472d3729b8324e5ded76020d42d0ad7835 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.0002026
0xb85da868100d5bc3f0b10269404f14cdbb6cb3a29258b2d11d253c7597d368f5Mint And Stake M...447827092022-12-09 7:02:1912 hrs 41 mins ago0x084952551ce21ee68a0bd686eb5a758d31e4d8d0 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00018236
0x7d429b168d3451622bc15d21aa2b052d5962fe1bac6e01a1547cd139c0aee345Unstake And Rede...447795562022-12-09 6:43:5012 hrs 59 mins ago0x8482c400a302d2a2fb354f9dd7b0edea217b2390 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00015981
0x432714d56b48f09b71793e2a7a9126debfbaf339f39ed90f491b408c18e85dabHandle Rewards447753752022-12-09 6:19:2413 hrs 24 mins ago0x8482c400a302d2a2fb354f9dd7b0edea217b2390 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00005501
0x8cafd8da7bbe875ae3b9031e2153afa2c516edc3e2ba48e9201a5d7ce11ed133Unstake And Rede...447733832022-12-09 6:07:3813 hrs 35 mins ago0xb9d24761ebb3e3a88b8cf20e77f56ccf026a2044 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00016567
0xd402d1a9b0191ac646f9e1155b989c58e39f3d8d7b67de65b1ffc198461fce51Handle Rewards447732092022-12-09 6:06:3113 hrs 37 mins ago0xb9d24761ebb3e3a88b8cf20e77f56ccf026a2044 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00004426
0x562d9a9347591f58c03978cf0b2feeba34535234ef2d0771c63d3c34bdacfc5bHandle Rewards447680282022-12-09 5:33:2114 hrs 10 mins ago0x395ef2d7a5d499b62ac479064b7eaa51ae823a22 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.0000285
0x2c5f9af25f44b9ec7895de92f14a51baf34b85cce6d0cf5f2d647d6834236e5aHandle Rewards447667452022-12-09 5:24:4814 hrs 18 mins ago0xaea90572acd703fa8d6b72c2c2afbc83ed0e7272 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00015467
0x0c48f23a9ffc7ed13a5e96cc1c82e298cf46a1a439222df5dc3d22b1c74aaed9Mint And Stake M...447290622022-12-09 1:02:3718 hrs 40 mins ago0x6384eb46391b8c0fa1d3118da3e0a0c2de81ea2a IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00016657
0x5e2bd8ecfc1b418bc1ca34b8cc18061292f9ba6c9c32b3cd70b2c9c06b1fb3b8Handle Rewards447159482022-12-08 23:15:1820 hrs 28 mins ago0xbdbaafe12313ca57b11e8c759579365e69a05a7e IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00004589
0x1b5c48b161c6b62cc137fa1d353e1bfdf6b51c113621c68242d3b9bea34c735cUnstake And Rede...447158542022-12-08 23:14:3320 hrs 29 mins ago0xbdbaafe12313ca57b11e8c759579365e69a05a7e IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.0001678
0xf885a3f234a2d76002a0706ac00a755fcfa1614748374d0f066f6a2c308b8cccHandle Rewards447149542022-12-08 23:07:4420 hrs 35 mins ago0x651774e4d953e6dd38e0fd714568025d0ef02e89 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00004548
0x26696a9cf8a696fab4d031acc7c4d43d987aae36c3e02b3225630a6f1da1f364Handle Rewards447147332022-12-08 23:06:0120 hrs 37 mins ago0x651774e4d953e6dd38e0fd714568025d0ef02e89 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00004479
0x1bb2575a9baa5a03b8c9c844cc3b0e4a6e543296a962b0847c6e7f6578e96f12Mint And Stake M...447122602022-12-08 22:47:2620 hrs 56 mins ago0x6384eb46391b8c0fa1d3118da3e0a0c2de81ea2a IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0 ETH0.00016725
0xe9bc32b7607ed44383e981161d48f9b65c1af08ab5fbc3d54700cfc9b8a995feMint And Stake M...446962892022-12-08 21:04:2922 hrs 39 mins ago0xf40a9f1f2a40ac7bacf538fa91aad91a35772f9f IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0.0001 ETH0.00017562
0xcba004a843eed68b8211fe5f9ef6958b0df35a19e38d7a717924d7086e37bb6fMint And Stake M...446921602022-12-08 20:42:5123 hrs ago0x371af7210707273910bff90ceae6efeb2f61e404 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0.000067082043108 ETH0.00016726
0x0056dbef65a5ab624ee5c9f2b4c856abd2bd8219973bfee36600cb3a8c40bf73Mint And Stake M...446918532022-12-08 20:40:5723 hrs 2 mins ago0x371af7210707273910bff90ceae6efeb2f61e404 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0.000006714000487 ETH0.00017237
0x3ecef1cbe57d5a231325483b2f1f7e06b050bfd132b61a8409d9adb28f515db2Mint And Stake M...446917232022-12-08 20:40:0823 hrs 3 mins ago0x371af7210707273910bff90ceae6efeb2f61e404 IN  0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b0.000006716783079 ETH0.00017948
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x221dc283f06b9bc5b25cf48fd8260054a910386d1387b30afb392476b98dd96f448894742022-12-09 16:20:033 hrs 23 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b Mycelium: fsMLP Token0 ETH
0x221dc283f06b9bc5b25cf48fd8260054a910386d1387b30afb392476b98dd96f448894742022-12-09 16:20:033 hrs 23 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0xf0bfb95087e611897096982c33b6934c8abfa0830 ETH
0x221dc283f06b9bc5b25cf48fd8260054a910386d1387b30afb392476b98dd96f448894742022-12-09 16:20:033 hrs 23 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x2de28ab4827112cd3f89e5353ca5a8d80db7018f0 ETH
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413448830452022-12-09 15:52:213 hrs 51 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b Mycelium: fsMLP Token0 ETH
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413448830452022-12-09 15:52:213 hrs 51 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0xf0bfb95087e611897096982c33b6934c8abfa0830 ETH
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413448830452022-12-09 15:52:213 hrs 51 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x2de28ab4827112cd3f89e5353ca5a8d80db7018f0 ETH
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413448830452022-12-09 15:52:213 hrs 51 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x82af49447d8a07e3bd95bd0d56f35241523fbab10 ETH
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413448830452022-12-09 15:52:213 hrs 51 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0xf0bfb95087e611897096982c33b6934c8abfa0830 ETH
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413448830452022-12-09 15:52:213 hrs 51 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x0ca0147c21f9db9d4627e6a996342a11d25972c50 ETH
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413448830452022-12-09 15:52:213 hrs 51 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b Mycelium: fsMLP Token0 ETH
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413448830452022-12-09 15:52:213 hrs 51 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x2bc8e28f5d41a4b112bc62eb7db1b757c85f37ff0 ETH
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413448830452022-12-09 15:52:213 hrs 51 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0xcb6ac1eacf498118f4609462c0979ffb3ebd18210 ETH
0xf037317bb0a6e0814f27a85b6a26b002d21cf98a4398535395177df81fb48413448830452022-12-09 15:52:213 hrs 51 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x67ff0614f6e4e04362b3b919adc7371884895ae80 ETH
0x6b8387c2bf9477e64a5dcb537499d53f365e2970efe6f89f93ea18d5198e2438448820712022-12-09 15:48:033 hrs 55 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b Mycelium: fsMLP Token0 ETH
0x6b8387c2bf9477e64a5dcb537499d53f365e2970efe6f89f93ea18d5198e2438448820712022-12-09 15:48:033 hrs 55 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x2bc8e28f5d41a4b112bc62eb7db1b757c85f37ff0 ETH
0x265db13c5f701ccd0e1598531971ac4b73b246297ef9c39e1d01b2c660dc896d448819932022-12-09 15:47:413 hrs 55 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0xf0bfb95087e611897096982c33b6934c8abfa0830 ETH
0x265db13c5f701ccd0e1598531971ac4b73b246297ef9c39e1d01b2c660dc896d448819932022-12-09 15:47:413 hrs 55 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x0ca0147c21f9db9d4627e6a996342a11d25972c50 ETH
0x1bc4ea50c6bb40973e609d516f8eca5ce6ec054c20a967894d137a025d47809f448356652022-12-09 12:00:237 hrs 43 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b Mycelium: fsMLP Token0 ETH
0x1bc4ea50c6bb40973e609d516f8eca5ce6ec054c20a967894d137a025d47809f448356652022-12-09 12:00:237 hrs 43 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0xf0bfb95087e611897096982c33b6934c8abfa0830 ETH
0x1bc4ea50c6bb40973e609d516f8eca5ce6ec054c20a967894d137a025d47809f448356652022-12-09 12:00:237 hrs 43 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x2de28ab4827112cd3f89e5353ca5a8d80db7018f0 ETH
0x1bc4ea50c6bb40973e609d516f8eca5ce6ec054c20a967894d137a025d47809f448356652022-12-09 12:00:237 hrs 43 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x82af49447d8a07e3bd95bd0d56f35241523fbab10 ETH
0x1bc4ea50c6bb40973e609d516f8eca5ce6ec054c20a967894d137a025d47809f448356652022-12-09 12:00:237 hrs 43 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0xf0bfb95087e611897096982c33b6934c8abfa0830 ETH
0x1bc4ea50c6bb40973e609d516f8eca5ce6ec054c20a967894d137a025d47809f448356652022-12-09 12:00:237 hrs 43 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x0ca0147c21f9db9d4627e6a996342a11d25972c50 ETH
0x1bc4ea50c6bb40973e609d516f8eca5ce6ec054c20a967894d137a025d47809f448356652022-12-09 12:00:237 hrs 43 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b Mycelium: fsMLP Token0 ETH
0x1bc4ea50c6bb40973e609d516f8eca5ce6ec054c20a967894d137a025d47809f448356652022-12-09 12:00:237 hrs 43 mins ago 0xd98d8e458f7ad22dd3c1d7a8b35c74005eb52b0b 0x2bc8e28f5d41a4b112bc62eb7db1b757c85f37ff0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RewardRouterV2

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan on 2022-08-19
*/

// Sources flattened with hardhat v2.9.3 https://hardhat.org

// File contracts/libraries/math/SafeMath.sol

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @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 sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @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) {
        // 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 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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 mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


// File contracts/libraries/token/IERC20.sol


pragma solidity 0.6.12;

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

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

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

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

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

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

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

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


// File contracts/libraries/utils/Address.sol


pragma solidity ^0.6.2;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.3._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.3._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

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

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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


// File contracts/libraries/token/SafeERC20.sol


pragma solidity 0.6.12;



/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(
            value,
            "SafeERC20: decreased allowance below zero"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}


// File contracts/libraries/utils/ReentrancyGuard.sol


pragma solidity 0.6.12;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() internal {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}


// File contracts/staking/interfaces/IRewardTracker.sol


pragma solidity 0.6.12;

interface IRewardTracker {
    function depositBalances(address _account, address _depositToken) external view returns (uint256);

    function stakedAmounts(address _account) external view returns (uint256);

    function updateRewards() external;

    function stake(address _depositToken, uint256 _amount) external;

    function stakeForAccount(
        address _fundingAccount,
        address _account,
        address _depositToken,
        uint256 _amount
    ) external;

    function unstake(address _depositToken, uint256 _amount) external;

    function unstakeForAccount(
        address _account,
        address _depositToken,
        uint256 _amount,
        address _receiver
    ) external;

    function tokensPerInterval() external view returns (uint256);

    function claim(address _receiver) external returns (uint256);

    function claimForAccount(address _account, address _receiver) external returns (uint256);

    function claimable(address _account) external view returns (uint256);

    function averageStakedAmounts(address _account) external view returns (uint256);

    function cumulativeRewards(address _account) external view returns (uint256);
}


// File contracts/staking/interfaces/IVester.sol


pragma solidity 0.6.12;

interface IVester {
    function rewardTracker() external view returns (address);

    function claimForAccount(address _account, address _receiver) external returns (uint256);

    function claimable(address _account) external view returns (uint256);

    function cumulativeClaimAmounts(address _account) external view returns (uint256);

    function claimedAmounts(address _account) external view returns (uint256);

    function pairAmounts(address _account) external view returns (uint256);

    function getVestedAmount(address _account) external view returns (uint256);

    function transferredAverageStakedAmounts(address _account) external view returns (uint256);

    function transferredCumulativeRewards(address _account) external view returns (uint256);

    function cumulativeRewardDeductions(address _account) external view returns (uint256);

    function bonusRewards(address _account) external view returns (uint256);

    function transferStakeValues(address _sender, address _receiver) external;

    function setTransferredAverageStakedAmounts(address _account, uint256 _amount) external;

    function setTransferredCumulativeRewards(address _account, uint256 _amount) external;

    function setCumulativeRewardDeductions(address _account, uint256 _amount) external;

    function setBonusRewards(address _account, uint256 _amount) external;

    function getMaxVestableAmount(address _account) external view returns (uint256);

    function getCombinedAverageStakedAmount(address _account) external view returns (uint256);
}


// File contracts/tokens/interfaces/IMintable.sol


pragma solidity 0.6.12;

interface IMintable {
    function isMinter(address _account) external returns (bool);

    function setMinter(address _minter, bool _isActive) external;

    function mint(address _account, uint256 _amount) external;

    function burn(address _account, uint256 _amount) external;
}


// File contracts/tokens/interfaces/IWETH.sol


pragma solidity 0.6.12;

interface IWETH {
    function deposit() external payable;

    function transfer(address to, uint256 value) external returns (bool);

    function withdraw(uint256) external;
}


// File contracts/core/interfaces/IMlpManager.sol


pragma solidity 0.6.12;

interface IMlpManager {
    function cooldownDuration() external returns (uint256);

    function lastAddedAt(address _account) external returns (uint256);

    function addLiquidity(
        address _token,
        uint256 _amount,
        uint256 _minUsdg,
        uint256 _minMlp
    ) external returns (uint256);

    function addLiquidityForAccount(
        address _fundingAccount,
        address _account,
        address _token,
        uint256 _amount,
        uint256 _minUsdg,
        uint256 _minMlp
    ) external returns (uint256);

    function removeLiquidity(
        address _tokenOut,
        uint256 _mlpAmount,
        uint256 _minOut,
        address _receiver
    ) external returns (uint256);

    function removeLiquidityForAccount(
        address _account,
        address _tokenOut,
        uint256 _MlpAmount,
        uint256 _minOut,
        address _receiver
    ) external returns (uint256);
}


// File contracts/access/Governable.sol


pragma solidity 0.6.12;

contract Governable {
    address public gov;

    constructor() public {
        gov = msg.sender;
    }

    modifier onlyGov() {
        require(msg.sender == gov, "Governable: forbidden");
        _;
    }

    function setGov(address _gov) external onlyGov {
        gov = _gov;
    }
}


// File contracts/staking/RewardRouterV2.sol


pragma solidity 0.6.12;




contract RewardRouterV2 is ReentrancyGuard, Governable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;
    using Address for address payable;

    bool public isInitialized;

    address public weth;

    address public myc;
    address public esMyc;
    address public bnMyc;

    address public mlp; // MYC Liquidity Provider token

    address public stakedMycTracker;
    address public bonusMycTracker;
    address public feeMycTracker;

    address public stakedMlpTracker;
    address public feeMlpTracker;

    address public mlpManager;

    address public mlpVester;
    address public mycVester;

    mapping(address => address) public pendingReceivers;

    event StakeMyc(address account, address token, uint256 amount);
    event UnstakeMyc(address account, address token, uint256 amount);

    event StakeMlp(address account, uint256 amount);
    event UnstakeMlp(address account, uint256 amount);

    receive() external payable {
        require(msg.sender == weth, "Router: invalid sender");
    }

    function initialize(
        address _weth,
        address _myc,
        address _esMyc,
        address _bnMyc,
        address _mlp,
        address _stakedMycTracker,
        address _bonusMycTracker,
        address _feeMycTracker,
        address _feeMlpTracker,
        address _stakedMlpTracker,
        address _mlpManager,
        address _mycVester,
        address _mlpVester
    ) external onlyGov {
        require(!isInitialized, "RewardRouter: already initialized");
        isInitialized = true;

        weth = _weth;

        myc = _myc;
        esMyc = _esMyc;
        bnMyc = _bnMyc;

        mlp = _mlp;

        stakedMycTracker = _stakedMycTracker;
        bonusMycTracker = _bonusMycTracker;
        feeMycTracker = _feeMycTracker;

        feeMlpTracker = _feeMlpTracker;
        stakedMlpTracker = _stakedMlpTracker;

        mlpManager = _mlpManager;

        mycVester = _mycVester;
        mlpVester = _mlpVester;
    }

    // to help users who accidentally send their tokens to this contract
    function withdrawToken(
        address _token,
        address _account,
        uint256 _amount
    ) external onlyGov {
        IERC20(_token).safeTransfer(_account, _amount);
    }

    function batchStakeMycForAccount(address[] memory _accounts, uint256[] memory _amounts)
        external
        nonReentrant
        onlyGov
    {
        address _myc = myc;
        for (uint256 i = 0; i < _accounts.length; i++) {
            _stakeMyc(msg.sender, _accounts[i], _myc, _amounts[i]);
        }
    }

    function stakeMycForAccount(address _account, uint256 _amount) external nonReentrant onlyGov {
        _stakeMyc(msg.sender, _account, myc, _amount);
    }

    function stakeMyc(uint256 _amount) external nonReentrant {
        _stakeMyc(msg.sender, msg.sender, myc, _amount);
    }

    function stakeEsMyc(uint256 _amount) external nonReentrant {
        _stakeMyc(msg.sender, msg.sender, esMyc, _amount);
    }

    function unstakeMyc(uint256 _amount) external nonReentrant {
        _unstakeMyc(msg.sender, myc, _amount, true);
    }

    function unstakeEsMyc(uint256 _amount) external nonReentrant {
        _unstakeMyc(msg.sender, esMyc, _amount, true);
    }

    function mintAndStakeMlp(
        address _token,
        uint256 _amount,
        uint256 _minUsdg,
        uint256 _minMlp
    ) external nonReentrant returns (uint256) {
        require(_amount > 0, "RewardRouter: invalid _amount");

        address account = msg.sender;
        uint256 mlpAmount = IMlpManager(mlpManager).addLiquidityForAccount(
            account,
            account,
            _token,
            _amount,
            _minUsdg,
            _minMlp
        );
        IRewardTracker(feeMlpTracker).stakeForAccount(account, account, mlp, mlpAmount);
        IRewardTracker(stakedMlpTracker).stakeForAccount(account, account, feeMlpTracker, mlpAmount);

        emit StakeMlp(account, mlpAmount);

        return mlpAmount;
    }

    function mintAndStakeMlpETH(uint256 _minUsdg, uint256 _minMlp) external payable nonReentrant returns (uint256) {
        require(msg.value > 0, "RewardRouter: invalid msg.value");

        IWETH(weth).deposit{value: msg.value}();
        IERC20(weth).approve(mlpManager, msg.value);

        address account = msg.sender;
        uint256 mlpAmount = IMlpManager(mlpManager).addLiquidityForAccount(
            address(this),
            account,
            weth,
            msg.value,
            _minUsdg,
            _minMlp
        );

        IRewardTracker(feeMlpTracker).stakeForAccount(account, account, mlp, mlpAmount);
        IRewardTracker(stakedMlpTracker).stakeForAccount(account, account, feeMlpTracker, mlpAmount);

        emit StakeMlp(account, mlpAmount);

        return mlpAmount;
    }

    function unstakeAndRedeemMlp(
        address _tokenOut,
        uint256 _mlpAmount,
        uint256 _minOut,
        address _receiver
    ) external nonReentrant returns (uint256) {
        require(_mlpAmount > 0, "RewardRouter: invalid _mlpAmount");

        address account = msg.sender;
        IRewardTracker(stakedMlpTracker).unstakeForAccount(account, feeMlpTracker, _mlpAmount, account);
        IRewardTracker(feeMlpTracker).unstakeForAccount(account, mlp, _mlpAmount, account);
        uint256 amountOut = IMlpManager(mlpManager).removeLiquidityForAccount(
            account,
            _tokenOut,
            _mlpAmount,
            _minOut,
            _receiver
        );

        emit UnstakeMlp(account, _mlpAmount);

        return amountOut;
    }

    function unstakeAndRedeemMlpETH(
        uint256 _mlpAmount,
        uint256 _minOut,
        address payable _receiver
    ) external nonReentrant returns (uint256) {
        require(_mlpAmount > 0, "RewardRouter: invalid _mlpAmount");

        address account = msg.sender;
        IRewardTracker(stakedMlpTracker).unstakeForAccount(account, feeMlpTracker, _mlpAmount, account);
        IRewardTracker(feeMlpTracker).unstakeForAccount(account, mlp, _mlpAmount, account);
        uint256 amountOut = IMlpManager(mlpManager).removeLiquidityForAccount(
            account,
            weth,
            _mlpAmount,
            _minOut,
            address(this)
        );

        IWETH(weth).withdraw(amountOut);

        _receiver.sendValue(amountOut);

        emit UnstakeMlp(account, _mlpAmount);

        return amountOut;
    }

    function claim() external nonReentrant {
        address account = msg.sender;

        IRewardTracker(feeMycTracker).claimForAccount(account, account);
        IRewardTracker(feeMlpTracker).claimForAccount(account, account);

        IRewardTracker(stakedMycTracker).claimForAccount(account, account);
        IRewardTracker(stakedMlpTracker).claimForAccount(account, account);
    }

    function claimEsMyc() external nonReentrant {
        address account = msg.sender;

        IRewardTracker(stakedMycTracker).claimForAccount(account, account);
        IRewardTracker(stakedMlpTracker).claimForAccount(account, account);
    }

    function claimFees() external nonReentrant {
        address account = msg.sender;

        IRewardTracker(feeMycTracker).claimForAccount(account, account);
        IRewardTracker(feeMlpTracker).claimForAccount(account, account);
    }

    function compound() external nonReentrant {
        _compound(msg.sender);
    }

    function compoundForAccount(address _account) external nonReentrant onlyGov {
        _compound(_account);
    }

    function handleRewards(
        bool _shouldClaimMyc,
        bool _shouldStakeMyc,
        bool _shouldClaimEsMyc,
        bool _shouldStakeEsMyc,
        bool _shouldStakeMultiplierPoints,
        bool _shouldClaimWeth,
        bool _shouldConvertWethToEth,
        bool _shouldBuyMlpWithWeth
    ) external nonReentrant {
        address account = msg.sender;

        uint256 mycAmount = 0;
        if (_shouldClaimMyc) {
            uint256 mycAmount0 = IVester(mycVester).claimForAccount(account, account);
            uint256 mycAmount1 = IVester(mlpVester).claimForAccount(account, account);
            mycAmount = mycAmount0.add(mycAmount1);
        }

        if (_shouldStakeMyc && mycAmount > 0) {
            _stakeMyc(account, account, myc, mycAmount);
        }

        uint256 esMycAmount = 0;
        if (_shouldClaimEsMyc) {
            uint256 esMycAmount0 = IRewardTracker(stakedMycTracker).claimForAccount(account, account);
            uint256 esMycAmount1 = IRewardTracker(stakedMlpTracker).claimForAccount(account, account);
            esMycAmount = esMycAmount0.add(esMycAmount1);
        }

        if (_shouldStakeEsMyc && esMycAmount > 0) {
            _stakeMyc(account, account, esMyc, esMycAmount);
        }

        if (_shouldStakeMultiplierPoints) {
            uint256 bnMycAmount = IRewardTracker(bonusMycTracker).claimForAccount(account, account);
            if (bnMycAmount > 0) {
                IRewardTracker(feeMycTracker).stakeForAccount(account, account, bnMyc, bnMycAmount);
            }
        }

        if (_shouldClaimWeth) {
            if (_shouldBuyMlpWithWeth) {
                uint256 weth0 = IRewardTracker(feeMycTracker).claimForAccount(account, address(this));
                uint256 weth1 = IRewardTracker(feeMlpTracker).claimForAccount(account, address(this));

                uint256 wethAmount = weth0.add(weth1);

                // claimed amount can be 0
                if (wethAmount > 0) {
                    IERC20(weth).approve(mlpManager, wethAmount);
                    uint256 mlpAmount = IMlpManager(mlpManager).addLiquidityForAccount(
                        address(this),
                        account,
                        weth,
                        wethAmount,
                        0,
                        0
                    );

                    IRewardTracker(feeMlpTracker).stakeForAccount(account, account, mlp, mlpAmount);
                    IRewardTracker(stakedMlpTracker).stakeForAccount(account, account, feeMlpTracker, mlpAmount);

                    emit StakeMlp(account, mlpAmount);
                }
            } else if (_shouldConvertWethToEth) {
                uint256 weth0 = IRewardTracker(feeMycTracker).claimForAccount(account, address(this));
                uint256 weth1 = IRewardTracker(feeMlpTracker).claimForAccount(account, address(this));

                uint256 wethAmount = weth0.add(weth1);

                IWETH(weth).withdraw(wethAmount);
                payable(account).sendValue(wethAmount);
            } else {
                IRewardTracker(feeMycTracker).claimForAccount(account, account);
                IRewardTracker(feeMlpTracker).claimForAccount(account, account);
            }
        }
    }

    function batchCompoundForAccounts(address[] memory _accounts) external nonReentrant onlyGov {
        for (uint256 i = 0; i < _accounts.length; i++) {
            _compound(_accounts[i]);
        }
    }

    function signalTransfer(address _receiver) external nonReentrant {
        require(IERC20(mycVester).balanceOf(msg.sender) == 0, "RewardRouter: sender has vested tokens");
        require(IERC20(mlpVester).balanceOf(msg.sender) == 0, "RewardRouter: sender has vested tokens");

        _validateReceiver(_receiver);
        pendingReceivers[msg.sender] = _receiver;
    }

    function acceptTransfer(address _sender) external nonReentrant {
        require(IERC20(mycVester).balanceOf(_sender) == 0, "RewardRouter: sender has vested tokens");
        require(IERC20(mlpVester).balanceOf(_sender) == 0, "RewardRouter: sender has vested tokens");

        address receiver = msg.sender;
        require(pendingReceivers[_sender] == receiver, "RewardRouter: transfer not signalled");
        delete pendingReceivers[_sender];

        _validateReceiver(receiver);
        _compound(_sender);

        uint256 stakedMyc = IRewardTracker(stakedMycTracker).depositBalances(_sender, myc);
        if (stakedMyc > 0) {
            _unstakeMyc(_sender, myc, stakedMyc, false);
            _stakeMyc(_sender, receiver, myc, stakedMyc);
        }

        uint256 stakedEsMyc = IRewardTracker(stakedMycTracker).depositBalances(_sender, esMyc);
        if (stakedEsMyc > 0) {
            _unstakeMyc(_sender, esMyc, stakedEsMyc, false);
            _stakeMyc(_sender, receiver, esMyc, stakedEsMyc);
        }

        uint256 stakedBnMyc = IRewardTracker(feeMycTracker).depositBalances(_sender, bnMyc);
        if (stakedBnMyc > 0) {
            IRewardTracker(feeMycTracker).unstakeForAccount(_sender, bnMyc, stakedBnMyc, _sender);
            IRewardTracker(feeMycTracker).stakeForAccount(_sender, receiver, bnMyc, stakedBnMyc);
        }

        uint256 esMycBalance = IERC20(esMyc).balanceOf(_sender);
        if (esMycBalance > 0) {
            IERC20(esMyc).transferFrom(_sender, receiver, esMycBalance);
        }

        uint256 mlpAmount = IRewardTracker(feeMlpTracker).depositBalances(_sender, mlp);
        if (mlpAmount > 0) {
            IRewardTracker(stakedMlpTracker).unstakeForAccount(_sender, feeMlpTracker, mlpAmount, _sender);
            IRewardTracker(feeMlpTracker).unstakeForAccount(_sender, mlp, mlpAmount, _sender);

            IRewardTracker(feeMlpTracker).stakeForAccount(_sender, receiver, mlp, mlpAmount);
            IRewardTracker(stakedMlpTracker).stakeForAccount(receiver, receiver, feeMlpTracker, mlpAmount);
        }

        IVester(mycVester).transferStakeValues(_sender, receiver);
        IVester(mlpVester).transferStakeValues(_sender, receiver);
    }

    function _validateReceiver(address _receiver) private view {
        require(
            IRewardTracker(stakedMycTracker).averageStakedAmounts(_receiver) == 0,
            "RewardRouter: stakedMycTracker.averageStakedAmounts > 0"
        );
        require(
            IRewardTracker(stakedMycTracker).cumulativeRewards(_receiver) == 0,
            "RewardRouter: stakedMycTracker.cumulativeRewards > 0"
        );

        require(
            IRewardTracker(bonusMycTracker).averageStakedAmounts(_receiver) == 0,
            "RewardRouter: bonusMycTracker.averageStakedAmounts > 0"
        );
        require(
            IRewardTracker(bonusMycTracker).cumulativeRewards(_receiver) == 0,
            "RewardRouter: bonusMycTracker.cumulativeRewards > 0"
        );

        require(
            IRewardTracker(feeMycTracker).averageStakedAmounts(_receiver) == 0,
            "RewardRouter: feeMycTracker.averageStakedAmounts > 0"
        );
        require(
            IRewardTracker(feeMycTracker).cumulativeRewards(_receiver) == 0,
            "RewardRouter: feeMycTracker.cumulativeRewards > 0"
        );

        require(
            IVester(mycVester).transferredAverageStakedAmounts(_receiver) == 0,
            "RewardRouter: mycVester.transferredAverageStakedAmounts > 0"
        );

        require(
            IVester(mycVester).transferredCumulativeRewards(_receiver) == 0,
            "RewardRouter: mycVester.transferredCumulativeRewards > 0"
        );
        require(
            IRewardTracker(stakedMlpTracker).averageStakedAmounts(_receiver) == 0,
            "RewardRouter: stakedMlpTracker.averageStakedAmounts > 0"
        );
        require(
            IRewardTracker(stakedMlpTracker).cumulativeRewards(_receiver) == 0,
            "RewardRouter: stakedMlpTracker.cumulativeRewards > 0"
        );

        require(
            IRewardTracker(feeMlpTracker).averageStakedAmounts(_receiver) == 0,
            "RewardRouter: feeMlpTracker.averageStakedAmounts > 0"
        );
        require(
            IRewardTracker(feeMlpTracker).cumulativeRewards(_receiver) == 0,
            "RewardRouter: feeMlpTracker.cumulativeRewards > 0"
        );

        require(
            IVester(mlpVester).transferredAverageStakedAmounts(_receiver) == 0,
            "RewardRouter: mlpVester.transferredAverageStakedAmounts > 0"
        );
        require(
            IVester(mlpVester).transferredCumulativeRewards(_receiver) == 0,
            "RewardRouter: mlpVester.transferredCumulativeRewards > 0"
        );

        require(IERC20(mycVester).balanceOf(_receiver) == 0, "RewardRouter: mycVester.balance > 0");
        require(IERC20(mlpVester).balanceOf(_receiver) == 0, "RewardRouter: mlpVester.balance > 0");
    }

    function _compound(address _account) private {
        _compoundMyc(_account);
        _compoundMlp(_account);
    }

    function _compoundMyc(address _account) private {
        uint256 esMycAmount = IRewardTracker(stakedMycTracker).claimForAccount(_account, _account);
        if (esMycAmount > 0) {
            _stakeMyc(_account, _account, esMyc, esMycAmount);
        }

        uint256 bnMycAmount = IRewardTracker(bonusMycTracker).claimForAccount(_account, _account);
        if (bnMycAmount > 0) {
            IRewardTracker(feeMycTracker).stakeForAccount(_account, _account, bnMyc, bnMycAmount);
        }
    }

    function _compoundMlp(address _account) private {
        uint256 esMycAmount = IRewardTracker(stakedMlpTracker).claimForAccount(_account, _account);
        if (esMycAmount > 0) {
            _stakeMyc(_account, _account, esMyc, esMycAmount);
        }
    }

    function _stakeMyc(
        address _fundingAccount,
        address _account,
        address _token,
        uint256 _amount
    ) private {
        require(_amount > 0, "RewardRouter: invalid _amount");

        IRewardTracker(stakedMycTracker).stakeForAccount(_fundingAccount, _account, _token, _amount);
        IRewardTracker(bonusMycTracker).stakeForAccount(_account, _account, stakedMycTracker, _amount);
        IRewardTracker(feeMycTracker).stakeForAccount(_account, _account, bonusMycTracker, _amount);

        emit StakeMyc(_account, _token, _amount);
    }

    function _unstakeMyc(
        address _account,
        address _token,
        uint256 _amount,
        bool _shouldReduceBnMyc
    ) private {
        require(_amount > 0, "RewardRouter: invalid _amount");

        uint256 balance = IRewardTracker(stakedMycTracker).stakedAmounts(_account);

        IRewardTracker(feeMycTracker).unstakeForAccount(_account, bonusMycTracker, _amount, _account);
        IRewardTracker(bonusMycTracker).unstakeForAccount(_account, stakedMycTracker, _amount, _account);
        IRewardTracker(stakedMycTracker).unstakeForAccount(_account, _token, _amount, _account);

        if (_shouldReduceBnMyc) {
            uint256 bnMycAmount = IRewardTracker(bonusMycTracker).claimForAccount(_account, _account);
            if (bnMycAmount > 0) {
                IRewardTracker(feeMycTracker).stakeForAccount(_account, _account, bnMyc, bnMycAmount);
            }

            uint256 stakedBnMyc = IRewardTracker(feeMycTracker).depositBalances(_account, bnMyc);
            if (stakedBnMyc > 0) {
                uint256 reductionAmount = stakedBnMyc.mul(_amount).div(balance);
                IRewardTracker(feeMycTracker).unstakeForAccount(_account, bnMyc, reductionAmount, _account);
                IMintable(bnMyc).burn(_account, reductionAmount);
            }
        }

        emit UnstakeMyc(_account, _token, _amount);
    }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StakeMlp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StakeMyc","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UnstakeMlp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UnstakeMyc","type":"event"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"acceptTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"}],"name":"batchCompoundForAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"batchStakeMycForAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bnMyc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusMycTracker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimEsMyc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"compoundForAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"esMyc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMlpTracker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMycTracker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_shouldClaimMyc","type":"bool"},{"internalType":"bool","name":"_shouldStakeMyc","type":"bool"},{"internalType":"bool","name":"_shouldClaimEsMyc","type":"bool"},{"internalType":"bool","name":"_shouldStakeEsMyc","type":"bool"},{"internalType":"bool","name":"_shouldStakeMultiplierPoints","type":"bool"},{"internalType":"bool","name":"_shouldClaimWeth","type":"bool"},{"internalType":"bool","name":"_shouldConvertWethToEth","type":"bool"},{"internalType":"bool","name":"_shouldBuyMlpWithWeth","type":"bool"}],"name":"handleRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_weth","type":"address"},{"internalType":"address","name":"_myc","type":"address"},{"internalType":"address","name":"_esMyc","type":"address"},{"internalType":"address","name":"_bnMyc","type":"address"},{"internalType":"address","name":"_mlp","type":"address"},{"internalType":"address","name":"_stakedMycTracker","type":"address"},{"internalType":"address","name":"_bonusMycTracker","type":"address"},{"internalType":"address","name":"_feeMycTracker","type":"address"},{"internalType":"address","name":"_feeMlpTracker","type":"address"},{"internalType":"address","name":"_stakedMlpTracker","type":"address"},{"internalType":"address","name":"_mlpManager","type":"address"},{"internalType":"address","name":"_mycVester","type":"address"},{"internalType":"address","name":"_mlpVester","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_minUsdg","type":"uint256"},{"internalType":"uint256","name":"_minMlp","type":"uint256"}],"name":"mintAndStakeMlp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minUsdg","type":"uint256"},{"internalType":"uint256","name":"_minMlp","type":"uint256"}],"name":"mintAndStakeMlpETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mlp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mlpManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mlpVester","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"myc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mycVester","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pendingReceivers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"signalTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stakeEsMyc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stakeMyc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stakeMycForAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakedMlpTracker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakedMycTracker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenOut","type":"address"},{"internalType":"uint256","name":"_mlpAmount","type":"uint256"},{"internalType":"uint256","name":"_minOut","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"unstakeAndRedeemMlp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mlpAmount","type":"uint256"},{"internalType":"uint256","name":"_minOut","type":"uint256"},{"internalType":"address payable","name":"_receiver","type":"address"}],"name":"unstakeAndRedeemMlpETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"unstakeEsMyc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"unstakeMyc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b506001600081905580546001600160a01b03191633179055615792806100376000396000f3fe6080604052600436106101b95760003560e01c806301e336671461021d57806312d43a511461026057806312ebd5b11461029157806319c6c0cf146103c15780631af276a6146103fa5780632a9f4083146104a85780632fdd983d146104db5780633864c4fa14610576578063392e53cd146105db57806339a60b80146106045780633e49e2131461062e5780633fc8cef314610643578063415b8afc1461065857806342e9cd9b1461066d5780634e71d92d146106975780635387701e146106ac57806353f33a55146106fd578063655603a41461074457806369368154146107775780637b4c3da6146107a157806385df1b1f146107b65780638a98e96a146107cb578063944b4e5f146107e0578063b2a39a2a14610803578063c816d88114610818578063cbb91c5e14610842578063cfad57a214610857578063d294f0931461088a578063d4d933f01461089f578063d7fc085f146108b4578063df5e4f61146108c9578063e1b9db89146108de578063e709847814610911578063ef9aacfd14610926578063f5e3587914610959578063f69e20461461099e578063f851d692146109b3578063fc8b6fc1146109c857610218565b36610218576002546001600160a01b03163314610216576040805162461bcd60e51b81526020600482015260166024820152752937baba32b91d1034b73b30b634b21039b2b73232b960511b604482015290519081900360640190fd5b005b600080fd5b34801561022957600080fd5b506102166004803603606081101561024057600080fd5b506001600160a01b038135811691602081013590911690604001356109dd565b34801561026c57600080fd5b50610275610a43565b604080516001600160a01b039092168252519081900360200190f35b34801561029d57600080fd5b50610216600480360360408110156102b457600080fd5b810190602081018135600160201b8111156102ce57600080fd5b8201836020820111156102e057600080fd5b803590602001918460208302840111600160201b8311171561030157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561035057600080fd5b82018360208201111561036257600080fd5b803590602001918460208302840111600160201b8311171561038357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a52945050505050565b3480156103cd57600080fd5b50610216600480360360408110156103e457600080fd5b506001600160a01b038135169060200135610b47565b34801561040657600080fd5b506102166004803603602081101561041d57600080fd5b810190602081018135600160201b81111561043757600080fd5b82018360208201111561044957600080fd5b803590602001918460208302840111600160201b8311171561046a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610c02945050505050565b3480156104b457600080fd5b50610216600480360360208110156104cb57600080fd5b50356001600160a01b0316610cca565b3480156104e757600080fd5b5061021660048036036101a08110156104ff57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c082013581169160e08101358216916101008201358116916101208101358216916101408201358116916101608101358216916101809091013516610d73565b34801561058257600080fd5b50610216600480360361010081101561059a57600080fd5b508035151590602081013515159060408101351515906060810135151590608081013515159060a081013515159060c081013515159060e001351515610f00565b3480156105e757600080fd5b506105f0611946565b604080519115158252519081900360200190f35b34801561061057600080fd5b506102166004803603602081101561062757600080fd5b5035611956565b34801561063a57600080fd5b506102756119bb565b34801561064f57600080fd5b506102756119ca565b34801561066457600080fd5b506102756119d9565b34801561067957600080fd5b506102166004803603602081101561069057600080fd5b50356119e8565b3480156106a357600080fd5b50610216611a4d565b3480156106b857600080fd5b506106eb600480360360608110156106cf57600080fd5b50803590602081013590604001356001600160a01b0316611cac565b60408051918252519081900360200190f35b34801561070957600080fd5b506106eb6004803603608081101561072057600080fd5b506001600160a01b0381358116916020810135916040820135916060013516611f95565b34801561075057600080fd5b506102166004803603602081101561076757600080fd5b50356001600160a01b0316612205565b34801561078357600080fd5b506102166004803603602081101561079a57600080fd5b5035612bfc565b3480156107ad57600080fd5b50610275612c61565b3480156107c257600080fd5b50610275612c70565b3480156107d757600080fd5b50610275612c7f565b6106eb600480360360408110156107f657600080fd5b5080359060200135612c8e565b34801561080f57600080fd5b50610275612ff9565b34801561082457600080fd5b506102166004803603602081101561083b57600080fd5b5035613008565b34801561084e57600080fd5b5061027561306d565b34801561086357600080fd5b506102166004803603602081101561087a57600080fd5b50356001600160a01b031661307c565b34801561089657600080fd5b506102166130eb565b3480156108ab57600080fd5b50610275613212565b3480156108c057600080fd5b50610275613221565b3480156108d557600080fd5b50610275613230565b3480156108ea57600080fd5b506102756004803603602081101561090157600080fd5b50356001600160a01b031661323f565b34801561091d57600080fd5b5061021661325a565b34801561093257600080fd5b506102166004803603602081101561094957600080fd5b50356001600160a01b03166132ff565b34801561096557600080fd5b506106eb6004803603608081101561097c57600080fd5b506001600160a01b0381351690602081013590604081013590606001356134ed565b3480156109aa57600080fd5b5061021661375b565b3480156109bf57600080fd5b506102756137b6565b3480156109d457600080fd5b506102756137c5565b6001546001600160a01b03163314610a2a576040805162461bcd60e51b81526020600482015260156024820152600080516020615309833981519152604482015290519081900360640190fd5b610a3e6001600160a01b03841683836137d4565b505050565b6001546001600160a01b031681565b60026000541415610a98576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b60026000556001546001600160a01b03163314610aea576040805162461bcd60e51b81526020600482015260156024820152600080516020615309833981519152604482015290519081900360640190fd5b6003546001600160a01b031660005b8351811015610b3c57610b3433858381518110610b1257fe5b602002602001015184868581518110610b2757fe5b6020026020010151613826565b600101610af9565b505060016000555050565b60026000541415610b8d576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b60026000556001546001600160a01b03163314610bdf576040805162461bcd60e51b81526020600482015260156024820152600080516020615309833981519152604482015290519081900360640190fd5b600354610bf990339084906001600160a01b031684613826565b50506001600055565b60026000541415610c48576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b60026000556001546001600160a01b03163314610c9a576040805162461bcd60e51b81526020600482015260156024820152600080516020615309833981519152604482015290519081900360640190fd5b60005b8151811015610bf957610cc2828281518110610cb557fe5b6020026020010151613a35565b600101610c9d565b60026000541415610d10576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b60026000556001546001600160a01b03163314610d62576040805162461bcd60e51b81526020600482015260156024820152600080516020615309833981519152604482015290519081900360640190fd5b610d6b81613a35565b506001600055565b6001546001600160a01b03163314610dc0576040805162461bcd60e51b81526020600482015260156024820152600080516020615309833981519152604482015290519081900360640190fd5b600154600160a01b900460ff1615610e095760405162461bcd60e51b81526004018080602001828103825260218152602001806154636021913960400191505060405180910390fd5b6001805460ff60a01b1916600160a01b179055600280546001600160a01b039e8f166001600160a01b031991821617909155600380549d8f169d82169d909d17909c55600480549b8e169b8d169b909b17909a5560058054998d16998c169990991790985560068054978c16978b169790971790965560078054958b16958a169590951790945560088054938a169389169390931790925560098054918916918816919091179055600b8054918816918716919091179055600a8054918716918616919091179055600c8054918616918516919091179055600e8054918516918416919091179055600d8054919093169116179055565b60026000541415610f46576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b600260009081553390891561107257600e54604080516309f4173d60e11b81526001600160a01b03858116600483018190526024830152915160009392909216916313e82e7a9160448082019260209290919082900301818787803b158015610fae57600080fd5b505af1158015610fc2573d6000803e3d6000fd5b505050506040513d6020811015610fd857600080fd5b5051600d54604080516309f4173d60e11b81526001600160a01b03878116600483018190526024830152915193945060009391909216916313e82e7a91604480830192602092919082900301818787803b15801561103557600080fd5b505af1158015611049573d6000803e3d6000fd5b505050506040513d602081101561105f57600080fd5b5051905061106d8282613a4a565b925050505b88801561107f5750600081115b1561109e5760035461109e90839081906001600160a01b031684613826565b600088156111c357600754604080516309f4173d60e11b81526001600160a01b03868116600483018190526024830152915160009392909216916313e82e7a9160448082019260209290919082900301818787803b1580156110ff57600080fd5b505af1158015611113573d6000803e3d6000fd5b505050506040513d602081101561112957600080fd5b5051600a54604080516309f4173d60e11b81526001600160a01b03888116600483018190526024830152915193945060009391909216916313e82e7a91604480830192602092919082900301818787803b15801561118657600080fd5b505af115801561119a573d6000803e3d6000fd5b505050506040513d60208110156111b057600080fd5b505190506111be8282613a4a565b925050505b8780156111d05750600081115b156111ef576004546111ef90849081906001600160a01b031684613826565b861561130457600854604080516309f4173d60e11b81526001600160a01b03868116600483018190526024830152915160009392909216916313e82e7a9160448082019260209290919082900301818787803b15801561124e57600080fd5b505af1158015611262573d6000803e3d6000fd5b505050506040513d602081101561127857600080fd5b5051905080156113025760095460055460408051631e42d69b60e21b81526001600160a01b038881166004830181905260248301529283166044820152606481018590529051919092169163790b5a6c91608480830192600092919082900301818387803b1580156112e957600080fd5b505af11580156112fd573d6000803e3d6000fd5b505050505b505b851561193457831561169557600954604080516309f4173d60e11b81526001600160a01b038681166004830152306024830152915160009392909216916313e82e7a9160448082019260209290919082900301818787803b15801561136857600080fd5b505af115801561137c573d6000803e3d6000fd5b505050506040513d602081101561139257600080fd5b5051600b54604080516309f4173d60e11b81526001600160a01b038881166004830152306024830152915193945060009391909216916313e82e7a91604480830192602092919082900301818787803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050506040513d602081101561141857600080fd5b5051905060006114288383613a4a565b9050801561168d57600254600c546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561148957600080fd5b505af115801561149d573d6000803e3d6000fd5b505050506040513d60208110156114b357600080fd5b5050600c54600254604080516317eb2a1560e01b81523060048201526001600160a01b038a8116602483015292831660448201526064810185905260006084820181905260a482018190529151919392909216916317eb2a159160c480830192602092919082900301818787803b15801561152d57600080fd5b505af1158015611541573d6000803e3d6000fd5b505050506040513d602081101561155757600080fd5b5051600b5460065460408051631e42d69b60e21b81526001600160a01b038c8116600483018190526024830152928316604482015260648101859052905193945091169163790b5a6c9160848082019260009290919082900301818387803b1580156115c257600080fd5b505af11580156115d6573d6000803e3d6000fd5b5050600a54600b5460408051631e42d69b60e21b81526001600160a01b038d8116600483018190526024830152928316604482015260648101879052905191909216935063790b5a6c9250608480830192600092919082900301818387803b15801561164157600080fd5b505af1158015611655573d6000803e3d6000fd5b5050604080516001600160a01b038b1681526020810185905281516000805160206152c38339815191529450908190039091019150a1505b505050611934565b841561182f57600954604080516309f4173d60e11b81526001600160a01b038681166004830152306024830152915160009392909216916313e82e7a9160448082019260209290919082900301818787803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b505050506040513d602081101561171d57600080fd5b5051600b54604080516309f4173d60e11b81526001600160a01b038881166004830152306024830152915193945060009391909216916313e82e7a91604480830192602092919082900301818787803b15801561177957600080fd5b505af115801561178d573d6000803e3d6000fd5b505050506040513d60208110156117a357600080fd5b5051905060006117b38383613a4a565b60025460408051632e1a7d4d60e01b81526004810184905290519293506001600160a01b0390911691632e1a7d4d9160248082019260009290919082900301818387803b15801561180357600080fd5b505af1158015611817573d6000803e3d6000fd5b5061168d925050506001600160a01b03871682613aab565b600954604080516309f4173d60e11b81526001600160a01b03868116600483018190526024830152915191909216916313e82e7a9160448083019260209291908290030181600087803b15801561188557600080fd5b505af1158015611899573d6000803e3d6000fd5b505050506040513d60208110156118af57600080fd5b5050600b54604080516309f4173d60e11b81526001600160a01b03868116600483018190526024830152915191909216916313e82e7a9160448083019260209291908290030181600087803b15801561190757600080fd5b505af115801561191b573d6000803e3d6000fd5b505050506040513d602081101561193157600080fd5b50505b50506001600055505050505050505050565b600154600160a01b900460ff1681565b6002600054141561199c576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b6002600055600354610d6b9033906001600160a01b0316836001613b90565b6006546001600160a01b031681565b6002546001600160a01b031681565b600e546001600160a01b031681565b60026000541415611a2e576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b6002600055600354610d6b90339081906001600160a01b031684613826565b60026000541415611a93576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b60026000908155600954604080516309f4173d60e11b8152336004820181905260248201819052915191936001600160a01b03909316926313e82e7a926044808401936020939083900390910190829087803b158015611af257600080fd5b505af1158015611b06573d6000803e3d6000fd5b505050506040513d6020811015611b1c57600080fd5b5050600b54604080516309f4173d60e11b81526001600160a01b03848116600483018190526024830152915191909216916313e82e7a9160448083019260209291908290030181600087803b158015611b7457600080fd5b505af1158015611b88573d6000803e3d6000fd5b505050506040513d6020811015611b9e57600080fd5b5050600754604080516309f4173d60e11b81526001600160a01b03848116600483018190526024830152915191909216916313e82e7a9160448083019260209291908290030181600087803b158015611bf657600080fd5b505af1158015611c0a573d6000803e3d6000fd5b505050506040513d6020811015611c2057600080fd5b5050600a54604080516309f4173d60e11b81526001600160a01b03848116600483018190526024830152915191909216916313e82e7a9160448083019260209291908290030181600087803b158015611c7857600080fd5b505af1158015611c8c573d6000803e3d6000fd5b505050506040513d6020811015611ca257600080fd5b5050600160005550565b600060026000541415611cf4576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b600260005583611d39576040805162461bcd60e51b81526020600482018190526024820152600080516020615283833981519152604482015290519081900360640190fd5b600a54600b546040805163098bf59d60e01b815233600482018190526001600160a01b039384166024830152604482018990526064820181905291519193929092169163098bf59d91608480830192600092919082900301818387803b158015611da257600080fd5b505af1158015611db6573d6000803e3d6000fd5b5050600b546006546040805163098bf59d60e01b81526001600160a01b03878116600483018190529381166024830152604482018c90526064820193909352905191909216935063098bf59d9250608480830192600092919082900301818387803b158015611e2457600080fd5b505af1158015611e38573d6000803e3d6000fd5b5050600c54600254604080516371d597ad60e01b81526001600160a01b0387811660048301529283166024820152604481018b9052606481018a90523060848201529051600095509190921692506371d597ad9160a48082019260209290919082900301818787803b158015611ead57600080fd5b505af1158015611ec1573d6000803e3d6000fd5b505050506040513d6020811015611ed757600080fd5b505160025460408051632e1a7d4d60e01b81526004810184905290519293506001600160a01b0390911691632e1a7d4d9160248082019260009290919082900301818387803b158015611f2957600080fd5b505af1158015611f3d573d6000803e3d6000fd5b50611f55925050506001600160a01b03851682613aab565b604080516001600160a01b03841681526020810188905281516000805160206156b6833981519152929181900390910190a1600160005595945050505050565b600060026000541415611fdd576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b600260005583612022576040805162461bcd60e51b81526020600482018190526024820152600080516020615283833981519152604482015290519081900360640190fd5b600a54600b546040805163098bf59d60e01b815233600482018190526001600160a01b039384166024830152604482018990526064820181905291519193929092169163098bf59d91608480830192600092919082900301818387803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b5050600b546006546040805163098bf59d60e01b81526001600160a01b03878116600483018190529381166024830152604482018c90526064820193909352905191909216935063098bf59d9250608480830192600092919082900301818387803b15801561210d57600080fd5b505af1158015612121573d6000803e3d6000fd5b5050600c54604080516371d597ad60e01b81526001600160a01b0386811660048301528b81166024830152604482018b9052606482018a905288811660848301529151600095509190921692506371d597ad9160a48082019260209290919082900301818787803b15801561219557600080fd5b505af11580156121a9573d6000803e3d6000fd5b505050506040513d60208110156121bf57600080fd5b5051604080516001600160a01b03851681526020810189905281519293506000805160206156b6833981519152929081900390910190a160016000559695505050505050565b6002600054141561224b576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b6002600055600e54604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561229d57600080fd5b505afa1580156122b1573d6000803e3d6000fd5b505050506040513d60208110156122c757600080fd5b5051156123055760405162461bcd60e51b81526004018080602001828103825260268152602001806152e36026913960400191505060405180910390fd5b600d54604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561235257600080fd5b505afa158015612366573d6000803e3d6000fd5b505050506040513d602081101561237c57600080fd5b5051156123ba5760405162461bcd60e51b81526004018080602001828103825260268152602001806152e36026913960400191505060405180910390fd5b6001600160a01b038181166000908152600f602052604090205433911681146124145760405162461bcd60e51b81526004018080602001828103825260248152602001806154e16024913960400191505060405180910390fd5b6001600160a01b0382166000908152600f6020526040902080546001600160a01b0319169055612443816140d2565b61244c82613a35565b60075460035460408051637aeceb1f60e11b81526001600160a01b03868116600483015292831660248201529051600093929092169163f5d9d63e91604480820192602092909190829003018186803b1580156124a857600080fd5b505afa1580156124bc573d6000803e3d6000fd5b505050506040513d60208110156124d257600080fd5b505190508015612510576003546124f69084906001600160a01b0316836000613b90565b60035461251090849084906001600160a01b031684613826565b6007546004805460408051637aeceb1f60e11b81526001600160a01b0388811694820194909452918316602483015251600093929092169163f5d9d63e91604480820192602092909190829003018186803b15801561256e57600080fd5b505afa158015612582573d6000803e3d6000fd5b505050506040513d602081101561259857600080fd5b5051905080156125d6576004546125bc9085906001600160a01b0316836000613b90565b6004546125d690859085906001600160a01b031684613826565b60095460055460408051637aeceb1f60e11b81526001600160a01b03888116600483015292831660248201529051600093929092169163f5d9d63e91604480820192602092909190829003018186803b15801561263257600080fd5b505afa158015612646573d6000803e3d6000fd5b505050506040513d602081101561265c57600080fd5b505190508015612769576009546005546040805163098bf59d60e01b81526001600160a01b038981166004830181905293811660248301526044820186905260648201939093529051919092169163098bf59d91608480830192600092919082900301818387803b1580156126d057600080fd5b505af11580156126e4573d6000803e3d6000fd5b505060095460055460408051631e42d69b60e21b81526001600160a01b038b811660048301528a81166024830152928316604482015260648101879052905191909216935063790b5a6c9250608480830192600092919082900301818387803b15801561275057600080fd5b505af1158015612764573d6000803e3d6000fd5b505050505b6000600460009054906101000a90046001600160a01b03166001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156127cd57600080fd5b505afa1580156127e1573d6000803e3d6000fd5b505050506040513d60208110156127f757600080fd5b5051905080156128905760048054604080516323b872dd60e01b81526001600160a01b038a811694820194909452888416602482015260448101859052905192909116916323b872dd916064808201926020929091908290030181600087803b15801561286357600080fd5b505af1158015612877573d6000803e3d6000fd5b505050506040513d602081101561288d57600080fd5b50505b600b5460065460408051637aeceb1f60e11b81526001600160a01b038a8116600483015292831660248201529051600093929092169163f5d9d63e91604480820192602092909190829003018186803b1580156128ec57600080fd5b505afa158015612900573d6000803e3d6000fd5b505050506040513d602081101561291657600080fd5b505190508015612b2457600a54600b546040805163098bf59d60e01b81526001600160a01b038b81166004830181905293811660248301526044820186905260648201939093529051919092169163098bf59d91608480830192600092919082900301818387803b15801561298a57600080fd5b505af115801561299e573d6000803e3d6000fd5b5050600b546006546040805163098bf59d60e01b81526001600160a01b038d8116600483018190529381166024830152604482018890526064820193909352905191909216935063098bf59d9250608480830192600092919082900301818387803b158015612a0c57600080fd5b505af1158015612a20573d6000803e3d6000fd5b5050600b5460065460408051631e42d69b60e21b81526001600160a01b038d811660048301528c81166024830152928316604482015260648101879052905191909216935063790b5a6c9250608480830192600092919082900301818387803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b5050600a54600b5460408051631e42d69b60e21b81526001600160a01b038c8116600483018190526024830152928316604482015260648101879052905191909216935063790b5a6c9250608480830192600092919082900301818387803b158015612b0b57600080fd5b505af1158015612b1f573d6000803e3d6000fd5b505050505b600e5460408051630f713c2360e41b81526001600160a01b038a8116600483015289811660248301529151919092169163f713c23091604480830192600092919082900301818387803b158015612b7a57600080fd5b505af1158015612b8e573d6000803e3d6000fd5b5050600d5460408051630f713c2360e41b81526001600160a01b038c811660048301528b81166024830152915191909216935063f713c2309250604480830192600092919082900301818387803b158015612be857600080fd5b505af1158015611934573d6000803e3d6000fd5b60026000541415612c42576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b6002600055600454610d6b90339081906001600160a01b031684613826565b6005546001600160a01b031681565b6009546001600160a01b031681565b6003546001600160a01b031681565b600060026000541415612cd6576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b600260005534612d2d576040805162461bcd60e51b815260206004820152601f60248201527f526577617264526f757465723a20696e76616c6964206d73672e76616c756500604482015290519081900360640190fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d7d57600080fd5b505af1158015612d91573d6000803e3d6000fd5b5050600254600c546040805163095ea7b360e01b81526001600160a01b039283166004820152346024820152905191909216945063095ea7b39350604480830193506020928290030181600087803b158015612dec57600080fd5b505af1158015612e00573d6000803e3d6000fd5b505050506040513d6020811015612e1657600080fd5b5050600c54600254604080516317eb2a1560e01b815230600482015233602482018190526001600160a01b0393841660448301523460648301526084820188905260a482018790529151919360009316916317eb2a159160c48082019260209290919082900301818787803b158015612e8e57600080fd5b505af1158015612ea2573d6000803e3d6000fd5b505050506040513d6020811015612eb857600080fd5b5051600b5460065460408051631e42d69b60e21b81526001600160a01b03878116600483018190526024830152928316604482015260648101859052905193945091169163790b5a6c9160848082019260009290919082900301818387803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b5050600a54600b5460408051631e42d69b60e21b81526001600160a01b03888116600483018190526024830152928316604482015260648101879052905191909216935063790b5a6c9250608480830192600092919082900301818387803b158015612fa257600080fd5b505af1158015612fb6573d6000803e3d6000fd5b5050604080516001600160a01b03861681526020810185905281516000805160206152c38339815191529450908190039091019150a16001600055949350505050565b600d546001600160a01b031681565b6002600054141561304e576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b6002600055600454610d6b9033906001600160a01b0316836001613b90565b600c546001600160a01b031681565b6001546001600160a01b031633146130c9576040805162461bcd60e51b81526020600482015260156024820152600080516020615309833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60026000541415613131576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b60026000908155600954604080516309f4173d60e11b8152336004820181905260248201819052915191936001600160a01b03909316926313e82e7a926044808401936020939083900390910190829087803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b505050506040513d60208110156131ba57600080fd5b5050600b54604080516309f4173d60e11b81526001600160a01b03848116600483018190526024830152915191909216916313e82e7a9160448083019260209291908290030181600087803b158015611c7857600080fd5b600a546001600160a01b031681565b6008546001600160a01b031681565b6004546001600160a01b031681565b600f602052600090815260409020546001600160a01b031681565b600260005414156132a0576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b60026000908155600754604080516309f4173d60e11b8152336004820181905260248201819052915191936001600160a01b03909316926313e82e7a926044808401936020939083900390910190829087803b158015611bf657600080fd5b60026000541415613345576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b6002600055600e54604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561339557600080fd5b505afa1580156133a9573d6000803e3d6000fd5b505050506040513d60208110156133bf57600080fd5b5051156133fd5760405162461bcd60e51b81526004018080602001828103825260268152602001806152e36026913960400191505060405180910390fd5b600d54604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561344857600080fd5b505afa15801561345c573d6000803e3d6000fd5b505050506040513d602081101561347257600080fd5b5051156134b05760405162461bcd60e51b81526004018080602001828103825260268152602001806152e36026913960400191505060405180910390fd5b6134b9816140d2565b336000908152600f6020526040812080546001600160a01b0319166001600160a01b03939093169290921790915560019055565b600060026000541415613535576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b60026000558361357a576040805162461bcd60e51b815260206004820152601d60248201526000805160206156d6833981519152604482015290519081900360640190fd5b600c54604080516317eb2a1560e01b81523360048201819052602482018190526001600160a01b038981166044840152606483018990526084830188905260a483018790529251909360009316916317eb2a159160c480830192602092919082900301818787803b1580156135ee57600080fd5b505af1158015613602573d6000803e3d6000fd5b505050506040513d602081101561361857600080fd5b5051600b5460065460408051631e42d69b60e21b81526001600160a01b03878116600483018190526024830152928316604482015260648101859052905193945091169163790b5a6c9160848082019260009290919082900301818387803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b5050600a54600b5460408051631e42d69b60e21b81526001600160a01b03888116600483018190526024830152928316604482015260648101879052905191909216935063790b5a6c9250608480830192600092919082900301818387803b15801561370257600080fd5b505af1158015613716573d6000803e3d6000fd5b5050604080516001600160a01b03861681526020810185905281516000805160206152c38339815191529450908190039091019150a160016000559695505050505050565b600260005414156137a1576040805162461bcd60e51b815260206004820152601f60248201526000805160206152a3833981519152604482015290519081900360640190fd5b60026000556137af33613a35565b6001600055565b6007546001600160a01b031681565b600b546001600160a01b031681565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610a3e908490614c22565b60008111613869576040805162461bcd60e51b815260206004820152601d60248201526000805160206156d6833981519152604482015290519081900360640190fd5b60075460408051631e42d69b60e21b81526001600160a01b03878116600483015286811660248301528581166044830152606482018590529151919092169163790b5a6c91608480830192600092919082900301818387803b1580156138ce57600080fd5b505af11580156138e2573d6000803e3d6000fd5b505060085460075460408051631e42d69b60e21b81526001600160a01b03898116600483018190526024830152928316604482015260648101879052905191909216935063790b5a6c9250608480830192600092919082900301818387803b15801561394d57600080fd5b505af1158015613961573d6000803e3d6000fd5b505060095460085460408051631e42d69b60e21b81526001600160a01b03898116600483018190526024830152928316604482015260648101879052905191909216935063790b5a6c9250608480830192600092919082900301818387803b1580156139cc57600080fd5b505af11580156139e0573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528616602082015280820185905290517fb2ad2d224e99c91da39bb252ac0fbd284bbd037a10c1e2618c0b69bf8509a66f9350908190036060019150a150505050565b613a3e81614cd3565b613a4781614e8b565b50565b600082820183811015613aa2576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b90505b92915050565b80471015613b00576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114613b4b576040519150601f19603f3d011682016040523d82523d6000602084013e613b50565b606091505b5050905080610a3e5760405162461bcd60e51b815260040180806020018281038252603a815260200180615429603a913960400191505060405180910390fd5b60008211613bd3576040805162461bcd60e51b815260206004820152601d60248201526000805160206156d6833981519152604482015290519081900360640190fd5b600754604080516310c1c10360e01b81526001600160a01b038781166004830152915160009392909216916310c1c10391602480820192602092909190829003018186803b158015613c2457600080fd5b505afa158015613c38573d6000803e3d6000fd5b505050506040513d6020811015613c4e57600080fd5b50516009546008546040805163098bf59d60e01b81526001600160a01b038a8116600483018190529381166024830152604482018990526064820193909352905193945091169163098bf59d9160848082019260009290919082900301818387803b158015613cbc57600080fd5b505af1158015613cd0573d6000803e3d6000fd5b50506008546007546040805163098bf59d60e01b81526001600160a01b038b8116600483018190529381166024830152604482018a90526064820193909352905191909216935063098bf59d9250608480830192600092919082900301818387803b158015613d3e57600080fd5b505af1158015613d52573d6000803e3d6000fd5b50506007546040805163098bf59d60e01b81526001600160a01b038a8116600483018190528a82166024840152604483018a90526064830152915191909216935063098bf59d9250608480830192600092919082900301818387803b158015613dba57600080fd5b505af1158015613dce573d6000803e3d6000fd5b50505050811561408157600854604080516309f4173d60e11b81526001600160a01b03888116600483018190526024830152915160009392909216916313e82e7a9160448082019260209290919082900301818787803b158015613e3157600080fd5b505af1158015613e45573d6000803e3d6000fd5b505050506040513d6020811015613e5b57600080fd5b505190508015613ee55760095460055460408051631e42d69b60e21b81526001600160a01b038a81166004830181905260248301529283166044820152606481018590529051919092169163790b5a6c91608480830192600092919082900301818387803b158015613ecc57600080fd5b505af1158015613ee0573d6000803e3d6000fd5b505050505b60095460055460408051637aeceb1f60e11b81526001600160a01b038a8116600483015292831660248201529051600093929092169163f5d9d63e91604480820192602092909190829003018186803b158015613f4157600080fd5b505afa158015613f55573d6000803e3d6000fd5b505050506040513d6020811015613f6b57600080fd5b50519050801561407e576000613f8b84613f858489614f36565b90614f8f565b6009546005546040805163098bf59d60e01b81526001600160a01b038d8116600483018190529381166024830152604482018690526064820193909352905193945091169163098bf59d9160848082019260009290919082900301818387803b158015613ff757600080fd5b505af115801561400b573d6000803e3d6000fd5b505060055460408051632770a7eb60e21b81526001600160a01b038d81166004830152602482018790529151919092169350639dc29fac9250604480830192600092919082900301818387803b15801561406457600080fd5b505af1158015614078573d6000803e3d6000fd5b50505050505b50505b604080516001600160a01b0380881682528616602082015280820185905290517f53db4328bb4bf5c5e46932d3ab2da63d3751d824b10d4f1f3f7a652f590956d09181900360600190a15050505050565b6007546040805163a318021760e01b81526001600160a01b0384811660048301529151919092169163a3180217916024808301926020929190829003018186803b15801561411f57600080fd5b505afa158015614133573d6000803e3d6000fd5b505050506040513d602081101561414957600080fd5b5051156141875760405162461bcd60e51b81526004018080602001828103825260378152602001806155286037913960400191505060405180910390fd5b60075460408051633792def360e01b81526001600160a01b03848116600483015291519190921691633792def3916024808301926020929190829003018186803b1580156141d457600080fd5b505afa1580156141e8573d6000803e3d6000fd5b505050506040513d60208110156141fe57600080fd5b50511561423c5760405162461bcd60e51b81526004018080602001828103825260348152602001806156586034913960400191505060405180910390fd5b6008546040805163a318021760e01b81526001600160a01b0384811660048301529151919092169163a3180217916024808301926020929190829003018186803b15801561428957600080fd5b505afa15801561429d573d6000803e3d6000fd5b505050506040513d60208110156142b357600080fd5b5051156142f15760405162461bcd60e51b815260040180806020018281038252603681526020018061535d6036913960400191505060405180910390fd5b60085460408051633792def360e01b81526001600160a01b03848116600483015291519190921691633792def3916024808301926020929190829003018186803b15801561433e57600080fd5b505afa158015614352573d6000803e3d6000fd5b505050506040513d602081101561436857600080fd5b5051156143a65760405162461bcd60e51b815260040180806020018281038252603381526020018061572a6033913960400191505060405180910390fd5b6009546040805163a318021760e01b81526001600160a01b0384811660048301529151919092169163a3180217916024808301926020929190829003018186803b1580156143f357600080fd5b505afa158015614407573d6000803e3d6000fd5b505050506040513d602081101561441d57600080fd5b50511561445b5760405162461bcd60e51b81526004018080602001828103825260348152602001806155806034913960400191505060405180910390fd5b60095460408051633792def360e01b81526001600160a01b03848116600483015291519190921691633792def3916024808301926020929190829003018186803b1580156144a857600080fd5b505afa1580156144bc573d6000803e3d6000fd5b505050506040513d60208110156144d257600080fd5b5051156145105760405162461bcd60e51b81526004018080602001828103825260318152602001806152526031913960400191505060405180910390fd5b600e5460408051631ccdc0d760e21b81526001600160a01b03848116600483015291519190921691637337035c916024808301926020929190829003018186803b15801561455d57600080fd5b505afa158015614571573d6000803e3d6000fd5b505050506040513d602081101561458757600080fd5b5051156145c55760405162461bcd60e51b815260040180806020018281038252603b8152602001806153ee603b913960400191505060405180910390fd5b600e5460408051635b8de71560e11b81526001600160a01b0384811660048301529151919092169163b71bce2a916024808301926020929190829003018186803b15801561461257600080fd5b505afa158015614626573d6000803e3d6000fd5b505050506040513d602081101561463c57600080fd5b50511561467a5760405162461bcd60e51b81526004018080602001828103825260388152602001806155ef6038913960400191505060405180910390fd5b600a546040805163a318021760e01b81526001600160a01b0384811660048301529151919092169163a3180217916024808301926020929190829003018186803b1580156146c757600080fd5b505afa1580156146db573d6000803e3d6000fd5b505050506040513d60208110156146f157600080fd5b50511561472f5760405162461bcd60e51b81526004018080602001828103825260378152602001806154aa6037913960400191505060405180910390fd5b600a5460408051633792def360e01b81526001600160a01b03848116600483015291519190921691633792def3916024808301926020929190829003018186803b15801561477c57600080fd5b505afa158015614790573d6000803e3d6000fd5b505050506040513d60208110156147a657600080fd5b5051156147e45760405162461bcd60e51b81526004018080602001828103825260348152602001806153296034913960400191505060405180910390fd5b600b546040805163a318021760e01b81526001600160a01b0384811660048301529151919092169163a3180217916024808301926020929190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051156148995760405162461bcd60e51b81526004018080602001828103825260348152602001806156f66034913960400191505060405180910390fd5b600b5460408051633792def360e01b81526001600160a01b03848116600483015291519190921691633792def3916024808301926020929190829003018186803b1580156148e657600080fd5b505afa1580156148fa573d6000803e3d6000fd5b505050506040513d602081101561491057600080fd5b50511561494e5760405162461bcd60e51b81526004018080602001828103825260318152602001806156276031913960400191505060405180910390fd5b600d5460408051631ccdc0d760e21b81526001600160a01b03848116600483015291519190921691637337035c916024808301926020929190829003018186803b15801561499b57600080fd5b505afa1580156149af573d6000803e3d6000fd5b505050506040513d60208110156149c557600080fd5b505115614a035760405162461bcd60e51b815260040180806020018281038252603b8152602001806155b4603b913960400191505060405180910390fd5b600d5460408051635b8de71560e11b81526001600160a01b0384811660048301529151919092169163b71bce2a916024808301926020929190829003018186803b158015614a5057600080fd5b505afa158015614a64573d6000803e3d6000fd5b505050506040513d6020811015614a7a57600080fd5b505115614ab85760405162461bcd60e51b81526004018080602001828103825260388152602001806153b66038913960400191505060405180910390fd5b600e54604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b158015614b0557600080fd5b505afa158015614b19573d6000803e3d6000fd5b505050506040513d6020811015614b2f57600080fd5b505115614b6d5760405162461bcd60e51b81526004018080602001828103825260238152602001806155056023913960400191505060405180910390fd5b600d54604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b158015614bba57600080fd5b505afa158015614bce573d6000803e3d6000fd5b505050506040513d6020811015614be457600080fd5b505115613a475760405162461bcd60e51b81526004018080602001828103825260238152602001806153936023913960400191505060405180910390fd5b6060614c77826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614fce9092919063ffffffff16565b805190915015610a3e57808060200190516020811015614c9657600080fd5b5051610a3e5760405162461bcd60e51b815260040180806020018281038252602a81526020018061568c602a913960400191505060405180910390fd5b600754604080516309f4173d60e11b81526001600160a01b03848116600483018190526024830152915160009392909216916313e82e7a9160448082019260209290919082900301818787803b158015614d2c57600080fd5b505af1158015614d40573d6000803e3d6000fd5b505050506040513d6020811015614d5657600080fd5b505190508015614d7a57600454614d7a90839081906001600160a01b031684613826565b600854604080516309f4173d60e11b81526001600160a01b03858116600483018190526024830152915160009392909216916313e82e7a9160448082019260209290919082900301818787803b158015614dd357600080fd5b505af1158015614de7573d6000803e3d6000fd5b505050506040513d6020811015614dfd57600080fd5b505190508015610a3e5760095460055460408051631e42d69b60e21b81526001600160a01b038781166004830181905260248301529283166044820152606481018590529051919092169163790b5a6c91608480830192600092919082900301818387803b158015614e6e57600080fd5b505af1158015614e82573d6000803e3d6000fd5b50505050505050565b600a54604080516309f4173d60e11b81526001600160a01b03848116600483018190526024830152915160009392909216916313e82e7a9160448082019260209290919082900301818787803b158015614ee457600080fd5b505af1158015614ef8573d6000803e3d6000fd5b505050506040513d6020811015614f0e57600080fd5b505190508015614f3257600454614f3290839081906001600160a01b031684613826565b5050565b600082614f4557506000613aa5565b82820282848281614f5257fe5b0414613aa25760405162461bcd60e51b815260040180806020018281038252602181526020018061555f6021913960400191505060405180910390fd5b6000613aa283836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250614fe7565b6060614fdd8484600085615089565b90505b9392505050565b600081836150735760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615038578181015183820152602001615020565b50505050905090810190601f1680156150655780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161507f57fe5b0495945050505050565b6060824710156150ca5760405162461bcd60e51b81526004018080602001828103825260268152602001806154846026913960400191505060405180910390fd5b6150d3856151e5565b615124576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106151635780518252601f199092019160209182019101615144565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146151c5576040519150601f19603f3d011682016040523d82523d6000602084013e6151ca565b606091505b50915091506151da8282866151eb565b979650505050505050565b3b151590565b606083156151fa575081614fe0565b82511561520a5782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561503857818101518382015260200161502056fe526577617264526f757465723a206665654d7963547261636b65722e63756d756c617469766552657761726473203e2030526577617264526f757465723a20696e76616c6964205f6d6c70416d6f756e745265656e7472616e637947756172643a207265656e7472616e742063616c6c007d6d7cfda37a857e91ee28f4cd0b7aa06fe8be7a7f3c4fed676140a76365a542526577617264526f757465723a2073656e646572206861732076657374656420746f6b656e73476f7665726e61626c653a20666f7262696464656e0000000000000000000000526577617264526f757465723a207374616b65644d6c70547261636b65722e63756d756c617469766552657761726473203e2030526577617264526f757465723a20626f6e75734d7963547261636b65722e617665726167655374616b6564416d6f756e7473203e2030526577617264526f757465723a206d6c705665737465722e62616c616e6365203e2030526577617264526f757465723a206d6c705665737465722e7472616e7366657272656443756d756c617469766552657761726473203e2030526577617264526f757465723a206d79635665737465722e7472616e73666572726564417665726167655374616b6564416d6f756e7473203e2030416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564526577617264526f757465723a20616c726561647920696e697469616c697a6564416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c526577617264526f757465723a207374616b65644d6c70547261636b65722e617665726167655374616b6564416d6f756e7473203e2030526577617264526f757465723a207472616e73666572206e6f74207369676e616c6c6564526577617264526f757465723a206d79635665737465722e62616c616e6365203e2030526577617264526f757465723a207374616b65644d7963547261636b65722e617665726167655374616b6564416d6f756e7473203e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526577617264526f757465723a206665654d7963547261636b65722e617665726167655374616b6564416d6f756e7473203e2030526577617264526f757465723a206d6c705665737465722e7472616e73666572726564417665726167655374616b6564416d6f756e7473203e2030526577617264526f757465723a206d79635665737465722e7472616e7366657272656443756d756c617469766552657761726473203e2030526577617264526f757465723a206665654d6c70547261636b65722e63756d756c617469766552657761726473203e2030526577617264526f757465723a207374616b65644d7963547261636b65722e63756d756c617469766552657761726473203e20305361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564cc7cb940d1fa10f6c95397bd7355aef0bad1b89bfc9cd922162720bff9110094526577617264526f757465723a20696e76616c6964205f616d6f756e74000000526577617264526f757465723a206665654d6c70547261636b65722e617665726167655374616b6564416d6f756e7473203e2030526577617264526f757465723a20626f6e75734d7963547261636b65722e63756d756c617469766552657761726473203e2030a2646970667358221220bca65db260041209710797aa3d03a6b874c75f3723bffc88322953f1b956760564736f6c634300060c0033

Deployed ByteCode Sourcemap

28453:19697:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29484:4;;-1:-1:-1;;;;;29484:4:0;29470:10;:18;29462:53;;;;;-1:-1:-1;;;29462:53:0;;;;;;;;;;;;-1:-1:-1;;;29462:53:0;;;;;;;;;;;;;;;28453:19697;;;;;30599:190;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30599:190:0;;;;;;;;;;;;;;;;;:::i;28085:18::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;28085:18:0;;;;;;;;;;;;;;30797:325;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30797:325:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30797:325:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30797:325:0;;;;;;;;-1:-1:-1;30797:325:0;;-1:-1:-1;;;;;30797:325:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30797:325:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30797:325:0;;-1:-1:-1;30797:325:0;;-1:-1:-1;;;;;30797:325:0:i;31130:157::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31130:157:0;;;;;;;;:::i;39570:207::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;39570:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;39570:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39570:207:0;;-1:-1:-1;39570:207:0;;-1:-1:-1;;;;;39570:207:0:i;36106:114::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36106:114:0;-1:-1:-1;;;;;36106:114:0;;:::i;29531:986::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29531:986:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;36228:3334::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36228:3334:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28623:25::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;31561:121;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31561:121:0;;:::i;28766:18::-;;;;;;;;;;;;;:::i;28657:19::-;;;;;;;;;;;;;:::i;29077:24::-;;;;;;;;;;;;;:::i;31295:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31295:123:0;;:::i;35113:392::-;;;;;;;;;;;;;:::i;34245:860::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34245:860:0;;;;;;;;;;;-1:-1:-1;;;;;34245:860:0;;:::i;:::-;;;;;;;;;;;;;;;;33446:791;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33446:791:0;;;;;;;;;;;;;;;;;;;;:::i;40170:2254::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40170:2254:0;-1:-1:-1;;;;;40170:2254:0;;:::i;31426:127::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31426:127:0;;:::i;28737:20::-;;;;;;;;;;;;;:::i;28900:28::-;;;;;;;;;;;;;:::i;28685:18::-;;;;;;;;;;;;;:::i;32608:830::-;;;;;;;;;;;;;;;;-1:-1:-1;32608:830:0;;;;;;;:::i;29046:24::-;;;;;;;;;;;;;:::i;31690:125::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31690:125:0;;:::i;29012:25::-;;;;;;;;;;;;;:::i;28285:76::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28285:76:0;-1:-1:-1;;;;;28285:76:0;;:::i;35768:240::-;;;;;;;;;;;;;:::i;28937:31::-;;;;;;;;;;;;;:::i;28863:30::-;;;;;;;;;;;;;:::i;28710:20::-;;;;;;;;;;;;;:::i;29110:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29110:51:0;-1:-1:-1;;;;;29110:51:0;;:::i;35513:247::-;;;;;;;;;;;;;:::i;39785:377::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39785:377:0;-1:-1:-1;;;;;39785:377:0;;:::i;31823:777::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31823:777:0;;;;;;;;;;;;;;;;;;:::i;36016:82::-;;;;;;;;;;;;;:::i;28825:31::-;;;;;;;;;;;;;:::i;28975:28::-;;;;;;;;;;;;;:::i;30599:190::-;28228:3;;-1:-1:-1;;;;;28228:3:0;28214:10;:17;28206:51;;;;;-1:-1:-1;;;28206:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28206:51:0;;;;;;;;;;;;;;;30735:46:::1;-1:-1:-1::0;;;;;30735:27:0;::::1;30763:8:::0;30773:7;30735:27:::1;:46::i;:::-;30599:190:::0;;;:::o;28085:18::-;;;-1:-1:-1;;;;;28085:18:0;;:::o;30797:325::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;28228:3:::1;::::0;-1:-1:-1;;;;;28228:3:0::1;28214:10;:17;28206:51;;;::::0;;-1:-1:-1;;;28206:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;28206:51:0;;;;;;;;;;;;;::::1;;30973:3:::2;::::0;-1:-1:-1;;;;;30973:3:0::2;30958:12;30987:128;31011:9;:16;31007:1;:20;30987:128;;;31049:54;31059:10;31071:9;31081:1;31071:12;;;;;;;;;;;;;;31085:4;31091:8;31100:1;31091:11;;;;;;;;;;;;;;31049:9;:54::i;:::-;31029:3;;30987:128;;;-1:-1:-1::0;;22304:1:0;23265:7;:22;-1:-1:-1;;30797:325:0:o;31130:157::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;28228:3:::1;::::0;-1:-1:-1;;;;;28228:3:0::1;28214:10;:17;28206:51;;;::::0;;-1:-1:-1;;;28206:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;28206:51:0;;;;;;;;;;;;;::::1;;31266:3:::2;::::0;31234:45:::2;::::0;31244:10:::2;::::0;31256:8;;-1:-1:-1;;;;;31266:3:0::2;31271:7:::0;31234:9:::2;:45::i;:::-;-1:-1:-1::0;;22304:1:0;23265:7;:22;31130:157::o;39570:207::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;28228:3:::1;::::0;-1:-1:-1;;;;;28228:3:0::1;28214:10;:17;28206:51;;;::::0;;-1:-1:-1;;;28206:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;28206:51:0;;;;;;;;;;;;;::::1;;39678:9:::2;39673:97;39697:9;:16;39693:1;:20;39673:97;;;39735:23;39745:9;39755:1;39745:12;;;;;;;;;;;;;;39735:9;:23::i;:::-;39715:3;;39673:97;;36106:114:::0;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;28228:3:::1;::::0;-1:-1:-1;;;;;28228:3:0::1;28214:10;:17;28206:51;;;::::0;;-1:-1:-1;;;28206:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;28206:51:0;;;;;;;;;;;;;::::1;;36193:19:::2;36203:8;36193:9;:19::i;:::-;-1:-1:-1::0;22304:1:0;23265:7;:22;36106:114::o;29531:986::-;28228:3;;-1:-1:-1;;;;;28228:3:0;28214:10;:17;28206:51;;;;;-1:-1:-1;;;28206:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28206:51:0;;;;;;;;;;;;;;;29976:13:::1;::::0;-1:-1:-1;;;29976:13:0;::::1;;;29975:14;29967:60;;;;-1:-1:-1::0;;;29967:60:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30054:4;30038:20:::0;;-1:-1:-1;;;;30038:20:0::1;-1:-1:-1::0;;;30038:20:0::1;::::0;;30071:4:::1;:12:::0;;-1:-1:-1;;;;;30071:12:0;;::::1;-1:-1:-1::0;;;;;;30071:12:0;;::::1;;::::0;;;30096:3:::1;:10:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30117:5:::1;:14:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30142:5:::1;:14:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30169:3:::1;:10:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30192:16:::1;:36:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30239:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30284:13:::1;:30:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;30327:13:::1;:30:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;30368:16:::1;:36:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;30417:10:::1;:24:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;30454:9:::1;:22:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;30487:9:::1;:22:::0;;;;;::::1;::::0;::::1;;::::0;;29531:986::o;36228:3334::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;;;36589:10:::1;::::0;36644:262;::::1;;;36709:9;::::0;36701:52:::1;::::0;;-1:-1:-1;;;36701:52:0;;-1:-1:-1;;;;;36701:52:0;;::::1;;::::0;::::1;::::0;;;;;;;;;36680:18:::1;::::0;36709:9;;;::::1;::::0;36701:34:::1;::::0;:52;;;;;::::1;::::0;;;;;;;;;36680:18;36709:9;36701:52;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;36701:52:0;36797:9:::1;::::0;36789:52:::1;::::0;;-1:-1:-1;;;36789:52:0;;-1:-1:-1;;;;;36789:52:0;;::::1;;::::0;::::1;::::0;;;;;;;;;36701;;-1:-1:-1;36768:18:0::1;::::0;36797:9;;;::::1;::::0;36789:34:::1;::::0;:52;;;;;36701::::1;::::0;36789;;;;;;;36768:18;36797:9;36789:52;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;36789:52:0;;-1:-1:-1;36868:26:0::1;:10:::0;36789:52;36868:14:::1;:26::i;:::-;36856:38;;36644:262;;;36922:15;:32;;;;;36953:1;36941:9;:13;36922:32;36918:108;;;36999:3;::::0;36971:43:::1;::::0;36981:7;;;;-1:-1:-1;;;;;36999:3:0::1;37004:9:::0;36971::::1;:43::i;:::-;37038:19;37076:17;37072:302;;;37148:16;::::0;37133:66:::1;::::0;;-1:-1:-1;;;37133:66:0;;-1:-1:-1;;;;;37133:66:0;;::::1;;::::0;::::1;::::0;;;;;;;;;37110:20:::1;::::0;37148:16;;;::::1;::::0;37133:48:::1;::::0;:66;;;;;::::1;::::0;;;;;;;;;37110:20;37148:16;37133:66;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;37133:66:0;37252:16:::1;::::0;37237:66:::1;::::0;;-1:-1:-1;;;37237:66:0;;-1:-1:-1;;;;;37237:66:0;;::::1;;::::0;::::1;::::0;;;;;;;;;37133;;-1:-1:-1;37214:20:0::1;::::0;37252:16;;;::::1;::::0;37237:48:::1;::::0;:66;;;;;37133::::1;::::0;37237;;;;;;;37214:20;37252:16;37237:66;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;37237:66:0;;-1:-1:-1;37332:30:0::1;:12:::0;37237:66;37332:16:::1;:30::i;:::-;37318:44;;37072:302;;;37390:17;:36;;;;;37425:1;37411:11;:15;37390:36;37386:116;;;37471:5;::::0;37443:47:::1;::::0;37453:7;;;;-1:-1:-1;;;;;37471:5:0::1;37478:11:::0;37443:9:::1;:47::i;:::-;37518:28;37514:301;;;37600:15;::::0;37585:65:::1;::::0;;-1:-1:-1;;;37585:65:0;;-1:-1:-1;;;;;37585:65:0;;::::1;;::::0;::::1;::::0;;;;;;;;;37563:19:::1;::::0;37600:15;;;::::1;::::0;37585:47:::1;::::0;:65;;;;;::::1;::::0;;;;;;;;;37563:19;37600:15;37585:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;37585:65:0;;-1:-1:-1;37669:15:0;;37665:139:::1;;37720:13;::::0;37769:5:::1;::::0;37705:83:::1;::::0;;-1:-1:-1;;;37705:83:0;;-1:-1:-1;;;;;37705:83:0;;::::1;;::::0;::::1;::::0;;;;;;;37769:5;;::::1;37705:83:::0;;;;;;;;;;;;37720:13;;;::::1;::::0;37705:45:::1;::::0;:83;;;;;37720:13:::1;::::0;37705:83;;;;;;;37720:13;;37705:83;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;37665:139;37514:301;;37831:16;37827:1728;;;37868:21;37864:1680;;;37941:13;::::0;37926:69:::1;::::0;;-1:-1:-1;;;37926:69:0;;-1:-1:-1;;;;;37926:69:0;;::::1;;::::0;::::1;::::0;37989:4:::1;37926:69:::0;;;;;;37910:13:::1;::::0;37941;;;::::1;::::0;37926:45:::1;::::0;:69;;;;;::::1;::::0;;;;;;;;;37910:13;37941;37926:69;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;37926:69:0;38045:13:::1;::::0;38030:69:::1;::::0;;-1:-1:-1;;;38030:69:0;;-1:-1:-1;;;;;38030:69:0;;::::1;;::::0;::::1;::::0;38093:4:::1;38030:69:::0;;;;;;37926;;-1:-1:-1;38014:13:0::1;::::0;38045;;;::::1;::::0;38030:45:::1;::::0;:69;;;;;37926::::1;::::0;38030;;;;;;;38014:13;38045;38030:69;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;38030:69:0;;-1:-1:-1;38120:18:0::1;38141:16;:5:::0;38030:69;38141:9:::1;:16::i;:::-;38120:37:::0;-1:-1:-1;38226:14:0;;38222:694:::1;;38272:4;::::0;38286:10:::1;::::0;38265:44:::1;::::0;;-1:-1:-1;;;38265:44:0;;-1:-1:-1;;;;;38286:10:0;;::::1;38265:44;::::0;::::1;::::0;;;;;;;;;38272:4;;;::::1;::::0;38265:20:::1;::::0;:44;;;;;::::1;::::0;;;;;;;;38272:4:::1;::::0;38265:44;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;38364:10:0::1;::::0;38499:4:::1;::::0;38352:267:::1;::::0;;-1:-1:-1;;;38352:267:0;;38433:4:::1;38352:267;::::0;::::1;::::0;-1:-1:-1;;;;;38352:267:0;;::::1;::::0;;;;38499:4;;::::1;38352:267:::0;;;;;;;;;;38332:17:::1;38352:267:::0;;;;;;;;;;;;;;38332:17;;38364:10;;;::::1;::::0;38352:46:::1;::::0;:267;;;;;38265:44:::1;::::0;38352:267;;;;;;;38332:17;38364:10;38352:267;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;38352:267:0;38659:13:::1;::::0;38708:3:::1;::::0;38644:79:::1;::::0;;-1:-1:-1;;;38644:79:0;;-1:-1:-1;;;;;38644:79:0;;::::1;;::::0;::::1;::::0;;;;;;;38708:3;;::::1;38644:79:::0;;;;;;;;;;;;38352:267;;-1:-1:-1;38659:13:0;::::1;::::0;38644:45:::1;::::0;:79;;;;;38659:13:::1;::::0;38644:79;;;;;;;;38659:13;;38644:79;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;38761:16:0::1;::::0;38813:13:::1;::::0;38746:92:::1;::::0;;-1:-1:-1;;;38746:92:0;;-1:-1:-1;;;;;38746:92:0;;::::1;;::::0;::::1;::::0;;;;;;;38813:13;;::::1;38746:92:::0;;;;;;;;;;;;38761:16;;;::::1;::::0;-1:-1:-1;38746:48:0::1;::::0;-1:-1:-1;38746:92:0;;;;;38761:16:::1;::::0;38746:92;;;;;;;38761:16;;38746:92;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;38868:28:0::1;::::0;;-1:-1:-1;;;;;38868:28:0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;38868:28:0;-1:-1:-1;38868:28:0;;;;;;;;-1:-1:-1;38868:28:0::1;38222:694;;37864:1680;;;;;;38941:23;38937:607;;;39016:13;::::0;39001:69:::1;::::0;;-1:-1:-1;;;39001:69:0;;-1:-1:-1;;;;;39001:69:0;;::::1;;::::0;::::1;::::0;39064:4:::1;39001:69:::0;;;;;;38985:13:::1;::::0;39016;;;::::1;::::0;39001:45:::1;::::0;:69;;;;;::::1;::::0;;;;;;;;;38985:13;39016;39001:69;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;39001:69:0;39120:13:::1;::::0;39105:69:::1;::::0;;-1:-1:-1;;;39105:69:0;;-1:-1:-1;;;;;39105:69:0;;::::1;;::::0;::::1;::::0;39168:4:::1;39105:69:::0;;;;;;39001;;-1:-1:-1;39089:13:0::1;::::0;39120;;;::::1;::::0;39105:45:::1;::::0;:69;;;;;39001::::1;::::0;39105;;;;;;;39089:13;39120;39105:69;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;39105:69:0;;-1:-1:-1;39195:18:0::1;39216:16;:5:::0;39105:69;39216:9:::1;:16::i;:::-;39259:4;::::0;39253:32:::1;::::0;;-1:-1:-1;;;39253:32:0;;::::1;::::0;::::1;::::0;;;;;39195:37;;-1:-1:-1;;;;;;39259:4:0;;::::1;::::0;39253:20:::1;::::0;:32;;;;;39259:4:::1;::::0;39253:32;;;;;;;;39259:4;;39253:32;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;39304:38:0::1;::::0;-1:-1:-1;;;;;;;;39304:26:0;::::1;39331:10:::0;39304:26:::1;:38::i;38937:607::-;39398:13;::::0;39383:63:::1;::::0;;-1:-1:-1;;;39383:63:0;;-1:-1:-1;;;;;39383:63:0;;::::1;;::::0;::::1;::::0;;;;;;;;;39398:13;;;::::1;::::0;39383:45:::1;::::0;:63;;;;;::::1;::::0;;;;;;;;39398:13:::1;::::0;39383:63;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;39480:13:0::1;::::0;39465:63:::1;::::0;;-1:-1:-1;;;39465:63:0;;-1:-1:-1;;;;;39465:63:0;;::::1;;::::0;::::1;::::0;;;;;;;;;39480:13;;;::::1;::::0;39465:45:::1;::::0;:63;;;;;39383::::1;::::0;39465;;;;;;;39480:13:::1;::::0;39465:63;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;38937:607:0::1;-1:-1:-1::0;;22304:1:0;23265:7;:22;-1:-1:-1;;;;;;;;;36228:3334:0:o;28623:25::-;;;-1:-1:-1;;;28623:25:0;;;;;:::o;31561:121::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;31655:3:::1;::::0;31631:43:::1;::::0;31643:10:::1;::::0;-1:-1:-1;;;;;31655:3:0::1;31660:7:::0;31655:3;31631:11:::1;:43::i;28766:18::-:0;;;-1:-1:-1;;;;;28766:18:0;;:::o;28657:19::-;;;-1:-1:-1;;;;;28657:19:0;;:::o;29077:24::-;;;-1:-1:-1;;;;;29077:24:0;;:::o;31295:123::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;31397:3:::1;::::0;31363:47:::1;::::0;31373:10:::1;::::0;;;-1:-1:-1;;;;;31397:3:0::1;31402:7:::0;31363:9:::1;:47::i;35113:392::-:0;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;;;35219:13:::1;::::0;35204:63:::1;::::0;;-1:-1:-1;;;35204:63:0;;35181:10:::1;35204:63;::::0;::::1;::::0;;;;;;;;;;;35181:10;;-1:-1:-1;;;;;35219:13:0;;::::1;::::0;35204:45:::1;::::0;:63;;;;;::::1;::::0;;;;;;;;;;;35219:13;35204:63;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;35293:13:0::1;::::0;35278:63:::1;::::0;;-1:-1:-1;;;35278:63:0;;-1:-1:-1;;;;;35278:63:0;;::::1;;::::0;::::1;::::0;;;;;;;;;35293:13;;;::::1;::::0;35278:45:::1;::::0;:63;;;;;35204::::1;::::0;35278;;;;;;;35293:13:::1;::::0;35278:63;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;35369:16:0::1;::::0;35354:66:::1;::::0;;-1:-1:-1;;;35354:66:0;;-1:-1:-1;;;;;35354:66:0;;::::1;;::::0;::::1;::::0;;;;;;;;;35369:16;;;::::1;::::0;35354:48:::1;::::0;:66;;;;;35278:63:::1;::::0;35354:66;;;;;;;35369:16:::1;::::0;35354:66;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;35446:16:0::1;::::0;35431:66:::1;::::0;;-1:-1:-1;;;35431:66:0;;-1:-1:-1;;;;;35431:66:0;;::::1;;::::0;::::1;::::0;;;;;;;;;35446:16;;;::::1;::::0;35431:48:::1;::::0;:66;;;;;35354::::1;::::0;35431;;;;;;;35446:16:::1;::::0;35431:66;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;22304:1:0;23265:7;:22;-1:-1:-1;35113:392:0:o;34245:860::-;34406:7;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;34434:14;34426:59:::1;;;::::0;;-1:-1:-1;;;34426:59:0;;::::1;;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;;;;;;;34426:59:0;;;;;;;;;;;;;::::1;;34552:16;::::0;34597:13:::1;::::0;34537:95:::1;::::0;;-1:-1:-1;;;34537:95:0;;34516:10:::1;34537:95;::::0;::::1;::::0;;;-1:-1:-1;;;;;34597:13:0;;::::1;34537:95:::0;;;;;;;;;;;;;;;;;;34516:10;;34552:16;;;::::1;::::0;34537:50:::1;::::0;:95;;;;;34498:15:::1;::::0;34537:95;;;;;;;34498:15;34552:16;34537:95;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;34658:13:0::1;::::0;34700:3:::1;::::0;34643:82:::1;::::0;;-1:-1:-1;;;34643:82:0;;-1:-1:-1;;;;;34643:82:0;;::::1;;::::0;::::1;::::0;;;34700:3;;::::1;34643:82:::0;;;;;;;;;;;;;;;;;;;34658:13;;;::::1;::::0;-1:-1:-1;34643:47:0::1;::::0;-1:-1:-1;34643:82:0;;;;;34658:13:::1;::::0;34643:82;;;;;;;34658:13;;34643:82;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;34768:10:0::1;::::0;34842:4:::1;::::0;34756:176:::1;::::0;;-1:-1:-1;;;34756:176:0;;-1:-1:-1;;;;;34756:176:0;;::::1;;::::0;::::1;::::0;34842:4;;::::1;34756:176:::0;;;;;;;;;;;;;;;;34916:4:::1;34756:176:::0;;;;;;34736:17:::1;::::0;-1:-1:-1;34768:10:0;;;::::1;::::0;-1:-1:-1;34756:49:0::1;::::0;:176;;;;;::::1;::::0;;;;;;;;;34736:17;34768:10;34756:176;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;34756:176:0;34951:4:::1;::::0;34945:31:::1;::::0;;-1:-1:-1;;;34945:31:0;;::::1;::::0;::::1;::::0;;;;;34756:176;;-1:-1:-1;;;;;;34951:4:0;;::::1;::::0;34945:20:::1;::::0;:31;;;;;34951:4:::1;::::0;34945:31;;;;;;;;34951:4;;34945:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;34989:30:0::1;::::0;-1:-1:-1;;;;;;;;34989:19:0;::::1;35009:9:::0;34989:19:::1;:30::i;:::-;35037:31;::::0;;-1:-1:-1;;;;;35037:31:0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;35037:31:0;;;;;;;;;::::1;22304:1:::0;23265:7;:22;35088:9;34245:860;-1:-1:-1;;;;;34245:860:0:o;33446:791::-;33624:7;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;33652:14;33644:59:::1;;;::::0;;-1:-1:-1;;;33644:59:0;;::::1;;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;;;;;;;33644:59:0;;;;;;;;;;;;;::::1;;33770:16;::::0;33815:13:::1;::::0;33755:95:::1;::::0;;-1:-1:-1;;;33755:95:0;;33734:10:::1;33755:95;::::0;::::1;::::0;;;-1:-1:-1;;;;;33815:13:0;;::::1;33755:95:::0;;;;;;;;;;;;;;;;;;33734:10;;33770:16;;;::::1;::::0;33755:50:::1;::::0;:95;;;;;33716:15:::1;::::0;33755:95;;;;;;;33716:15;33770:16;33755:95;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;33876:13:0::1;::::0;33918:3:::1;::::0;33861:82:::1;::::0;;-1:-1:-1;;;33861:82:0;;-1:-1:-1;;;;;33861:82:0;;::::1;;::::0;::::1;::::0;;;33918:3;;::::1;33861:82:::0;;;;;;;;;;;;;;;;;;;33876:13;;;::::1;::::0;-1:-1:-1;33861:47:0::1;::::0;-1:-1:-1;33861:82:0;;;;;33876:13:::1;::::0;33861:82;;;;;;;33876:13;;33861:82;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;33986:10:0::1;::::0;33974:177:::1;::::0;;-1:-1:-1;;;33974:177:0;;-1:-1:-1;;;;;33974:177:0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;33954:17:::1;::::0;-1:-1:-1;33986:10:0;;;::::1;::::0;-1:-1:-1;33974:49:0::1;::::0;:177;;;;;::::1;::::0;;;;;;;;;33954:17;33986:10;33974:177;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;33974:177:0;34169:31:::1;::::0;;-1:-1:-1;;;;;34169:31:0;::::1;::::0;;33974:177:::1;34169:31:::0;::::1;::::0;;;;;33974:177;;-1:-1:-1;;;;;;;;;;;;34169:31:0;;;;;;;;;::::1;22304:1:::0;23265:7;:22;34220:9;33446:791;-1:-1:-1;;;;;;33446:791:0:o;40170:2254::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;40259:9:::1;::::0;40252:36:::1;::::0;;-1:-1:-1;;;40252:36:0;;-1:-1:-1;;;;;40252:36:0;;::::1;;::::0;::::1;::::0;;;40259:9;;;::::1;::::0;40252:27:::1;::::0;:36;;;;;::::1;::::0;;;;;;;;40259:9;40252:36;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40252:36:0;:41;40244:92:::1;;;;-1:-1:-1::0;;;40244:92:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40362:9;::::0;40355:36:::1;::::0;;-1:-1:-1;;;40355:36:0;;-1:-1:-1;;;;;40355:36:0;;::::1;;::::0;::::1;::::0;;;40362:9;;;::::1;::::0;40355:27:::1;::::0;:36;;;;;::::1;::::0;;;;;;;;40362:9;40355:36;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40355:36:0;:41;40347:92:::1;;;;-1:-1:-1::0;;;40347:92:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;40500:25:0;;::::1;40452:16;40500:25:::0;;;:16:::1;:25;::::0;;;;;40471:10:::1;::::0;40500:25:::1;:37:::0;::::1;40492:86;;;;-1:-1:-1::0;;;40492:86:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;40596:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;40589:32;;-1:-1:-1;;;;;;40589:32:0::1;::::0;;40634:27:::1;40652:8:::0;40634:17:::1;:27::i;:::-;40672:18;40682:7;40672:9;:18::i;:::-;40738:16;::::0;40781:3:::1;::::0;40723:62:::1;::::0;;-1:-1:-1;;;40723:62:0;;-1:-1:-1;;;;;40723:62:0;;::::1;;::::0;::::1;::::0;40781:3;;::::1;40723:62:::0;;;;;;40703:17:::1;::::0;40738:16;;;::::1;::::0;40723:48:::1;::::0;:62;;;;;::::1;::::0;;;;;;;;;40738:16;40723:62;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40723:62:0;;-1:-1:-1;40800:13:0;;40796:148:::1;;40851:3;::::0;40830:43:::1;::::0;40842:7;;-1:-1:-1;;;;;40851:3:0::1;40856:9:::0;40851:3:::1;40830:11;:43::i;:::-;40917:3;::::0;40888:44:::1;::::0;40898:7;;40907:8;;-1:-1:-1;;;;;40917:3:0::1;40922:9:::0;40888::::1;:44::i;:::-;40993:16;::::0;41036:5:::1;::::0;;40978:64:::1;::::0;;-1:-1:-1;;;40978:64:0;;-1:-1:-1;;;;;40978:64:0;;::::1;::::0;;::::1;::::0;;;;41036:5;;::::1;40978:64:::0;;;;;40956:19:::1;::::0;40993:16;;;::::1;::::0;40978:48:::1;::::0;:64;;;;;::::1;::::0;;;;;;;;;40993:16;40978:64;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40978:64:0;;-1:-1:-1;41057:15:0;;41053:158:::1;;41110:5;::::0;41089:47:::1;::::0;41101:7;;-1:-1:-1;;;;;41110:5:0::1;41117:11:::0;41110:5:::1;41089:11;:47::i;:::-;41180:5;::::0;41151:48:::1;::::0;41161:7;;41170:8;;-1:-1:-1;;;;;41180:5:0::1;41187:11:::0;41151:9:::1;:48::i;:::-;41260:13;::::0;41300:5:::1;::::0;41245:61:::1;::::0;;-1:-1:-1;;;41245:61:0;;-1:-1:-1;;;;;41245:61:0;;::::1;;::::0;::::1;::::0;41300:5;;::::1;41245:61:::0;;;;;;41223:19:::1;::::0;41260:13;;;::::1;::::0;41245:45:::1;::::0;:61;;;;;::::1;::::0;;;;;;;;;41260:13;41245:61;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;41245:61:0;;-1:-1:-1;41321:15:0;;41317:232:::1;;41368:13;::::0;41410:5:::1;::::0;41353:85:::1;::::0;;-1:-1:-1;;;41353:85:0;;-1:-1:-1;;;;;41353:85:0;;::::1;;::::0;::::1;::::0;;;41410:5;;::::1;41353:85:::0;;;;;;;;;;;;;;;;;;;41368:13;;;::::1;::::0;41353:47:::1;::::0;:85;;;;;41368:13:::1;::::0;41353:85;;;;;;;41368:13;;41353:85;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;41468:13:0::1;::::0;41518:5:::1;::::0;41453:84:::1;::::0;;-1:-1:-1;;;41453:84:0;;-1:-1:-1;;;;;41453:84:0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;41518:5;;::::1;41453:84:::0;;;;;;;;;;;;41468:13;;;::::1;::::0;-1:-1:-1;41453:45:0::1;::::0;-1:-1:-1;41453:84:0;;;;;41468:13:::1;::::0;41453:84;;;;;;;41468:13;;41453:84;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41317:232;41561:20;41591:5;;;;;;;;;-1:-1:-1::0;;;;;41591:5:0::1;-1:-1:-1::0;;;;;41584:23:0::1;;41608:7;41584:32;;;;;;;;;;;;;-1:-1:-1::0;;;;;41584:32:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;41584:32:0;;-1:-1:-1;41631:16:0;;41627:108:::1;;41671:5;::::0;;41664:59:::1;::::0;;-1:-1:-1;;;41664:59:0;;-1:-1:-1;;;;;41664:59:0;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;;;;;41671:5;;;::::1;::::0;41664:26:::1;::::0;:59;;;;;::::1;::::0;;;;;;;;;41671:5:::1;::::0;41664:59;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;41627:108:0::1;41782:13;::::0;41822:3:::1;::::0;41767:59:::1;::::0;;-1:-1:-1;;;41767:59:0;;-1:-1:-1;;;;;41767:59:0;;::::1;;::::0;::::1;::::0;41822:3;;::::1;41767:59:::0;;;;;;41747:17:::1;::::0;41782:13;;;::::1;::::0;41767:45:::1;::::0;:59;;;;;::::1;::::0;;;;;;;;;41782:13;41767:59;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;41767:59:0;;-1:-1:-1;41841:13:0;;41837:442:::1;;41886:16;::::0;41931:13:::1;::::0;41871:94:::1;::::0;;-1:-1:-1;;;41871:94:0;;-1:-1:-1;;;;;41871:94:0;;::::1;;::::0;::::1;::::0;;;41931:13;;::::1;41871:94:::0;;;;;;;;;;;;;;;;;;;41886:16;;;::::1;::::0;41871:50:::1;::::0;:94;;;;;41886:16:::1;::::0;41871:94;;;;;;;41886:16;;41871:94;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;41995:13:0::1;::::0;42037:3:::1;::::0;41980:81:::1;::::0;;-1:-1:-1;;;41980:81:0;;-1:-1:-1;;;;;41980:81:0;;::::1;;::::0;::::1;::::0;;;42037:3;;::::1;41980:81:::0;;;;;;;;;;;;;;;;;;;41995:13;;;::::1;::::0;-1:-1:-1;41980:47:0::1;::::0;-1:-1:-1;41980:81:0;;;;;41995:13:::1;::::0;41980:81;;;;;;;41995:13;;41980:81;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;42093:13:0::1;::::0;42143:3:::1;::::0;42078:80:::1;::::0;;-1:-1:-1;;;42078:80:0;;-1:-1:-1;;;;;42078:80:0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;42143:3;;::::1;42078:80:::0;;;;;;;;;;;;42093:13;;;::::1;::::0;-1:-1:-1;42078:45:0::1;::::0;-1:-1:-1;42078:80:0;;;;;42093:13:::1;::::0;42078:80;;;;;;;42093:13;;42078:80;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;42188:16:0::1;::::0;42242:13:::1;::::0;42173:94:::1;::::0;;-1:-1:-1;;;42173:94:0;;-1:-1:-1;;;;;42173:94:0;;::::1;;::::0;::::1;::::0;;;;;;;42242:13;;::::1;42173:94:::0;;;;;;;;;;;;42188:16;;;::::1;::::0;-1:-1:-1;42173:48:0::1;::::0;-1:-1:-1;42173:94:0;;;;;42188:16:::1;::::0;42173:94;;;;;;;42188:16;;42173:94;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41837:442;42299:9;::::0;42291:57:::1;::::0;;-1:-1:-1;;;42291:57:0;;-1:-1:-1;;;;;42291:57:0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;42299:9;;;::::1;::::0;42291:38:::1;::::0;:57;;;;;42299:9:::1;::::0;42291:57;;;;;;;42299:9;;42291:57;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;42367:9:0::1;::::0;42359:57:::1;::::0;;-1:-1:-1;;;42359:57:0;;-1:-1:-1;;;;;42359:57:0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;42367:9;;;::::1;::::0;-1:-1:-1;42359:38:0::1;::::0;-1:-1:-1;42359:57:0;;;;;42367:9:::1;::::0;42359:57;;;;;;;42367:9;;42359:57;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;31426:127:::0;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;31530:5:::1;::::0;31496:49:::1;::::0;31506:10:::1;::::0;;;-1:-1:-1;;;;;31530:5:0::1;31537:7:::0;31496:9:::1;:49::i;28737:20::-:0;;;-1:-1:-1;;;;;28737:20:0;;:::o;28900:28::-;;;-1:-1:-1;;;;;28900:28:0;;:::o;28685:18::-;;;-1:-1:-1;;;;;28685:18:0;;:::o;32608:830::-;32710:7;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;32738:9:::1;32730:57;;;::::0;;-1:-1:-1;;;32730:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32806:4;;;;;;;;;-1:-1:-1::0;;;;;32806:4:0::1;-1:-1:-1::0;;;;;32800:19:0::1;;32827:9;32800:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;32857:4:0::1;::::0;32871:10:::1;::::0;32850:43:::1;::::0;;-1:-1:-1;;;32850:43:0;;-1:-1:-1;;;;;32871:10:0;;::::1;32850:43;::::0;::::1;::::0;32883:9:::1;32850:43:::0;;;;;;32857:4;;;::::1;::::0;-1:-1:-1;32850:20:0::1;::::0;-1:-1:-1;32850:43:0;;;;;-1:-1:-1;32850:43:0::1;::::0;;;;;;32857:4:::1;::::0;32850:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;32977:10:0::1;::::0;33076:4:::1;::::0;32965:195:::1;::::0;;-1:-1:-1;;;32965:195:0;;33034:4:::1;32965:195;::::0;::::1;::::0;32924:10:::1;32965:195:::0;;;;;;-1:-1:-1;;;;;33076:4:0;;::::1;32965:195:::0;;;;33095:9:::1;32965:195:::0;;;;;;;;;;;;;;;;;;32924:10;;32906:15:::1;::::0;32977:10:::1;::::0;32965:46:::1;::::0;:195;;;;;32850:43:::1;::::0;32965:195;;;;;;;;32906:15;32977:10;32965:195;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32965:195:0;33188:13:::1;::::0;33237:3:::1;::::0;33173:79:::1;::::0;;-1:-1:-1;;;33173:79:0;;-1:-1:-1;;;;;33173:79:0;;::::1;;::::0;::::1;::::0;;;;;;;33237:3;;::::1;33173:79:::0;;;;;;;;;;;;32965:195;;-1:-1:-1;33188:13:0;::::1;::::0;33173:45:::1;::::0;:79;;;;;33188:13:::1;::::0;33173:79;;;;;;;;33188:13;;33173:79;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;33278:16:0::1;::::0;33330:13:::1;::::0;33263:92:::1;::::0;;-1:-1:-1;;;33263:92:0;;-1:-1:-1;;;;;33263:92:0;;::::1;;::::0;::::1;::::0;;;;;;;33330:13;;::::1;33263:92:::0;;;;;;;;;;;;33278:16;;;::::1;::::0;-1:-1:-1;33263:48:0::1;::::0;-1:-1:-1;33263:92:0;;;;;33278:16:::1;::::0;33263:92;;;;;;;33278:16;;33263:92;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;33373:28:0::1;::::0;;-1:-1:-1;;;;;33373:28:0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;33373:28:0;-1:-1:-1;33373:28:0;;;;;;;;-1:-1:-1;33373:28:0::1;22304:1:::0;23265:7;:22;33421:9;32608:830;-1:-1:-1;;;;32608:830:0:o;29046:24::-;;;-1:-1:-1;;;;;29046:24:0;;:::o;31690:125::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;31786:5:::1;::::0;31762:45:::1;::::0;31774:10:::1;::::0;-1:-1:-1;;;;;31786:5:0::1;31793:7:::0;31786:5;31762:11:::1;:45::i;29012:25::-:0;;;-1:-1:-1;;;;;29012:25:0;;:::o;28285:76::-;28228:3;;-1:-1:-1;;;;;28228:3:0;28214:10;:17;28206:51;;;;;-1:-1:-1;;;28206:51:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28206:51:0;;;;;;;;;;;;;;;28343:3:::1;:10:::0;;-1:-1:-1;;;;;;28343:10:0::1;-1:-1:-1::0;;;;;28343:10:0;;;::::1;::::0;;;::::1;::::0;;28285:76::o;35768:240::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;;;35878:13:::1;::::0;35863:63:::1;::::0;;-1:-1:-1;;;35863:63:0;;35840:10:::1;35863:63;::::0;::::1;::::0;;;;;;;;;;;35840:10;;-1:-1:-1;;;;;35878:13:0;;::::1;::::0;35863:45:::1;::::0;:63;;;;;::::1;::::0;;;;;;;;;;;35878:13;35863:63;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;35952:13:0::1;::::0;35937:63:::1;::::0;;-1:-1:-1;;;35937:63:0;;-1:-1:-1;;;;;35937:63:0;;::::1;;::::0;::::1;::::0;;;;;;;;;35952:13;;;::::1;::::0;35937:45:::1;::::0;:63;;;;;35863::::1;::::0;35937;;;;;;;35952:13:::1;::::0;35937:63;::::1;;::::0;::::1;;;;::::0;::::1;28937:31:::0;;;-1:-1:-1;;;;;28937:31:0;;:::o;28863:30::-;;;-1:-1:-1;;;;;28863:30:0;;:::o;28710:20::-;;;-1:-1:-1;;;;;28710:20:0;;:::o;29110:51::-;;;;;;;;;;;;-1:-1:-1;;;;;29110:51:0;;:::o;35513:247::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;;;35624:16:::1;::::0;35609:66:::1;::::0;;-1:-1:-1;;;35609:66:0;;35586:10:::1;35609:66;::::0;::::1;::::0;;;;;;;;;;;35586:10;;-1:-1:-1;;;;;35624:16:0;;::::1;::::0;35609:48:::1;::::0;:66;;;;;::::1;::::0;;;;;;;;;;;35624:16;35609:66;::::1;;::::0;::::1;;;;::::0;::::1;39785:377:::0;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;39876:9:::1;::::0;39869:39:::1;::::0;;-1:-1:-1;;;39869:39:0;;39897:10:::1;39869:39;::::0;::::1;::::0;;;-1:-1:-1;;;;;39876:9:0;;::::1;::::0;39869:27:::1;::::0;:39;;;;;::::1;::::0;;;;;;;;;39876:9;39869:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;39869:39:0;:44;39861:95:::1;;;;-1:-1:-1::0;;;39861:95:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39982:9;::::0;39975:39:::1;::::0;;-1:-1:-1;;;39975:39:0;;40003:10:::1;39975:39;::::0;::::1;::::0;;;-1:-1:-1;;;;;39982:9:0;;::::1;::::0;39975:27:::1;::::0;:39;;;;;::::1;::::0;;;;;;;;;39982:9;39975:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;39975:39:0;:44;39967:95:::1;;;;-1:-1:-1::0;;;39967:95:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40075:28;40093:9;40075:17;:28::i;:::-;40131:10;40114:28;::::0;;;:16:::1;:28;::::0;;;;:40;;-1:-1:-1;;;;;;40114:40:0::1;-1:-1:-1::0;;;;;40114:40:0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;23265:22:0;;39785:377::o;31823:777::-;31990:7;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;32018:11;32010:53:::1;;;::::0;;-1:-1:-1;;;32010:53:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;32010:53:0;;;;;;;;;;;;;::::1;;32147:10;::::0;32135:189:::1;::::0;;-1:-1:-1;;;32135:189:0;;32094:10:::1;32135:189;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;32135:189:0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;32094:10;;32076:15:::1;::::0;32147:10:::1;::::0;32135:46:::1;::::0;:189;;;;;::::1;::::0;;;;;;;;32076:15;32147:10;32135:189;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32135:189:0;32350:13:::1;::::0;32399:3:::1;::::0;32335:79:::1;::::0;;-1:-1:-1;;;32335:79:0;;-1:-1:-1;;;;;32335:79:0;;::::1;;::::0;::::1;::::0;;;;;;;32399:3;;::::1;32335:79:::0;;;;;;;;;;;;32135:189;;-1:-1:-1;32350:13:0;::::1;::::0;32335:45:::1;::::0;:79;;;;;32350:13:::1;::::0;32335:79;;;;;;;;32350:13;;32335:79;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;32440:16:0::1;::::0;32492:13:::1;::::0;32425:92:::1;::::0;;-1:-1:-1;;;32425:92:0;;-1:-1:-1;;;;;32425:92:0;;::::1;;::::0;::::1;::::0;;;;;;;32492:13;;::::1;32425:92:::0;;;;;;;;;;;;32440:16;;;::::1;::::0;-1:-1:-1;32425:48:0::1;::::0;-1:-1:-1;32425:92:0;;;;;32440:16:::1;::::0;32425:92;;;;;;;32440:16;;32425:92;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;32535:28:0::1;::::0;;-1:-1:-1;;;;;32535:28:0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;32535:28:0;-1:-1:-1;32535:28:0;;;;;;;;-1:-1:-1;32535:28:0::1;22304:1:::0;23265:7;:22;32583:9;31823:777;-1:-1:-1;;;;;;31823:777:0:o;36016:82::-;22348:1;22953:7;;:19;;22945:63;;;;;-1:-1:-1;;;22945:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22945:63:0;;;;;;;;;;;;;;;22348:1;23086:7;:18;36069:21:::1;36079:10;36069:9;:21::i;:::-;22304:1:::0;23265:7;:22;36016:82::o;28825:31::-;;;-1:-1:-1;;;;;28825:31:0;;:::o;28975:28::-;;;-1:-1:-1;;;;;28975:28:0;;:::o;17302:211::-;17446:58;;;-1:-1:-1;;;;;17446:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17446:58:0;-1:-1:-1;;;17446:58:0;;;17419:86;;17439:5;;17419:19;:86::i;46165:583::-;46340:1;46330:7;:11;46322:53;;;;;-1:-1:-1;;;46322:53:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;46322:53:0;;;;;;;;;;;;;;;46403:16;;46388:92;;;-1:-1:-1;;;46388:92:0;;-1:-1:-1;;;;;46388:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46403:16;;;;;46388:48;;:92;;;;;46403:16;;46388:92;;;;;;;46403:16;;46388:92;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;46506:15:0;;46559:16;;46491:94;;;-1:-1:-1;;;46491:94:0;;-1:-1:-1;;;;;46491:94:0;;;;;;;;;;;;;46559:16;;;46491:94;;;;;;;;;;;;46506:15;;;;;-1:-1:-1;46491:47:0;;-1:-1:-1;46491:94:0;;;;;46506:15;;46491:94;;;;;;;46506:15;;46491:94;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;46611:13:0;;46662:15;;46596:91;;;-1:-1:-1;;;46596:91:0;;-1:-1:-1;;;;;46596:91:0;;;;;;;;;;;;;46662:15;;;46596:91;;;;;;;;;;;;46611:13;;;;;-1:-1:-1;46596:45:0;;-1:-1:-1;46596:91:0;;;;;46611:13;;46596:91;;;;;;;46611:13;;46596:91;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;46705:35:0;;;-1:-1:-1;;;;;46705:35:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46705:35:0;;;;;;;-1:-1:-1;46705:35:0;46165:583;;;;:::o;45249:119::-;45305:22;45318:8;45305:12;:22::i;:::-;45338;45351:8;45338:12;:22::i;:::-;45249:119;:::o;1015:181::-;1073:7;1105:5;;;1129:6;;;;1121:46;;;;;-1:-1:-1;;;1121:46:0;;;;;;;;;;;;-1:-1:-1;;;1121:46:0;;;;;;;;;;;;;;;1187:1;-1:-1:-1;1015:181:0;;;;;:::o;10543:395::-;10658:6;10633:21;:31;;10625:73;;;;;-1:-1:-1;;;10625:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10808:33;;10790:12;;-1:-1:-1;;;;;10808:14:0;;;10830:6;;10790:12;10808:33;10790:12;10808:33;10830:6;10808:14;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10789:52;;;10860:7;10852:78;;;;-1:-1:-1;;;10852:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46756:1391;46933:1;46923:7;:11;46915:53;;;;;-1:-1:-1;;;46915:53:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;46915:53:0;;;;;;;;;;;;;;;47014:16;;46999:56;;;-1:-1:-1;;;46999:56:0;;-1:-1:-1;;;;;46999:56:0;;;;;;;;;46981:15;;47014:16;;;;;46999:46;;:56;;;;;;;;;;;;;;;47014:16;46999:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46999:56:0;47083:13;;47126:15;;47068:93;;;-1:-1:-1;;;47068:93:0;;-1:-1:-1;;;;;47068:93:0;;;;;;;;;47126:15;;;47068:93;;;;;;;;;;;;;;;;;;;46999:56;;-1:-1:-1;47083:13:0;;;47068:47;;:93;;;;;47083:13;;47068:93;;;;;;;;47083:13;;47068:93;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;47187:15:0;;47232:16;;47172:96;;;-1:-1:-1;;;47172:96:0;;-1:-1:-1;;;;;47172:96:0;;;;;;;;;47232:16;;;47172:96;;;;;;;;;;;;;;;;;;;47187:15;;;;;-1:-1:-1;47172:49:0;;-1:-1:-1;47172:96:0;;;;;47187:15;;47172:96;;;;;;;47187:15;;47172:96;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;47294:16:0;;47279:87;;;-1:-1:-1;;;47279:87:0;;-1:-1:-1;;;;;47279:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;47294:16;;;;;-1:-1:-1;47279:50:0;;-1:-1:-1;47279:87:0;;;;;47294:16;;47279:87;;;;;;;47294:16;;47279:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47383:18;47379:706;;;47455:15;;47440:67;;;-1:-1:-1;;;47440:67:0;;-1:-1:-1;;;;;47440:67:0;;;;;;;;;;;;;;;47418:19;;47455:15;;;;;47440:47;;:67;;;;;;;;;;;;;;;47418:19;47455:15;47440:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47440:67:0;;-1:-1:-1;47526:15:0;;47522:141;;47577:13;;47628:5;;47562:85;;;-1:-1:-1;;;47562:85:0;;-1:-1:-1;;;;;47562:85:0;;;;;;;;;;;;;47628:5;;;47562:85;;;;;;;;;;;;47577:13;;;;;47562:45;;:85;;;;;47577:13;;47562:85;;;;;;;47577:13;;47562:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47522:141;47716:13;;47757:5;;47701:62;;;-1:-1:-1;;;47701:62:0;;-1:-1:-1;;;;;47701:62:0;;;;;;;47757:5;;;47701:62;;;;;;47679:19;;47716:13;;;;;47701:45;;:62;;;;;;;;;;;;;;;47716:13;47701:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47701:62:0;;-1:-1:-1;47782:15:0;;47778:296;;47818:23;47844:37;47873:7;47844:24;:11;47860:7;47844:15;:24::i;:::-;:28;;:37::i;:::-;47915:13;;47958:5;;47900:91;;;-1:-1:-1;;;47900:91:0;;-1:-1:-1;;;;;47900:91:0;;;;;;;;;47958:5;;;47900:91;;;;;;;;;;;;;;;;;;;47818:63;;-1:-1:-1;47915:13:0;;;47900:47;;:91;;;;;47915:13;;47900:91;;;;;;;;47915:13;;47900:91;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;48020:5:0;;48010:48;;;-1:-1:-1;;;48010:48:0;;-1:-1:-1;;;;;48010:48:0;;;;;;;;;;;;;;;48020:5;;;;;-1:-1:-1;48010:21:0;;-1:-1:-1;48010:48:0;;;;;48020:5;;48010:48;;;;;;;48020:5;;48010:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47778:296;;47379:706;;;48102:37;;;-1:-1:-1;;;;;48102:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;46756:1391;;;;;:::o;42432:2809::-;42539:16;;42524:64;;;-1:-1:-1;;;42524:64:0;;-1:-1:-1;;;;;42524:64:0;;;;;;;;;42539:16;;;;;42524:53;;:64;;;;;;;;;;;;;;42539:16;42524:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42524:64:0;:69;42502:174;;;;-1:-1:-1;;;42502:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42724:16;;42709:61;;;-1:-1:-1;;;42709:61:0;;-1:-1:-1;;;;;42709:61:0;;;;;;;;;42724:16;;;;;42709:50;;:61;;;;;;;;;;;;;;42724:16;42709:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42709:61:0;:66;42687:168;;;;-1:-1:-1;;;42687:168:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42905:15;;42890:63;;;-1:-1:-1;;;42890:63:0;;-1:-1:-1;;;;;42890:63:0;;;;;;;;;42905:15;;;;;42890:52;;:63;;;;;;;;;;;;;;42905:15;42890:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42890:63:0;:68;42868:172;;;;-1:-1:-1;;;42868:172:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43088:15;;43073:60;;;-1:-1:-1;;;43073:60:0;;-1:-1:-1;;;;;43073:60:0;;;;;;;;;43088:15;;;;;43073:49;;:60;;;;;;;;;;;;;;43088:15;43073:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43073:60:0;:65;43051:166;;;;-1:-1:-1;;;43051:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43267:13;;43252:61;;;-1:-1:-1;;;43252:61:0;;-1:-1:-1;;;;;43252:61:0;;;;;;;;;43267:13;;;;;43252:50;;:61;;;;;;;;;;;;;;43267:13;43252:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43252:61:0;:66;43230:168;;;;-1:-1:-1;;;43230:168:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43446:13;;43431:58;;;-1:-1:-1;;;43431:58:0;;-1:-1:-1;;;;;43431:58:0;;;;;;;;;43446:13;;;;;43431:47;;:58;;;;;;;;;;;;;;43446:13;43431:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43431:58:0;:63;43409:162;;;;-1:-1:-1;;;43409:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43614:9;;43606:61;;;-1:-1:-1;;;43606:61:0;;-1:-1:-1;;;;;43606:61:0;;;;;;;;;43614:9;;;;;43606:50;;:61;;;;;;;;;;;;;;43614:9;43606:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43606:61:0;:66;43584:175;;;;-1:-1:-1;;;43584:175:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43802:9;;43794:58;;;-1:-1:-1;;;43794:58:0;;-1:-1:-1;;;;;43794:58:0;;;;;;;;;43802:9;;;;;43794:47;;:58;;;;;;;;;;;;;;43802:9;43794:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43794:58:0;:63;43772:169;;;;-1:-1:-1;;;43772:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43989:16;;43974:64;;;-1:-1:-1;;;43974:64:0;;-1:-1:-1;;;;;43974:64:0;;;;;;;;;43989:16;;;;;43974:53;;:64;;;;;;;;;;;;;;43989:16;43974:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43974:64:0;:69;43952:174;;;;-1:-1:-1;;;43952:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44174:16;;44159:61;;;-1:-1:-1;;;44159:61:0;;-1:-1:-1;;;;;44159:61:0;;;;;;;;;44174:16;;;;;44159:50;;:61;;;;;;;;;;;;;;44174:16;44159:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44159:61:0;:66;44137:168;;;;-1:-1:-1;;;44137:168:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44355:13;;44340:61;;;-1:-1:-1;;;44340:61:0;;-1:-1:-1;;;;;44340:61:0;;;;;;;;;44355:13;;;;;44340:50;;:61;;;;;;;;;;;;;;44355:13;44340:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44340:61:0;:66;44318:168;;;;-1:-1:-1;;;44318:168:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44534:13;;44519:58;;;-1:-1:-1;;;44519:58:0;;-1:-1:-1;;;;;44519:58:0;;;;;;;;;44534:13;;;;;44519:47;;:58;;;;;;;;;;;;;;44534:13;44519:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44519:58:0;:63;44497:162;;;;-1:-1:-1;;;44497:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44702:9;;44694:61;;;-1:-1:-1;;;44694:61:0;;-1:-1:-1;;;;;44694:61:0;;;;;;;;;44702:9;;;;;44694:50;;:61;;;;;;;;;;;;;;44702:9;44694:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44694:61:0;:66;44672:175;;;;-1:-1:-1;;;44672:175:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44888:9;;44880:58;;;-1:-1:-1;;;44880:58:0;;-1:-1:-1;;;;;44880:58:0;;;;;;;;;44888:9;;;;;44880:47;;:58;;;;;;;;;;;;;;44888:9;44880:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44880:58:0;:63;44858:169;;;;-1:-1:-1;;;44858:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45055:9;;45048:38;;;-1:-1:-1;;;45048:38:0;;-1:-1:-1;;;;;45048:38:0;;;;;;;;;45055:9;;;;;45048:27;;:38;;;;;;;;;;;;;;45055:9;45048:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45048:38:0;:43;45040:91;;;;-1:-1:-1;;;45040:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45157:9;;45150:38;;;-1:-1:-1;;;45150:38:0;;-1:-1:-1;;;;;45150:38:0;;;;;;;;;45157:9;;;;;45150:27;;:38;;;;;;;;;;;;;;45157:9;45150:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45150:38:0;:43;45142:91;;;;-1:-1:-1;;;45142:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19837:774;20261:23;20287:69;20315:4;20287:69;;;;;;;;;;;;;;;;;20295:5;-1:-1:-1;;;;;20287:27:0;;;:69;;;;;:::i;:::-;20371:17;;20261:95;;-1:-1:-1;20371:21:0;20367:237;;20526:10;20515:30;;;;;;;;;;;;;;;-1:-1:-1;20515:30:0;20507:85;;;;-1:-1:-1;;;20507:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45376:509;45472:16;;45457:68;;;-1:-1:-1;;;45457:68:0;;-1:-1:-1;;;;;45457:68:0;;;;;;;;;;;;;;;45435:19;;45472:16;;;;;45457:48;;:68;;;;;;;;;;;;;;;45435:19;45472:16;45457:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45457:68:0;;-1:-1:-1;45540:15:0;;45536:97;;45602:5;;45572:49;;45582:8;;;;-1:-1:-1;;;;;45602:5:0;45609:11;45572:9;:49::i;:::-;45682:15;;45667:67;;;-1:-1:-1;;;45667:67:0;;-1:-1:-1;;;;;45667:67:0;;;;;;;;;;;;;;;45645:19;;45682:15;;;;;45667:47;;:67;;;;;;;;;;;;;;;45645:19;45682:15;45667:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45667:67:0;;-1:-1:-1;45749:15:0;;45745:133;;45796:13;;45847:5;;45781:85;;;-1:-1:-1;;;45781:85:0;;-1:-1:-1;;;;;45781:85:0;;;;;;;;;;;;;45847:5;;;45781:85;;;;;;;;;;;;45796:13;;;;;45781:45;;:85;;;;;45796:13;;45781:85;;;;;;;45796:13;;45781:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45376:509;;;:::o;45893:264::-;45989:16;;45974:68;;;-1:-1:-1;;;45974:68:0;;-1:-1:-1;;;;;45974:68:0;;;;;;;;;;;;;;;45952:19;;45989:16;;;;;45974:48;;:68;;;;;;;;;;;;;;;45952:19;45989:16;45974:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45974:68:0;;-1:-1:-1;46057:15:0;;46053:97;;46119:5;;46089:49;;46099:8;;;;-1:-1:-1;;;;;46119:5:0;46126:11;46089:9;:49::i;:::-;45893:264;;:::o;2403:471::-;2461:7;2706:6;2702:47;;-1:-1:-1;2736:1:0;2729:8;;2702:47;2773:5;;;2777:1;2773;:5;:1;2797:5;;;;;:10;2789:56;;;;-1:-1:-1;;;2789:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3350:132;3408:7;3435:39;3439:1;3442;3435:39;;;;;;;;;;;;;-1:-1:-1;;;3435:39:0;;;:3;:39::i;12104:229::-;12241:12;12273:52;12295:6;12303:4;12309:1;12312:12;12273:21;:52::i;:::-;12266:59;;12104:229;;;;;;:::o;3978:312::-;4098:7;4133:12;4126:5;4118:28;;;;-1:-1:-1;;;4118:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4157:9;4173:1;4169;:5;;;;;;;3978:312;-1:-1:-1;;;;;3978:312:0:o;13224:571::-;13394:12;13452:5;13427:21;:30;;13419:81;;;;-1:-1:-1;;;13419:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13519:18;13530:6;13519:10;:18::i;:::-;13511:60;;;;;-1:-1:-1;;;13511:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13645:12;13659:23;13686:6;-1:-1:-1;;;;;13686:11:0;13705:5;13712:4;13686:31;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13686:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13644:73;;;;13735:52;13753:7;13762:10;13774:12;13735:17;:52::i;:::-;13728:59;13224:571;-1:-1:-1;;;;;;;13224:571:0:o;9164:444::-;9544:20;9592:8;;;9164:444::o;15873:777::-;16023:12;16052:7;16048:595;;;-1:-1:-1;16083:10:0;16076:17;;16048:595;16197:17;;:21;16193:439;;16460:10;16454:17;16521:15;16508:10;16504:2;16500:19;16493:44;16408:148;16596:20;;-1:-1:-1;;;16596:20:0;;;;;;;;;;;;;;;;;16603:12;;16596:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Metadata Hash

bca65db260041209710797aa3d03a6b874c75f3723bffc88322953f1b9567605
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.