ETH Price: $3,261.98 (+2.49%)

Contract

0x18381c0f738146Fb694DE18D1106BdE2BE040Fa4
Transaction Hash
Method
Block
From
To
Value
Swap Exact Token...322984322024-04-24 10:21:254 secs ago1713954085IN
0x18381c0f...2BE040Fa4
0 ETH0.000007160.025
Swap Exact Token...322984322024-04-24 10:21:254 secs ago1713954085IN
0x18381c0f...2BE040Fa4
0 ETH0.000006550.025
Swap Exact Token...322984312024-04-24 10:21:245 secs ago1713954084IN
0x18381c0f...2BE040Fa4
0 ETH0.000005340.025
Swap Exact Token...322984302024-04-24 10:21:236 secs ago1713954083IN
0x18381c0f...2BE040Fa4
0 ETH0.000007750.025
Swap Exact ETH F...322984282024-04-24 10:21:218 secs ago1713954081IN
0x18381c0f...2BE040Fa4
0.0432 ETH0.000006960.025
Swap Exact Token...322984272024-04-24 10:21:209 secs ago1713954080IN
0x18381c0f...2BE040Fa4
0 ETH0.000007260.025
Swap Exact Token...322984182024-04-24 10:21:1118 secs ago1713954071IN
0x18381c0f...2BE040Fa4
0 ETH0.000007160.025
Swap Exact Token...322984172024-04-24 10:21:1019 secs ago1713954070IN
0x18381c0f...2BE040Fa4
0 ETH0.000006120.025
Swap Exact ETH F...322984172024-04-24 10:21:1019 secs ago1713954070IN
0x18381c0f...2BE040Fa4
0.0054 ETH0.000005230.025
Swap Exact Token...322984162024-04-24 10:21:0920 secs ago1713954069IN
0x18381c0f...2BE040Fa4
0 ETH0.000006590.025
Swap Exact Token...322984132024-04-24 10:21:0623 secs ago1713954066IN
0x18381c0f...2BE040Fa4
0 ETH0.000005810.025
Swap Exact ETH F...322984122024-04-24 10:21:0524 secs ago1713954065IN
0x18381c0f...2BE040Fa4
0.00040922 ETH0.000006720.025
Swap Exact Token...322984042024-04-24 10:20:5732 secs ago1713954057IN
0x18381c0f...2BE040Fa4
0 ETH0.000005980.025
Swap Exact Token...322984042024-04-24 10:20:5732 secs ago1713954057IN
0x18381c0f...2BE040Fa4
0 ETH0.000005340.025
Swap ETH For Exa...322983992024-04-24 10:20:5237 secs ago1713954052IN
0x18381c0f...2BE040Fa4
0.00715676 ETH0.000007080.025
Swap Exact ETH F...322983932024-04-24 10:20:4643 secs ago1713954046IN
0x18381c0f...2BE040Fa4
0.000647 ETH0.000006450.025
Swap ETH For Exa...322983932024-04-24 10:20:4643 secs ago1713954046IN
0x18381c0f...2BE040Fa4
0.00154556 ETH0.000006920.025
Swap Exact ETH F...322983922024-04-24 10:20:4544 secs ago1713954045IN
0x18381c0f...2BE040Fa4
0.00384799 ETH0.000006990.025
Swap Exact ETH F...322983872024-04-24 10:20:4049 secs ago1713954040IN
0x18381c0f...2BE040Fa4
0.0126 ETH0.000008910.025
Swap Exact ETH F...322983862024-04-24 10:20:3950 secs ago1713954039IN
0x18381c0f...2BE040Fa4
0.00390932 ETH0.000014540.025
Swap Exact ETH F...322983832024-04-24 10:20:3653 secs ago1713954036IN
0x18381c0f...2BE040Fa4
0.0054 ETH0.000005230.025
Swap Exact ETH F...322983782024-04-24 10:20:3158 secs ago1713954031IN
0x18381c0f...2BE040Fa4
0.009 ETH0.000008310.025
Swap Exact Token...322983772024-04-24 10:20:301 mins ago1713954030IN
0x18381c0f...2BE040Fa4
0 ETH0.000006480.025
Swap Exact Token...322983752024-04-24 10:20:281 min ago1713954028IN
0x18381c0f...2BE040Fa4
0 ETH0.000005710.025
Swap Exact Token...322983692024-04-24 10:20:221 min ago1713954022IN
0x18381c0f...2BE040Fa4
0 ETH0.00001180.025
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To Value
322984302024-04-24 10:21:236 secs ago1713954083
0x18381c0f...2BE040Fa4
0.00015355 ETH
322984302024-04-24 10:21:236 secs ago1713954083
0x18381c0f...2BE040Fa4
0.00015355 ETH
322984282024-04-24 10:21:218 secs ago1713954081
0x18381c0f...2BE040Fa4
0.0432 ETH
322984282024-04-24 10:21:218 secs ago1713954081
0x18381c0f...2BE040Fa4
0.0432 ETH
322984282024-04-24 10:21:218 secs ago1713954081
0x18381c0f...2BE040Fa4
0.0432 ETH
322984182024-04-24 10:21:1118 secs ago1713954071
0x18381c0f...2BE040Fa4
0.00250361 ETH
322984182024-04-24 10:21:1118 secs ago1713954071
0x18381c0f...2BE040Fa4
0.00250361 ETH
322984172024-04-24 10:21:1019 secs ago1713954070
0x18381c0f...2BE040Fa4
0.0054 ETH
322984172024-04-24 10:21:1019 secs ago1713954070
0x18381c0f...2BE040Fa4
0.0054 ETH
322984172024-04-24 10:21:1019 secs ago1713954070
0x18381c0f...2BE040Fa4
0.0054 ETH
322984162024-04-24 10:21:0920 secs ago1713954069
0x18381c0f...2BE040Fa4
0.00390307 ETH
322984162024-04-24 10:21:0920 secs ago1713954069
0x18381c0f...2BE040Fa4
0.00390307 ETH
322984132024-04-24 10:21:0623 secs ago1713954066
0x18381c0f...2BE040Fa4
0.0026484 ETH
322984132024-04-24 10:21:0623 secs ago1713954066
0x18381c0f...2BE040Fa4
0.0026484 ETH
322984122024-04-24 10:21:0524 secs ago1713954065
0x18381c0f...2BE040Fa4
0.00040922 ETH
322984122024-04-24 10:21:0524 secs ago1713954065
0x18381c0f...2BE040Fa4
0.00040922 ETH
322984122024-04-24 10:21:0524 secs ago1713954065
0x18381c0f...2BE040Fa4
0.00040922 ETH
322984042024-04-24 10:20:5732 secs ago1713954057
0x18381c0f...2BE040Fa4
0.01257971 ETH
322984042024-04-24 10:20:5732 secs ago1713954057
0x18381c0f...2BE040Fa4
0.01257971 ETH
322984042024-04-24 10:20:5732 secs ago1713954057
0x18381c0f...2BE040Fa4
0.00539163 ETH
322984042024-04-24 10:20:5732 secs ago1713954057
0x18381c0f...2BE040Fa4
0.00539163 ETH
322983992024-04-24 10:20:5237 secs ago1713954052
0x18381c0f...2BE040Fa4
0.00003563 ETH
322983992024-04-24 10:20:5237 secs ago1713954052
0x18381c0f...2BE040Fa4
0.00712113 ETH
322983992024-04-24 10:20:5237 secs ago1713954052
0x18381c0f...2BE040Fa4
0.00712113 ETH
322983992024-04-24 10:20:5237 secs ago1713954052
0x18381c0f...2BE040Fa4
0.00715676 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ZFRouter

Compiler Version
v0.8.16+commit.07a7930e

ZkSolc Version
v1.3.8

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 16 : ZFRouter.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

import './ZFRouterInternal.sol';

import '../interfaces/IWETH.sol';
import '../interfaces/protocol/IZFRouter.sol';
import '../interfaces/protocol/core/IZFFactory.sol';

import '../libraries/protocol/ZFLibrary.sol';
import '../libraries/token/ERC20/utils/TransferHelper.sol';

contract ZFRouter is IZFRouter, ZFRouterInternal {
    address public immutable override factory;
    address public immutable override WETH;

    constructor(address _factory, address _WETH) {
        factory = _factory;
        WETH = _WETH;
    }

    receive() external payable {
        assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract
    }

    mapping(address => mapping(address => bool)) public override isPairIndexed;
    mapping(address => address[]) public override indexedPairs;

    function indexedPairsOf(address account) external view override returns (address[] memory) {
        return indexedPairs[account];
    }

    function indexedPairsRange(address account, uint256 start, uint256 counts) external view override returns (address[] memory) {
        require(counts != 0, "Counts must greater than zero");

        address[] memory pairs = indexedPairs[account];
        require(start + counts <= pairs.length, "Out of bound");

        address[] memory result = new address[](counts);
        for (uint256 i = 0; i < counts; i++) {
            result[i] = pairs[start + i];
        }
        return result;
    }

    function indexedPairsLengthOf(address account) external view override returns (uint256) {
        return indexedPairs[account].length;
    }


    function _addLiquidity(
        address tokenA,
        address tokenB,
        uint amountAInExpected,
        uint amountBInExpected,
        uint amountAInMin,
        uint amountBInMin
    ) internal virtual returns (address pair, uint amountAInActual, uint amountBInActual) {
        address _factory = factory;
        pair = ZFLibrary.pairFor(_factory, tokenA, tokenB);
        if (pair == address(0)) {
            // create the pair if it doesn't exist yet
            pair = IZFFactory(_factory).createPair(tokenA, tokenB);

            // input amounts are desired amounts for the first time
            (amountAInActual, amountBInActual) = (amountAInExpected, amountBInExpected);
        } else {
            // ensure optimal input amounts
            (amountAInActual, amountBInActual) = _getOptimalAmountsInForAddLiquidity(
                pair, tokenA, tokenB, amountAInExpected, amountBInExpected, amountAInMin, amountBInMin
            );
        }
    }

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountAInExpected,
        uint amountBInExpected,
        uint amountAInMin,
        uint amountBInMin,
        address to,
        uint deadline
    ) external override ensureNotExpired(deadline) returns (uint amountAInActual, uint amountBInActual, uint liquidity) {
        address pair;
        (pair, amountAInActual, amountBInActual) = _addLiquidity(tokenA, tokenB, amountAInExpected, amountBInExpected, amountAInMin, amountBInMin);

        // transfer tokens of (optimal) input amounts to the pair
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountAInActual);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountBInActual);

        // mint the liquidity tokens for sender
        liquidity = IZFPair(pair).mint(to);

        // index the pair for search
        if (!isPairIndexed[to][pair]) {
            isPairIndexed[to][pair] = true;
            indexedPairs[to].push(pair);
        }
    }

    function addLiquidityETH(
        address token,
        uint amountTokenInExpected,
        uint amountTokenInMin,
        uint amountETHInMin,
        address to,
        uint deadline
    ) external override payable ensureNotExpired(deadline) returns (uint amountTokenInActual, uint amountETHInActual, uint liquidity) {
        address pair;
        (pair, amountTokenInActual, amountETHInActual) = _addLiquidity(token, WETH, amountTokenInExpected, msg.value, amountTokenInMin, amountETHInMin);

        // transfer tokens of (optimal) input amounts to the pair
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountTokenInActual);
        IWETH(WETH).deposit{value: amountETHInActual}();
        assert(IWETH(WETH).transfer(pair, amountETHInActual));

        // mint the liquidity tokens for sender
        liquidity = IZFPair(pair).mint(to);

        // refund dust eth, if any
        if (msg.value > amountETHInActual) {
            TransferHelper.safeTransferETH(msg.sender, msg.value - amountETHInActual);
        }

        // index the pair for search
        if (!isPairIndexed[to][pair]) {
            isPairIndexed[to][pair] = true;
            indexedPairs[to].push(pair);
        }
    }

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAOutMin,
        uint amountBOutMin,
        address to,
        uint deadline
    ) public override ensureNotExpired(deadline) returns (uint amountAOut, uint amountBOut) {
        address pair = ZFLibrary.pairFor(factory, tokenA, tokenB);
        (amountAOut, amountBOut) = _burnLiquidity(
            pair, tokenA, tokenB, liquidity, amountAOutMin, amountBOutMin, to
        );
    }

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public override ensureNotExpired(deadline) returns (uint amountToken, uint amountETH) {
        (amountToken, amountETH) = removeLiquidity(
            token,
            WETH,
            liquidity,
            amountTokenMin,
            amountETHMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, amountToken);
        IWETH(WETH).withdraw(amountETH);
        TransferHelper.safeTransferETH(to, amountETH);
    }

    function _permit(
        address tokenA,
        address tokenB,
        bool approveMax,
        uint liquidity,
        uint deadline,
        uint8 v, bytes32 r, bytes32 s
    ) internal returns (address) {
        address pair = ZFLibrary.pairFor(factory, tokenA, tokenB);
        uint256 value = approveMax ? type(uint).max : liquidity;
        IZFPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        return pair;
    }

    function _removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAOutMin,
        uint amountBOutMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v, bytes32 r, bytes32 s
    ) internal returns (uint amountAOut, uint amountBOut) {
        address pair = _permit(tokenA, tokenB, approveMax, liquidity, deadline, v, r, s);

        (amountAOut, amountBOut) = _burnLiquidity(
            pair, tokenA, tokenB, liquidity, amountAOutMin, amountBOutMin, to
        );
    }

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAOutMin,
        uint amountBOutMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external override returns (uint amountAOut, uint amountBOut) {
        // wrapped to avoid stack too deep errors
        (amountAOut, amountBOut) = _removeLiquidityWithPermit(tokenA, tokenB, liquidity, amountAOutMin, amountBOutMin, to, deadline, approveMax, v, r, s);
    }

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external override returns (uint amountToken, uint amountETH) {
        _permit(token, WETH, approveMax, liquidity, deadline, v, r, s);
        (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);
    }

    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public override ensureNotExpired(deadline) returns (uint amountETH) {
        (, amountETH) = removeLiquidity(
            token,
            WETH,
            liquidity,
            amountTokenMin,
            amountETHMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));
        IWETH(WETH).withdraw(amountETH);
        TransferHelper.safeTransferETH(to, amountETH);
    }

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external override returns (uint amountETH) {
        _permit(token, WETH, approveMax, liquidity, deadline, v, r, s);

        amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(
            token, liquidity, amountTokenMin, amountETHMin, to, deadline
        );
    }


    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external override ensureNotExpired(deadline) returns (uint[] memory amounts) {
        amounts = ZFLibrary.getAmountsOutUnchecked(factory, amountIn, path); // will fail below if path is invalid
        // make sure the final output amount not smaller than the minimum
        require(amounts[amounts.length - 1] >= amountOutMin, 'INSUFFICIENT_OUTPUT_AMOUNT');

        address tokenIn = path[0];
        address initialPair = ZFLibrary.pairFor(factory, tokenIn, path[1]);
        TransferHelper.safeTransferFrom(tokenIn, msg.sender, initialPair, amounts[0]);
        _swapCached(factory, initialPair, amounts, path, to);
    }

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external override payable ensureNotExpired(deadline) returns (uint[] memory amounts) {
        address tokenIn = path[0];
        require(tokenIn == WETH, 'INVALID_PATH');
        amounts = ZFLibrary.getAmountsOutUnchecked(factory, msg.value, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'INSUFFICIENT_OUTPUT_AMOUNT');

        uint256 amountIn = amounts[0];
        IWETH(WETH).deposit{value: amountIn}();

        address initialPair = ZFLibrary.pairFor(factory, tokenIn, path[1]);
        assert(IWETH(WETH).transfer(initialPair, amountIn));

        _swapCached(factory, initialPair, amounts, path, to);
    }

    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensureNotExpired(deadline) returns (uint[] memory amounts) {
        require(path[path.length - 1] == WETH, 'INVALID_PATH');
        amounts = ZFLibrary.getAmountsOutUnchecked(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'INSUFFICIENT_OUTPUT_AMOUNT');

        address tokenIn = path[0];
        address initialPair = ZFLibrary.pairFor(factory, tokenIn, path[1]);
        TransferHelper.safeTransferFrom(tokenIn, msg.sender, initialPair, amounts[0]);
        _swapCached(factory, initialPair, amounts, path, address(this));

        IWETH(WETH).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
    }

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external override ensureNotExpired(deadline) returns (uint[] memory amounts) {
        amounts = ZFLibrary.getAmountsInUnchecked(factory, amountOut, path); // will fail below if path is invalid
        // make sure the final input amount not bigger than the maximum
        require(amounts[0] <= amountInMax, 'EXCESSIVE_INPUT_AMOUNT');

        address tokenIn = path[0];
        address initialPair = ZFLibrary.pairFor(factory, tokenIn, path[1]);
        TransferHelper.safeTransferFrom(tokenIn, msg.sender, initialPair, amounts[0]);
        _swapCached(factory, initialPair, amounts, path, to);
    }

    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override payable ensureNotExpired(deadline) returns (uint[] memory amounts) {
        address tokenIn = path[0];
        require(tokenIn == WETH, 'INVALID_PATH');
        amounts = ZFLibrary.getAmountsInUnchecked(factory, amountOut, path);

        uint256 amountIn = amounts[0];
        require(amountIn <= msg.value, 'EXCESSIVE_INPUT_AMOUNT');

        IWETH(WETH).deposit{value: amountIn}();
        address initialPair = ZFLibrary.pairFor(factory, tokenIn, path[1]);
        assert(IWETH(WETH).transfer(initialPair, amountIn));
        _swapCached(factory, initialPair, amounts, path, to);

        // refund dust eth, if any
        if (msg.value > amountIn) {
            TransferHelper.safeTransferETH(msg.sender, msg.value - amountIn);
        }
    }

    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensureNotExpired(deadline) returns (uint[] memory amounts) {
        require(path[path.length - 1] == WETH, 'INVALID_PATH');
        amounts = ZFLibrary.getAmountsInUnchecked(factory, amountOut, path);

        uint256 amountIn = amounts[0];
        require(amountIn <= amountInMax, 'EXCESSIVE_INPUT_AMOUNT');

        address tokenIn = path[0];
        address initialPair = ZFLibrary.pairFor(factory, tokenIn, path[1]);
        TransferHelper.safeTransferFrom(tokenIn, msg.sender, initialPair, amountIn);
        _swapCached(factory, initialPair, amounts, path, address(this));

        uint256 _amountOut = amounts[amounts.length - 1];
        IWETH(WETH).withdraw(_amountOut);
        TransferHelper.safeTransferETH(to, _amountOut);
    }


    // requires the initial amount to have already been sent to the first pair
    function _swapSupportingFeeOnTransferTokens(address initialPair, address[] calldata path, address _to) internal virtual {
        for (uint i; i < path.length - 1; ) {
            (address input, address output) = (path[i], path[i + 1]);
            
            IZFPair pair = IZFPair(i == 0 ? initialPair : ZFLibrary.pairFor(factory, input, output));
            uint amountInput;
            uint amountOutput;

            { // scope to avoid stack too deep errors
                (uint reserve0, uint reserve1, uint16 swapFee) = pair.getReservesAndParameters();
                (uint reserveIn, uint reserveOut) = input < output ? (reserve0, reserve1) : (reserve1, reserve0);
                amountInput = IERC20(input).balanceOf(address(pair)) - reserveIn;
                amountOutput = ZFLibrary.getAmountOut(amountInput, reserveIn, reserveOut, swapFee);
            }

            address to = i < path.length - 2 ? ZFLibrary.pairFor(factory, output, path[i + 2]) : _to;

            if (input < output) { // whether input token is `token0`
                pair.swapFor1(amountOutput, to);
            } else {
                pair.swapFor0(amountOutput, to);
            }

            unchecked {
                ++i;
            }
        }
    }

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external override ensureNotExpired(deadline) {
        address tokenIn = path[0];
        address initialPair = ZFLibrary.pairFor(factory, tokenIn, path[1]);
        TransferHelper.safeTransferFrom(
            tokenIn, msg.sender, initialPair, amountIn
        );

        address tokenOut = path[path.length - 1];
        uint balanceBefore = IERC20(tokenOut).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(initialPair, path, to);

        require(
            IERC20(tokenOut).balanceOf(to) - balanceBefore >= amountOutMin,
            'INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external override payable ensureNotExpired(deadline) {
        address tokenIn = path[0];
        require(tokenIn == WETH, 'INVALID_PATH');

        uint amountIn = msg.value;
        IWETH(WETH).deposit{value: amountIn}();
        address initialPair = ZFLibrary.pairFor(factory, tokenIn, path[1]);
        assert(IWETH(WETH).transfer(initialPair, amountIn));

        address tokenOut = path[path.length - 1];
        uint balanceBefore = IERC20(tokenOut).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(initialPair, path, to);

        require(
            IERC20(tokenOut).balanceOf(to) - balanceBefore >= amountOutMin,
            'INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external override ensureNotExpired(deadline) {
        require(path[path.length - 1] == WETH, 'INVALID_PATH');

        address tokenIn = path[0];
        address initialPair = ZFLibrary.pairFor(factory, tokenIn, path[1]);
        TransferHelper.safeTransferFrom(
            tokenIn, msg.sender, initialPair, amountIn
        );
        _swapSupportingFeeOnTransferTokens(initialPair, path, address(this));

        uint amountOut = IERC20(WETH).balanceOf(address(this));
        require(amountOut >= amountOutMin, 'INSUFFICIENT_OUTPUT_AMOUNT');

        IWETH(WETH).withdraw(amountOut);
        TransferHelper.safeTransferETH(to, amountOut);
    }

    function quote(uint amountA, uint reserveA, uint reserveB) external pure override returns (uint amountB) {
        return ZFLibrary.quote(amountA, reserveA, reserveB);
    }

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external view override returns (uint amountOut) {
        return ZFLibrary.getAmountOut(amountIn, reserveIn, reserveOut, IZFFactory(factory).swapFee());
    }

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external view override returns (uint amountIn) {
        return ZFLibrary.getAmountIn(amountOut, reserveIn, reserveOut, IZFFactory(factory).swapFee());
    }

    function getAmountsOut(uint amountIn, address[] calldata path) external view override returns (uint[] memory amounts) {
        return ZFLibrary.getAmountsOut(factory, amountIn, path);
    }

    function getAmountsIn(uint amountOut, address[] calldata path) external view override returns (uint[] memory amounts) {
        return ZFLibrary.getAmountsIn(factory, amountOut, path);
    }
}

File 2 of 16 : ZFRouterInternal.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

import '../interfaces/protocol/core/IZFPair.sol';
import '../libraries/protocol/ZFLibrary.sol';
import '../libraries/token/ERC20/utils/TransferHelper.sol';

abstract contract ZFRouterInternal {

    /*//////////////////////////////////////////////////////////////
        INTERNAL FUNCTIONS
    //////////////////////////////////////////////////////////////*/

    modifier ensureNotExpired(uint deadline) {
        require(block.timestamp <= deadline, 'EXPIRED');
        _;
    }

    // uncheck the reserves
    function _quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
        require(amountA != 0, 'INSUFFICIENT_AMOUNT');
        //require(reserveA != 0 && reserveB != 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY'); // already checked in caller context
        amountB = amountA * reserveB / reserveA;
    }

    // uncheck identical addresses and zero address
    function _getReserves(address pair, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
        (uint reserve0, uint reserve1) = IZFPair(pair).getReservesSimple();
        // no need to check identical addresses and zero address, as it was checked when pair creation
        (reserveA, reserveB) = tokenA < tokenB ? (reserve0, reserve1) : (reserve1, reserve0);
    }

    /*//////////////////////////////////////////////////////////////
        Add Liquidity
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev Return the optimal amounts of input tokens for adding liquidity.
     *
     * @param pair The pair address of `token A` and `token B`.
     * @param tokenA The address of `token A`.
     * @param tokenB The address of `token B`.
     * @param amountAInExpected The expected (desired) input amount of `token A`.
     * @param amountBInExpected The expected (desired) input amount of `token B`.
     * @param amountAInMin The minimum allowed input amount of `token A`.
     * @param amountBInMin The minimum allowed input amount of `token B`.
     *
     * Return uint256 values indicating the (possibly optimal) input amounts of tokens.
     *
     * The execution will revert if the optimal amounts are smaller than the minimum.
     *
     * NOTE: Optimal amounts are the same as expected if it's the first time
     * to add liquidity for the pair (reserves are 0).
     *
     * Requirements:
     *
     * - `tokenA` is not the same with `tokenB`.
     * - `tokenA` and `tokenB` are not zero addresses.
     * - `amountAInExpected` and `amountBInExpected` are not zero.
     */
    function _getOptimalAmountsInForAddLiquidity(
        address pair,
        address tokenA,
        address tokenB,
        uint amountAInExpected,
        uint amountBInExpected,
        uint amountAInMin,
        uint amountBInMin
    ) internal view returns (uint amountAIn, uint amountBIn) {
         (uint reserveA, uint reserveB) = _getReserves(pair, tokenA, tokenB);

        if (reserveA == 0 && reserveB == 0) {
            // the first time of adding liquidity
            (amountAIn, amountBIn) = (amountAInExpected, amountBInExpected);
        } else {
            uint amountBInOptimal = _quote(amountAInExpected, reserveA, reserveB);

            // checks if trading price of B are the same or have increased
            if (amountBInOptimal <= amountBInExpected) {
                // may found a better (smaller) B amount, compare with the minimum
                require(amountBInOptimal >= amountBInMin, 'INSUFFICIENT_B_AMOUNT');
                (amountAIn, amountBIn) = (amountAInExpected, amountBInOptimal);
            } else {
                uint amountAInOptimal = _quote(amountBInExpected, reserveB, reserveA);
                // always true as price of B are the same or can only
                // decreasing (price of A have increased) in above checking
                //assert(amountAInOptimal <= amountAInExpected);

                // may found a better (smaller) A amount, compare with the minimum
                // this could happend if trading price of A have increased
                require(amountAInOptimal >= amountAInMin, 'INSUFFICIENT_A_AMOUNT');
                (amountAIn, amountBIn) = (amountAInOptimal, amountBInExpected);
            }
        }
    }

    /*//////////////////////////////////////////////////////////////
        Remove Liquidity
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev Return the output amounts of tokens by removeing liquidity.
     *
     * @param tokenA The address of `token A`.
     * @param tokenB The address of `token B`.
     * @param liquidity The amount of liquidity tokens to burn.
     * @param amountAOutMin The minimum allowed output amount of `token A`.
     * @param amountBOutMin The minimum allowed output amount of `token B`.
     *
     * Return uint256 values indicating the actual output amounts of tokens.
     *
     * The execution will revert if the output amounts are smaller than the minimum.
     *
     * NOTE: Liquidity tokens must have enough allowances before calling.
     *
     * Emits an {Burn} event for the pair after successfully removal.
     */
    function _burnLiquidity(
        address pair,
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAOutMin,
        uint amountBOutMin,
        address to
    ) internal returns (uint amountAOut, uint amountBOut) {
        // send liquidity tokens to the pair and burn it atomically
        IZFPair(pair).transferFrom(msg.sender, pair, liquidity);
        (uint amount0, uint amount1) = IZFPair(pair).burn(to);

        // no need to check identical addresses and zero address, as it was checked when pair creation
        (amountAOut, amountBOut) = tokenA < tokenB ? (amount0, amount1) : (amount1, amount0);
        require(amountAOut >= amountAOutMin, 'INSUFFICIENT_A_AMOUNT');
        require(amountBOut >= amountBOutMin, 'INSUFFICIENT_B_AMOUNT');
    }

    /*//////////////////////////////////////////////////////////////
        Swap
    //////////////////////////////////////////////////////////////*/

    // requires the initial amount to have already been sent to the first pair
    /*
    function _swap(address initialPair, uint[] memory amounts, address[] memory path, address to) internal { // not in use
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);

            uint amountOut = amounts[i + 1]; // output amount of current sub swap.
            // no need to check identical addresses and zero address, as it was checked when pair creation.
            (uint amount0Out, uint amount1Out) = input < output ? (uint(0), amountOut) : (amountOut, uint(0));

            // calculate whether the to address is the next pair or the sender (destination):
            // path[i] = `input`, path[i + 1] = `output`, path[i + 2] = `next to output`
            // while the next pair is comprised of `output` nad `next to output`.
            address currentTo = i < path.length - 2 ? ZFLibrary.pairFor(_factory, output, path[i + 2]) : to;

            // perfrom the swap, ingredient tokens have already transferred by the
            // last sub swap with `to` or its caller function.
            address pair = i == 0 ? initialPair : ZFLibrary.pairFor(_factory, input, output); // use initial pair;
            ILiquidityPair(pair).swap(amount0Out, amount1Out, currentTo, new bytes(0));
        }
    }
    */

    // requires the initial amount to have already been sent to the first pair
    function _swapCached(address _factory, address initialPair, uint[] memory amounts, address[] calldata path, address to) internal {
        // cache next pair, this can save `path.length - 1` storage accessing pair addresses.
        address nextPair = initialPair;

        for (uint i; i < path.length - 1; ) {
            (address input, address output) = (path[i], path[i + 1]);
            uint amountOut = amounts[i + 1]; // output amount of current sub swap.

            // calculate whether the `to` address is the next pair or the sender (destination):
            // path[i] = `input`, path[i + 1] = `output`, path[i + 2] = `next to output`
            // while the next pair is comprised of `output` nad `next to output`.
            if (i < path.length - 2) {
                // `to` is a next pair
                address pair = nextPair;
                nextPair = ZFLibrary.pairFor(_factory, output, path[i + 2]); // cache `to` as `nextPair` for the next sub swap.

                // perfrom the swap, ingredient tokens have already transferred by the
                // last sub swap with `to` or its caller function.
                _swapSingle(pair, amountOut, input, output, nextPair);
            } else {
                // finally, `to` is the sender

                // perfrom the swap, ingredient tokens have already transferred by the
                // last sub swap with `to` or its caller function.
                _swapSingle(nextPair, amountOut, input, output, to);
            }

            unchecked {
                ++i;
            }
        }
    }

    function _swapSingle(address pair, uint amountOut, address tokenIn, address tokenOut, address to) internal {
        if (tokenIn < tokenOut) { // whether input token is `token0`
            IZFPair(pair).swapFor1(amountOut, to);
        } else {
            IZFPair(pair).swapFor0(amountOut, to);
        }
    }
}

File 2 of 16 : IERC20.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

/**
 * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

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

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

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

    /**
     * @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 2 of 16 : IERC20Metadata.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

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

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

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

File 2 of 16 : IERC20Permit.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in
 * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
 *
 * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by
 * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't
 * need to send a transaction, and thus is not required to hold Ether at all.
 */
interface IERC20Permit {
    /**
     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,
     * given ``owner``'s signed approval.
     *
     * IMPORTANT: The same issues {IERC20-approve} has related to transaction
     * ordering also apply here.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `deadline` must be a timestamp in the future.
     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`
     * over the EIP712-formatted function arguments.
     * - the signature must use ``owner``'s current nonce (see {nonces}).
     *
     * For more information on the signature format, see the
     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP
     * section].
     */
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    /**
     * @dev Returns the current nonce for `owner`. This value must be
     * included whenever a signature is generated for {permit}.
     *
     * Every successful call to {permit} increases ``owner``'s nonce by one. This
     * prevents a signature from being used multiple times.
     */
    function nonces(address owner) external view returns (uint256);

    /**
     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.
     */
    // solhint-disable-next-line func-name-mixedcase
    function DOMAIN_SEPARATOR() external view returns (bytes32);

    /**
     * @dev Returns the permit typehash
     */
    // solhint-disable-next-line func-name-mixedcase
    function PERMIT_TYPEHASH() external pure returns (bytes32);
}

File 2 of 16 : IWETH.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
    function balanceOf(address guy) external returns (uint);
    function approve(address guy, uint wad) external returns (bool);
}

File 2 of 16 : IZFRouter.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

import './uniswap/IUniswapV2Router02.sol';

interface IZFRouter is IUniswapV2Router02 {

    function isPairIndexed(address account, address pair) external view returns (bool);
    function indexedPairs(address account, uint256) external view returns (address);
    function indexedPairsOf(address account) external view returns (address[] memory);
    function indexedPairsRange(address account, uint256 start, uint256 counts) external view returns (address[] memory);
    function indexedPairsLengthOf(address account) external view returns (uint256);

}

File 2 of 16 : IZFFactory.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

import "./uniswap/IUniswapV2Factory.sol";

/// @dev ZF factory interface with full Uniswap V2 compatibility
interface IZFFactory is IUniswapV2Factory {
    function isPair(address pair) external view returns (bool);
    function acceptFeeToSetter() external;

    function swapFee() external view returns (uint16);
    function setSwapFee(uint16 newFee) external;

    function protocolFeeFactor() external view returns (uint8);
    function setProtocolFeeFactor(uint8 newFactor) external;

    function setSwapFeeOverride(address pair, uint16 swapFeeOverride) external;
}

File 2 of 16 : IZFPair.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

import "./uniswap/IUniswapV2Pair.sol";

/// @dev ZF pair interface with full Uniswap V2 compatibility
interface IZFPair is IUniswapV2Pair {
    function getPrincipal(address account) external view returns (uint112 principal0, uint112 principal1, uint32 timeLastUpdate);
    function swapFor0(uint amount0Out, address to) external; // support simple swap
    function swapFor1(uint amount1Out, address to) external; // support simple swap

    function getReservesAndParameters() external view returns (uint112 reserve0, uint112 reserve1, uint16 swapFee);
    function getReservesSimple() external view returns (uint112, uint112);

    function swapFeeOverride() external view returns (uint16);
    function setSwapFeeOverride(uint16 newSwapFeeOverride) external;
    function getSwapFee() external view returns (uint16);
}

File 2 of 16 : IUniswapV2Factory.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity >=0.5.0;

/// @dev Uniswap V2 factory interface
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

File 2 of 16 : IUniswapV2Pair.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity >=0.5.0;

import '../../../ERC20/IERC20.sol';
import '../../../ERC20/IERC20Metadata.sol';
import '../../../ERC20/IERC20Permit.sol';

/// @dev Uniswap V2 pair interface
interface IUniswapV2Pair is IERC20, IERC20Metadata, IERC20Permit {
    //event Approval(address indexed owner, address indexed spender, uint value); // IERC20
    //event Transfer(address indexed from, address indexed to, uint value); // IERC20

    //function name() external pure returns (string memory); // IERC20Metadata
    //function symbol() external pure returns (string memory); // IERC20Metadata
    //function decimals() external pure returns (uint8); // IERC20Metadata
    //function totalSupply() external view returns (uint); // IERC20
    //function balanceOf(address owner) external view returns (uint); // IERC20
    //function allowance(address owner, address spender) external view returns (uint); // IERC20

    //function approve(address spender, uint value) external returns (bool); // IERC20
    //function transfer(address to, uint value) external returns (bool); // IERC20
    //function transferFrom(address from, address to, uint value) external returns (bool); // IERC20

    //function DOMAIN_SEPARATOR() external view returns (bytes32); // IERC20Permit
    //function PERMIT_TYPEHASH() external pure returns (bytes32); // IERC20Permit
    //function nonces(address owner) external view returns (uint); // IERC20Permit

    //function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; // IERC20Permit

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    //function MINIMUM_LIQUIDITY() external pure returns (uint); // UNUSED
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    //function initialize(address, address) external; // UNUSED
}

File 2 of 16 : IUniswapV2Router01.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external view returns (address);
    function WETH() external view returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external view returns (uint amountOut); // pure -> view
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external view returns (uint amountIn); // pure -> view
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

File 2 of 16 : IUniswapV2Router02.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity >=0.6.2;

import './IUniswapV2Router01.sol';

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

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

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

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

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

File 2 of 16 : ZFLibrary.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

import '../utils/math/Math.sol';
import '../../interfaces/protocol/core/IZFPair.sol';
import '../../interfaces/protocol/core/IZFFactory.sol';

library ZFLibrary {
    /**
     * @dev Sort token addresses to ascending order.
     */
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, 'IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'ZERO_ADDRESS');
    }

    /**
     * @dev Fetches pair address with given tokens.
     *
     * It will fetches from the storage instead of calculation with CREATE2,
     * because the limitation of zkSync 2.0.
     * 
     * Note it will returns `address(0)` for non-exist pairs.
     * Consider reuse the pair address to avoid multiple storage accesses.
     */
    function pairFor(address factory, address tokenA, address tokenB) internal view returns (address pair) {
        return IZFFactory(factory).getPair(tokenA, tokenB);
    }

    /**
     * @dev Fetches pair with given tokens, returns its reserves in the given order.
     */
    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint112 reserveA, uint112 reserveB, uint16 swapFee) {
        address pair = pairFor(factory, tokenA, tokenB);
        if (pair != address(0)) {
            (uint112 reserve0, uint112 reserve1, uint16 _swapFee) = IZFPair(pair).getReservesAndParameters();
            (reserveA, reserveB) = tokenA < tokenB ? (reserve0, reserve1) : (reserve1, reserve0);
            swapFee = _swapFee;
        }
    }

    /**
     * @dev Fetches reserves with given pair in the given order.
     */
    function getReservesWithPair(address pair, address tokenA, address tokenB) internal view returns (uint112 reserveA, uint112 reserveB, uint16 swapFee) {
        (uint112 reserve0, uint112 reserve1, uint16 _swapFee) = IZFPair(pair).getReservesAndParameters();
        (reserveA, reserveB) = tokenA < tokenB ? (reserve0, reserve1) : (reserve1, reserve0);
        swapFee = _swapFee;
    }

    /**
     * @dev Fetches pair with given tokens, returns pair address and its reserves in the given order if exists. 
     */
    function getPairAndReserves(address factory, address tokenA, address tokenB) internal view returns (address pair, uint112 reserveA, uint112 reserveB, uint16 swapFee) {
        pair = pairFor(factory, tokenA, tokenB);
        if (pair != address(0)) { // return empty values if pair not exists
            (uint112 reserve0, uint112 reserve1, uint16 _swapFee) = IZFPair(pair).getReservesAndParameters();
            (reserveA, reserveB) = tokenA < tokenB ? (reserve0, reserve1) : (reserve1, reserve0);
            swapFee = _swapFee;
        }
    }

    /**
     * @dev Returns an equivalent amount of the other asset.
     */
    function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
        require(amountA > 0, 'INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'INSUFFICIENT_LIQUIDITY');
        amountB = amountA * reserveB / reserveA;
    }

    /**
     * @dev Returns the maximum amount of the output asset.
     */
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut, uint swapFee) internal pure returns (uint amountOut) {
        require(amountIn > 0, 'INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'INSUFFICIENT_LIQUIDITY');
        uint amountInAfterFee = amountIn * (10000 - swapFee);
        uint numerator = amountInAfterFee * reserveOut;
        uint denominator = (reserveIn * 10000) + amountInAfterFee;
        amountOut = numerator / denominator;
    }

    /**
     * @dev Returns a required amount of the input asset.
     */
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut, uint swapFee) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn * amountOut * 10000;
        uint denominator = (reserveOut - amountOut) * (10000 - swapFee);
        amountIn = (numerator / denominator) + 1;
    }

    /**
     * @dev Performs chained `getAmountOut` calculations on any number of pairs
     */
    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'INVALID_PATH');
        amounts = getAmountsOutUnchecked(factory, amountIn, path);
    }

    /**
     * @dev {getAmountsOut} without path length checks
     */
    function getAmountsOutUnchecked(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        amounts = new uint[](path.length);
        amounts[0] = amountIn;

        for (uint i; i < path.length - 1; ) {
            (uint112 reserveIn, uint112 reserveOut, uint16 swapFee) = getReserves(factory, path[i], path[i + 1]);
            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut, swapFee);

            unchecked {
                ++i;
            }
        }
    }

    /**
     * @dev Performs chained getAmountIn calculations on any number of pairs
     */
    function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'INVALID_PATH');
        amounts = getAmountsInUnchecked(factory, amountOut, path);
    }

    /**
     * @dev {getAmountsIn} without path length checks
     */
    function getAmountsInUnchecked(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
        amounts = new uint[](path.length);
        amounts[amounts.length - 1] = amountOut;

        for (uint i = path.length - 1; i > 0; ) {
            (uint112 reserveIn, uint112 reserveOut, uint16 swapFee) = getReserves(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut, swapFee);

            unchecked {
                --i;
            }
        }
    }
}

File 2 of 16 : TransferHelper.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

/// @dev Helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeTransfer: transfer failed'
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::transferFrom: transferFrom failed'
        );
    }

    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeApprove: approve failed'
        );
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

File 2 of 16 : Math.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

/**
 * @dev A library for performing various math operations.
 */
library Math {
    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @notice Calculates the square root of x, rounding down.
     * @dev Uses the Babylonian method https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method.
     * @param x The uint256 number for which to calculate the square root.
     * @return result The result as an uint256.
     *
     * See https://github.com/paulrberg/prb-math/blob/701b1badb9a0951f27e344602726ead71f138b1a/contracts/PRBMath.sol#L599
     */
    function sqrt(uint256 x) internal pure returns (uint256 result) {
        if (x == 0) {
            return 0;
        }

        // Set the initial guess to the least power of two that is greater than or equal to sqrt(x).
        uint256 xAux = uint256(x);
        result = 1;
        if (xAux >= 0x100000000000000000000000000000000) {
            xAux >>= 128;
            result <<= 64;
        }
        if (xAux >= 0x10000000000000000) {
            xAux >>= 64;
            result <<= 32;
        }
        if (xAux >= 0x100000000) {
            xAux >>= 32;
            result <<= 16;
        }
        if (xAux >= 0x10000) {
            xAux >>= 16;
            result <<= 8;
        }
        if (xAux >= 0x100) {
            xAux >>= 8;
            result <<= 4;
        }
        if (xAux >= 0x10) {
            xAux >>= 4;
            result <<= 2;
        }
        if (xAux >= 0x8) {
            result <<= 1;
        }

        // The operations can never overflow because the result is max 2^127 when it enters this block.
        unchecked {
            result = (result + x / result) >> 1;
            result = (result + x / result) >> 1;
            result = (result + x / result) >> 1;
            result = (result + x / result) >> 1;
            result = (result + x / result) >> 1;
            result = (result + x / result) >> 1;
            result = (result + x / result) >> 1; // Seven iterations should be enough
            uint256 roundedDownResult = x / result;
            return result >= roundedDownResult ? roundedDownResult : result;
        }
    }
}

Settings
{
  "compilerPath": "",
  "experimental": {},
  "optimizer": {
    "enabled": true,
    "mode": "3"
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountAInExpected","type":"uint256"},{"internalType":"uint256","name":"amountBInExpected","type":"uint256"},{"internalType":"uint256","name":"amountAInMin","type":"uint256"},{"internalType":"uint256","name":"amountBInMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountAInActual","type":"uint256"},{"internalType":"uint256","name":"amountBInActual","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenInExpected","type":"uint256"},{"internalType":"uint256","name":"amountTokenInMin","type":"uint256"},{"internalType":"uint256","name":"amountETHInMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountTokenInActual","type":"uint256"},{"internalType":"uint256","name":"amountETHInActual","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"indexedPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"indexedPairsLengthOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"indexedPairsOf","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"counts","type":"uint256"}],"name":"indexedPairsRange","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isPairIndexed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAOutMin","type":"uint256"},{"internalType":"uint256","name":"amountBOutMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountAOut","type":"uint256"},{"internalType":"uint256","name":"amountBOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAOutMin","type":"uint256"},{"internalType":"uint256","name":"amountBOutMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountAOut","type":"uint256"},{"internalType":"uint256","name":"amountBOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Contract Creation Code

9c4d535b000000000000000000000000000000000000000000000000000000000000000001000dc18c75158a6cb69d8bf2459b4e05c4ec98c742c5ae19b16f19c31fffc8000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000400000000000000000000000003a76e377ed58c8731f9df3a36155942438744ce30000000000000000000000005aea5775959fbc2557cc8789bc1bf90a239d9a91

Deployed Bytecode

0x00040000000000020000000003010019000000600330027000000d4d043001970003000000410355000200000001035500000d4d0030019d000100000000001f00000001012001900000000b0000c13d352f00800000040f0000000001000416000000000110004c000000490000c13d0000000001000031000000df02100039000000200300008a000000000232016f000000bf0320008c0000001a0000213d00000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000400020043f0000001f0210018f00000002030003670000000504100272000000280000613d00000000050000190000000506500210000000000763034f000000000707043b000000c00660003900000000007604350000000105500039000000000645004b000000200000413d000000000520004c000000370000613d0000000504400210000000000343034f0000000302200210000000c004400039000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f000000000024043500000d4e02000041000000400310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c000000490000c13d000000c00100043d00000d4f0210009c000000490000213d000000e00200043d00000d4f0320009c0000004b0000a13d00000000010000190000353100010430000000800010043f000000a00020043f000000800100043d00000140000004430000016000100443000000a00100043d00000020020000390000018000200443000001a00010044300000100002004430000000201000039000001200010044300000d5001000041000035300001042e00000d4d0300004100000d4d0410009c0000000001038019000000400110021000000d4d0420009c00000000020380190000006002200210000000000112019f000000000200041400000d4d0420009c0000000002038019000000c002200210000000000112019f00000d53011001c70000801002000039352f352a0000040f00000001022001900000006d0000613d000000000101043b000000000001042d00000000010000190000353100010430000000000301001900000d4d01000041000000000400041400000d4d0540009c0000000001044019000000c0011002100000006002200210000000000112001900000d54011000410000000002030019352f352a0000040f00000001022001900000007e0000613d000000000101043b000000000001042d00000000010000190000353100010430000d0000000000020000008001000039000000400010043f0000000002000031000000040120008c000000d10000413d000d00000000001d0000000201000367000000000301043b000000e00330027000000d560430009c000000e20000a13d00000d570430009c000001710000a13d00000d580430009c000001870000213d00000d5e0130009c000004990000213d00000d610130009c00000af50000613d00000d620130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000400310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002010003670000000402100370000000000202043b00000d4f0320009c00000d920000213d0000002401100370000000000101043b000c00000001001d00000000002004350000000101000039000000200010043f00000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000201041a0000000c03000029000000000223004b00000d920000813d0000000c02000029352f20700000040f0000000302200210000000000101041a000000000121022f00000d4f01100197000000ff0220008c0000000001002019000000400200043d000000000012043500000d4d0100004100000d4d0320009c0000000001024019000000400110021000000d9a011001c7000035300001042e000000000120004c00000d920000c13d00000d55010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300008005010000390000004402000039352f006f0000040f00000d4f011001970000000002000411000000000112004b0000118f0000c13d0000000001000019000035300001042e00000d6c0430009c0000013b0000213d00000d760130009c000001eb0000a13d00000d770130009c0000032f0000213d00000d7a0130009c000006020000613d00000d7b0130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000001600310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002010003670000000402100370000000000202043b000000000402001900000d4f0220009c00000d920000213d0000002402100370000000000202043b000000000902001900000d4f0220009c00000d920000213d0000004402100370000000000a02043b000000a402100370000000000202043b000c00000002001d00000d4f0220009c00000d920000213d000000e402100370000000000302043b000000000230004c0000000002000019000000010200c039000000000223004b00000d920000c13d0000010402100370000000000602043b000000ff0260008c00000d920000213d0000014402100370000000000802043b0000012402100370000000000702043b000000c401100370000000000501043b0000000001040019000b00000001001d0000000002090019000a00000002001d00000000040a0019000900000004001d352f22c30000040f00000002020003670000006403200370000000000503043b0000008402200370000000000602043b0000000b020000290000000a0300002900000009040000290000000c07000029352f2b4d0000040f000000400300043d00000020043000390000000000240435000000000013043500000d4d0100004100000d4d0230009c0000000001034019000000400110021000000d99011001c7000035300001042e00000d6d0430009c000002cb0000a13d00000d6e0430009c0000040a0000213d00000d710130009c0000062d0000613d00000d720130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000600310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002020003670000000401200370000000000101043b00000d4f0310009c00000d920000213d0000002403200370000000000303043b0000004402200370000000000402043b000000000240004c00000c560000c13d000000400100043d000000440210003900000da003000041000000000032043500000024021000390000001d03000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c7000035310001043000000d630430009c000003040000a13d00000d640430009c000004480000213d00000d670130009c0000082f0000613d00000d680130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d0000000001000031352f1fcf0000040f352f23d10000040f000000400200043d000000000012043500000d4d0100004100000d4d0320009c0000000001024019000000400110021000000d9a011001c7000035300001042e00000d590430009c000005280000213d00000d5c0130009c00000b190000613d00000d5d0130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000001000310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002010003670000000402100370000000000202043b000c00000002001d00000d4f0220009c00000d920000213d0000002402100370000000000202043b000b00000002001d00000d4f0220009c00000d920000213d000000c401100370000000000101043b00000d4f02100197000a00000002001d00000d4f0110009c00000d920000213d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039352f352a0000040f000000010220019000000d920000613d000000000201043b0000000201000367000000e403100370000000000303043b000000000232004b00000bd10000213d000000a402100370000000000602043b0000008402100370000000000502043b0000006402100370000000000402043b0000004401100370000000000301043b0000000c010000290000000b02000029352f20cc0000040f0000000005010019000900000005001d0000000004020019000800000003001d0000000002000411000700000002001d0000000c010000290000000003050019000600000004001d352f34210000040f0000000b01000029000000070200002900000009030000290000000804000029352f34210000040f00000d8e01000041000000400900043d000000000019043500000004019000390000000a02000029000000000021043500000000010004140000000d06000029000000090200002900000d4f05200197000000040250008c000b00000005001d000c00000006001d00000db40000c13d000000010300003100000f1d0000013d00000d7c0130009c00000a300000613d00000d7d0130009c000008f10000613d00000d7e0130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d0000000001000031000000040210008a00000d4e03000041000000a00420008c0000000004000019000000000403401900000d4e02200197000000000520004c000000000300a01900000d4e0220009c00000000020400190000000002036019000000000220004c00000d920000c13d00000002020003670000002403200370000000000303043b000a00000003001d0000000403200370000000000303043b000b00000003001d0000004403200370000000000303043b000c00000003001d00000d7f0330009c00000d920000213d0000000c03000029000000230330003900000d4e04000041000000000513004b0000000005000019000000000504801900000d4e0610019700000d4e03300197000000000763004b0000000004008019000000000363013f00000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000c030000290000000403300039000800000003001d000000000332034f000000000303043b000900000003001d00000d7f0330009c00000d920000213d0000000c03000029000000240430003900000009030000290000000503300210000600000004001d000700000003001d0000000004430019000000000114004b00000d920000213d0000006401200370000000000101043b000500000001001d00000d4f0110009c00000d920000213d0000008401200370000000000101043b000400000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039000300000004001d352f352a0000040f000000010220019000000d920000613d000000000101043b0000000402000029000000000121004b00000bd10000213d0000000901000029000000000110004c00000ca30000613d0000000701000029000000080200002900000000011200190000000201100367000000000101043b000800000001001d00000d4f0110009c00000d920000213d00000d550100004100000000001004390000000001000412000400000001001d00000004001004430000002001000039000000240010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000101043b00000d4f011001970000000802000029000000000112004b00000dc40000c13d00000d5501000041000000000010043900000004010000290000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d00000007020000290000003f02200039000000200300008a000000000232016f000000000101043b000700000001001d000000400300043d0000000001230019000000000231004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d0000000002000031000000400010043f000000090100002900000000001304350000000306000029000000000126004b00000d920000213d000000000103001900000006020000290000000204200367000000000404043b00000d4f0540009c00000d920000213d000000200110003900000000004104350000002002200039000000000462004b000002900000413d00000007010000290000000b02000029352f2fff0000040f000b00000001001d0000000021010434000400000002001d000000000210004c00000ca30000613d00000005011002100000000b02000029000000000121001900000000010104330000000a02000029000000000121004b0000076d0000413d00000002010003670000000602000029000000000221034f000000000202043b000a00000002001d00000d4f0220009c00000d920000213d0000000902000029000000010220008c000009840000a13d0000000c020000290000004402200039000000000121034f000000000201043b00000d4f0120009c00000d920000213d000000400400043d00000d89010000410000000000140435000000240340003900000000010004140000000000230435000c00000004001d00000004024000390000000a030000290000000000320435000000070200002900000d4f02200197000000040320008c0000185e0000c13d0000000103000031000000200130008c00000020040000390000000004034019000018900000013d00000d730130009c00000aa00000613d00000d740130009c0000092b0000613d00000d750130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000400310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002020003670000000401200370000000000101043b00000d4f0310009c00000d920000213d0000002402200370000000000202043b000c00000002001d00000d4f0220009c00000d920000213d0000000000100435000000200000043f0000004002000039000b00000002001d0000000001000019352f00590000040f0000000c020000290000000000200435000000200010043f00000000010000190000000b02000029352f00590000040f000000000101041a000000ff011001900000000001000019000000010100c039000000400200043d000000000012043500000d4d0100004100000d4d0320009c0000000001024019000000400110021000000d9a011001c7000035300001042e00000d690130009c00000ad00000613d00000d6a0130009c0000098a0000613d00000d6b0130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000000310004c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d000000400100043d000c00000001001d00000d55010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300008005010000390000004402000039352f006f0000040f00000d4f011001970000000c03000029000000000013043500000d4d0100004100000d4d0230009c0000000001034019000000400110021000000d9a011001c7000035300001042e00000d780130009c000006d60000613d00000d790130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d0000000001000031000000040210008a00000d4e03000041000000a00420008c0000000004000019000000000403401900000d4e02200197000000000520004c000000000300a01900000d4e0220009c00000000020400190000000002036019000000000220004c00000d920000c13d00000002020003670000002403200370000000000303043b000a00000003001d0000000403200370000000000303043b000b00000003001d0000004403200370000000000303043b000c00000003001d00000d7f0330009c00000d920000213d0000000c03000029000000230330003900000d4e04000041000000000513004b0000000005000019000000000504801900000d4e0610019700000d4e03300197000000000763004b0000000004008019000000000363013f00000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000c030000290000000403300039000800000003001d000000000332034f000000000303043b000900000003001d00000d7f0330009c00000d920000213d0000000c03000029000000240430003900000009030000290000000503300210000600000004001d000700000003001d0000000004430019000000000114004b00000d920000213d0000006401200370000000000101043b000500000001001d00000d4f0110009c00000d920000213d0000008401200370000000000101043b000400000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039000300000004001d352f352a0000040f000000010220019000000d920000613d000000000101043b0000000402000029000000000121004b00000bd10000213d0000000901000029000000000110004c00000ca30000613d0000000701000029000000080200002900000000011200190000000201100367000000000101043b000800000001001d00000d4f0110009c00000d920000213d00000d550100004100000000001004390000000001000412000400000001001d00000004001004430000002001000039000000240010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000101043b00000d4f011001970000000802000029000000000112004b00000dc40000c13d00000d5501000041000000000010043900000004010000290000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d00000007020000290000003f02200039000000200300008a000000000232016f000000000101043b000700000001001d000000400300043d0000000001230019000000000231004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d0000000002000031000000400010043f000000090100002900000000001304350000000306000029000000000126004b00000d920000213d000000000103001900000006020000290000000204200367000000000404043b00000d4f0540009c00000d920000213d000000200110003900000000004104350000002002200039000000000462004b000003d20000413d00000007010000290000000b02000029352f31c80000040f000b00000001001d0000000012010434000000000220004c000009840000613d00000000020104330000000a01000029000400000002001d000000000112004b00000a1e0000213d00000002010003670000000602000029000000000221034f000000000202043b000a00000002001d00000d4f0220009c00000d920000213d0000000902000029000000020220008c000009840000413d0000000c020000290000004402200039000000000121034f000000000201043b00000d4f0120009c00000d920000213d000000400400043d00000d89010000410000000000140435000000240340003900000000010004140000000000230435000c00000004001d00000004024000390000000a030000290000000000320435000000070200002900000d4f02200197000000040320008c0000190a0000c13d0000000103000031000000200130008c000000200400003900000000040340190000193c0000013d00000d6f0430009c0000077f0000613d00000d700130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000600310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002010003670000004402100370000000000202043b000a00000002001d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000400200043d00000d9e01000041000c00000002001d00000000001204350000000001000414000b00000001001d00000d5501000041000000000010043900000000010004120000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000101043b00000d4f02100197000000040120008c00000ca90000c13d0000000103000031000000200130008c000000200400003900000000040340190000000c0a00002900000cdc0000013d00000d650430009c000008590000613d00000d660130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000e00310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002010003670000000402100370000000000202043b000c00000002001d00000d4f0220009c00000d920000213d0000002402100370000000000202043b000b00000002001d00000d4f0220009c00000d920000213d000000a401100370000000000101043b000a00000001001d00000d4f0110009c00000d920000213d00000d800100004100000000001004390000800b010000390000000402000039352f006f0000040f000000c4020000390000000202200367000000000202043b000000000121004b0000000001000019000000010100a039352f20b70000040f00000d5501000041000000000010043900000000010004120000000400100443000000240000044300008005010000390000004402000039352f006f0000040f0000000c020000290000000b03000029352f2ec60000040f00000002020003670000004403200370000000000403043b0000006403200370000000000503043b0000008402200370000000000602043b0000000c020000290000000b030000290000000a07000029352f2b4d0000040f000000400300043d00000020043000390000000000240435000000000013043500000d4d0100004100000d4d0230009c0000000001034019000000400110021000000d99011001c7000035300001042e00000d5f0130009c00000b730000613d00000d600130009c00000d920000c13d0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000001400310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002010003670000000402100370000000000202043b000c00000002001d00000d4f0220009c00000d920000213d0000006402100370000000000202043b000900000002001d0000004402100370000000000202043b000800000002001d0000002402100370000000000202043b000b00000002001d0000008402100370000000000202043b000a00000002001d00000d4f0220009c00000d920000213d000000a402100370000000000202043b000700000002001d000000c402100370000000000302043b000000000230004c0000000002000019000000010200c039000600000003001d000000000223004b00000d920000c13d000000e402100370000000000202043b000500000002001d000000ff0220008c00000d920000213d0000012402100370000000000202043b000400000002001d0000010401100370000000000101043b000300000001001d00000d550100004100000000001004390000000001000412000200000001001d00000004001004430000002001000039000000240010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000201043b0000000c01000029000100000002001d00000006030000290000000b040000290000000705000029000000050600002900000003070000290000000408000029352f22c30000040f00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039352f352a0000040f000000010220019000000d920000613d000000000101043b0000000702000029000000000121004b00000bd10000213d00000d5501000041000000000010043900000002010000290000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000201043b000000400500043d00000d89010000410000000000150435000000040350003900000000010004140000000c040000290000000000430435000000010300002900000d4f04300197000700000005001d0000002403500039000600000004001d000000000043043500000d4f02200197000000040320008c000010910000c13d0000000103000031000000200130008c00000020040000390000000004034019000010c30000013d00000d5a0430009c00000b9e0000613d00000d5b0330009c00000d920000c13d000000040320008a00000d4e04000041000000800530008c0000000005000019000000000504401900000d4e03300197000000000630004c000000000400a01900000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000403100370000000000303043b000b00000003001d0000002403100370000000000303043b000c00000003001d00000d7f0330009c00000d920000213d0000000c03000029000000230330003900000d4e04000041000000000523004b0000000005000019000000000504801900000d4e0620019700000d4e03300197000000000763004b0000000004008019000000000363013f00000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000c030000290000000403300039000000000331034f000000000303043b000a00000003001d00000d7f0330009c00000d920000213d0000000c0300002900000024043000390000000a030000290000000503300210000900000004001d000800000003001d0000000004430019000000000224004b00000d920000213d0000004402100370000000000202043b000700000002001d00000d4f0220009c00000d920000213d0000006401100370000000000101043b000600000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039000500000004001d352f352a0000040f000000010220019000000d920000613d000000000101043b0000000602000029000000000121004b00000bd10000213d0000000a01000029000000000110004c000009840000613d00000009010000290000000201100367000000000101043b000600000001001d00000d4f0110009c00000d920000213d00000d550100004100000000001004390000000001000412000400000001001d00000004001004430000002001000039000000240010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000101043b00000d4f01100197000300000001001d0000000602000029000000000112004b00000dc40000c13d00000d5501000041000000000010043900000004010000290000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d00000008020000290000003f02200039000000200300008a000600000003001d000000000232016f000000000101043b000800000001001d000000400300043d0000000001230019000000000231004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d0000000002000031000000400010043f0000000a0100002900000000001304350000000506000029000000000126004b00000d920000213d000000000103001900000009020000290000000204200367000000000404043b00000d4f0540009c00000d920000213d000000200110003900000000004104350000002002200039000000000462004b000005c20000413d00000008010000290000000b02000029352f31c80000040f000b00000001001d0000000012010434000000000220004c000009840000613d00000000020104330000000001000416000500000002001d000000000112004b00000a1e0000213d00000d830100004100000000001004390000000301000029000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000110004c00000d920000613d000000400200043d00000d8501000041000400000002001d000000000012043500000000010004140000000d02000029000200000002001d0000000302000029000000040220008c0000171f0000613d00000d4d0200004100000d4d0310009c0000000001028019000000040400002900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f0000000502000029000000000220004c000016f20000c13d00000d87011001c70000000302000029352f35250000040f000016f80000013d0000000001000416000000000110004c00000d920000c13d0000000001000031000b00000001001d352f1fff0000040f000c00000001001d000000000102001900000000020300190000000b03000029352f277f0000040f000b00000001001d0000000002010433000000010120008c00000000010000190000000101002039352f27be0000040f00000d5501000041000000000010043900000000010004120000000400100443000000240000044300008005010000390000004402000039352f006f0000040f0000000c020000290000000b03000029352f31c80000040f0000000002010019000000400100043d000c00000001001d352f1ff00000040f0000000c04000029000000000141004900000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c000000000204401900000040022002100000006001100210000000000121019f000035300001042e0000000001000416000000000110004c00000d920000c13d0000000001000031000000040210008a00000d4e03000041000000a00420008c0000000004000019000000000403401900000d4e02200197000000000520004c000000000300a01900000d4e0220009c00000000020400190000000002036019000000000220004c00000d920000c13d00000002020003670000002403200370000000000303043b000a00000003001d0000000403200370000000000303043b000b00000003001d0000004403200370000000000303043b000c00000003001d00000d7f0330009c00000d920000213d0000000c03000029000000230330003900000d4e04000041000000000513004b0000000005000019000000000504801900000d4e0610019700000d4e03300197000000000763004b0000000004008019000000000363013f00000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000c030000290000000403300039000800000003001d000000000332034f000000000303043b000900000003001d00000d7f0330009c00000d920000213d0000000c03000029000000240430003900000009030000290000000503300210000600000004001d000700000003001d0000000003430019000000000113004b00000d920000213d0000006401200370000000000101043b000500000001001d00000d4f0110009c00000d920000213d0000008401200370000000000101043b000400000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039352f352a0000040f000000010220019000000d920000613d000000000101043b0000000402000029000000000121004b00000bd10000213d0000000901000029000000000110004c00000ca30000613d0000000801000029000000070200002900000000012100190000000201100367000000000101043b000800000001001d00000d4f0110009c00000d920000213d00000d550100004100000000001004390000000001000412000700000001001d00000004001004430000002001000039000400000001001d000000240010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000101043b00000d4f011001970000000802000029000000000112004b00000dc40000c13d00000006010000290000000201100367000000000101043b000300000001001d00000d4f0110009c00000d920000213d0000000901000029000000020110008c000009840000413d00000d5501000041000000000010043900000007010000290000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d0000000c0200002900000044022000390000000202200367000000000202043b00000d4f0320009c00000d920000213d000000000301043b000000400500043d00000d89010000410000000000150435000000240450003900000000010004140000000000240435000c00000005001d00000004025000390000000304000029000000000042043500000d4f02300197000000040320008c000014450000c13d0000000103000031000000200130008c00000020040000390000000004034019000014770000013d0000000001000416000000000110004c00000d920000c13d0000000001000031000000040210008a00000d4e03000041000000a00420008c0000000004000019000000000403401900000d4e02200197000000000520004c000000000300a01900000d4e0220009c00000000020400190000000002036019000000000220004c00000d920000c13d00000002020003670000002403200370000000000303043b000a00000003001d0000000403200370000000000303043b000b00000003001d0000004403200370000000000303043b000c00000003001d00000d7f0330009c00000d920000213d0000000c03000029000000230330003900000d4e04000041000000000513004b0000000005000019000000000504801900000d4e0610019700000d4e03300197000000000763004b0000000004008019000000000363013f00000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000c030000290000000403300039000000000332034f000000000303043b000900000003001d00000d7f0330009c00000d920000213d0000000c03000029000000240430003900000009030000290000000503300210000700000004001d000800000003001d0000000004430019000000000114004b00000d920000213d0000006401200370000000000101043b000600000001001d00000d4f0110009c00000d920000213d0000008401200370000000000101043b000500000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039000400000004001d352f352a0000040f000000010220019000000d920000613d000000000101043b0000000502000029000000000121004b00000bd10000213d00000d5501000041000000000010043900000000010004120000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d00000008020000290000003f02200039000000200300008a000000000232016f000000000101043b000800000001001d000000400300043d0000000001230019000000000231004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d0000000002000031000000400010043f000000090100002900000000001304350000000406000029000000000126004b00000d920000213d0000000901000029000000000110004c0000075f0000613d000000000103001900000007020000290000000204200367000000000404043b00000d4f0540009c00000d920000213d000000200110003900000000004104350000002002200039000000000462004b000007560000413d00000008010000290000000b02000029352f2fff0000040f000b00000001001d0000000001010433000000000210004c00000ca30000613d00000005011002100000000b02000029000000000121001900000000010104330000000a02000029000000000121004b000011c10000813d000000400100043d000000440210003900000da103000041000000000032043500000024021000390000001a03000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c70000353100010430000000040320008a00000d4e04000041000000800530008c0000000005000019000000000504401900000d4e03300197000000000630004c000000000400a01900000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000403100370000000000303043b000b00000003001d0000002403100370000000000303043b000c00000003001d00000d7f0330009c00000d920000213d0000000c03000029000000230330003900000d4e04000041000000000523004b0000000005000019000000000504801900000d4e0620019700000d4e03300197000000000763004b0000000004008019000000000363013f00000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000c030000290000000403300039000000000331034f000000000303043b000a00000003001d00000d7f0330009c00000d920000213d0000000c0300002900000024043000390000000a030000290000000503300210000900000004001d000800000003001d0000000004430019000000000224004b00000d920000213d0000004402100370000000000202043b000700000002001d00000d4f0220009c00000d920000213d0000006401100370000000000101043b000600000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039000500000004001d352f352a0000040f000000010220019000000d920000613d000000000101043b0000000602000029000000000121004b00000bd10000213d0000000a01000029000000000110004c000009840000613d00000009010000290000000201100367000000000101043b000600000001001d00000d4f0110009c00000d920000213d00000d550100004100000000001004390000000001000412000400000001001d00000004001004430000002001000039000000240010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000101043b00000d4f01100197000300000001001d0000000602000029000000000112004b00000dc40000c13d00000d5501000041000000000010043900000004010000290000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d00000008020000290000003f02200039000000200300008a000000000432016f000000000101043b000800000001001d0000000002000416000000400300043d0000000001430019000000000431004b0000000004000019000000010400403900000d7f0510009c0000101b0000213d00000001044001900000101b0000c13d0000000004000031000000400010043f0000000a0100002900000000001304350000000507000029000000000147004b00000d920000213d000000000103001900000009040000290000000205400367000000000505043b00000d4f0650009c00000d920000213d000000200110003900000000005104350000002004400039000000000574004b000008150000413d0000000801000029352f2fff0000040f000600000001001d0000000012010434000000000320004c0000136c0000c13d0000000d0100002900000d510200004100000000002104350000001102000039000000040020043f00000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d52011001c700003531000104300000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000600310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002010003670000002402100370000000000302043b0000000402100370000000000402043b000000000240004c00000be30000c13d000000400100043d000000440210003900000d9c03000041000000000032043500000024021000390000001303000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c70000353100010430000000040320008a00000d4e04000041000000800530008c0000000005000019000000000504401900000d4e03300197000000000630004c000000000400a01900000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000403100370000000000303043b000b00000003001d0000002403100370000000000303043b000c00000003001d00000d7f0330009c00000d920000213d0000000c03000029000000230330003900000d4e04000041000000000523004b0000000005000019000000000504801900000d4e0620019700000d4e03300197000000000763004b0000000004008019000000000363013f00000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000c030000290000000403300039000000000331034f000000000303043b000a00000003001d00000d7f0330009c00000d920000213d0000000c0300002900000024043000390000000a030000290000000503300210000900000004001d0000000003430019000800000003001d000000000223004b00000d920000213d0000004402100370000000000202043b000700000002001d00000d4f0220009c00000d920000213d0000006401100370000000000101043b000600000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039352f352a0000040f000000010220019000000d920000613d000000000101043b0000000602000029000000000121004b00000bd10000213d0000000a01000029000000000110004c000009840000613d00000009010000290000000201100367000000000101043b000600000001001d00000d4f0110009c00000d920000213d00000d550100004100000000001004390000000001000412000500000001001d00000004001004430000002001000039000000240010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000101043b00000d4f01100197000400000001001d0000000602000029000000000112004b00000dc40000c13d00000d830100004100000000001004390000000401000029000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000110004c00000d920000613d000000400200043d00000d8501000041000600000002001d0000000000120435000000000100041400000000030004160000000d02000029000300000002001d0000000402000029000000040220008c000012aa0000613d00000d4d0200004100000d4d0410009c0000000001028019000000060500002900000d4d0450009c00000000020540190000004002200210000000c001100210000000000121019f000000000230004c0000127e0000c13d00000d87011001c70000000402000029352f35250000040f000012830000013d0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000600310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002010003670000004402100370000000000202043b000a00000002001d0000002402100370000000000202043b000900000002001d0000000401100370000000000101043b000800000001001d000000400200043d00000d9e01000041000c00000002001d00000000001204350000000001000414000b00000001001d00000d5501000041000000000010043900000000010004120000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000101043b00000d4f02100197000000040120008c00000c060000c13d0000000103000031000000200130008c000000200400003900000000040340190000000c0a00002900000c390000013d0000000001000416000000000110004c00000d920000c13d0000000001000031000000040210008a00000d4e03000041000000a00420008c0000000004000019000000000403401900000d4e02200197000000000520004c000000000300a01900000d4e0220009c00000000020400190000000002036019000000000220004c00000d920000c13d00000002020003670000002403200370000000000303043b000a00000003001d0000000403200370000000000303043b000b00000003001d0000004403200370000000000303043b000c00000003001d00000d7f0330009c00000d920000213d0000000c03000029000000230330003900000d4e04000041000000000513004b0000000005000019000000000504801900000d4e0610019700000d4e03300197000000000763004b0000000004008019000000000363013f00000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000c030000290000000403300039000800000003001d000000000332034f000000000303043b000900000003001d00000d7f0330009c00000d920000213d0000000c03000029000000240430003900000009030000290000000503300210000700000004001d000600000003001d0000000003430019000000000113004b00000d920000213d0000006401200370000000000101043b000500000001001d00000d4f0110009c00000d920000213d0000008401200370000000000101043b000400000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039352f352a0000040f000000010220019000000d920000613d000000000101043b0000000402000029000000000121004b00000bd10000213d0000000901000029000000000110004c00000dd60000c13d00000d510100004100000000001004350000003201000039000000040010043f00000d520100004100003531000104300000000001000416000000000110004c00000d920000c13d0000000001000031000000040210008a00000d4e03000041000000a00420008c0000000004000019000000000403401900000d4e02200197000000000520004c000000000300a01900000d4e0220009c00000000020400190000000002036019000000000220004c00000d920000c13d00000002020003670000002403200370000000000303043b000a00000003001d0000000403200370000000000303043b000b00000003001d0000004403200370000000000303043b000c00000003001d00000d7f0330009c00000d920000213d0000000c03000029000000230330003900000d4e04000041000000000513004b0000000005000019000000000504801900000d4e0610019700000d4e03300197000000000763004b0000000004008019000000000363013f00000d4e0330009c00000000030500190000000003046019000000000330004c00000d920000c13d0000000c030000290000000403300039000000000332034f000000000303043b000900000003001d00000d7f0330009c00000d920000213d0000000c03000029000000240430003900000009030000290000000503300210000700000004001d000800000003001d0000000004430019000000000114004b00000d920000213d0000006401200370000000000101043b000600000001001d00000d4f0110009c00000d920000213d0000008401200370000000000101043b000500000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039000400000004001d352f352a0000040f000000010220019000000d920000613d000000000101043b0000000502000029000000000121004b00000bd10000213d00000d5501000041000000000010043900000000010004120000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d00000008020000290000003f02200039000000200300008a000000000232016f000000000101043b000800000001001d000000400300043d0000000001230019000000000231004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d0000000002000031000000400010043f000000090100002900000000001304350000000406000029000000000126004b00000d920000213d0000000901000029000000000110004c00000a130000613d000000000103001900000007020000290000000204200367000000000404043b00000d4f0540009c00000d920000213d000000200110003900000000004104350000002002200039000000000462004b00000a0a0000413d00000008010000290000000b02000029352f31c80000040f000b00000001001d0000000012010434000000000220004c000009840000613d00000000010104330000000a02000029000000000121004b000011f60000a13d000000400100043d000000440210003900000da203000041000000000032043500000024021000390000001603000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c700003531000104300000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000c00310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000002010003670000000402100370000000000202043b000c00000002001d00000d4f0220009c00000d920000213d0000008402100370000000000202043b000b00000002001d00000d4f0220009c00000d920000213d000000a402100370000000000202043b000a00000002001d0000002402100370000000000202043b000900000002001d0000004402100370000000000202043b000800000002001d0000006401100370000000000101043b000700000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039352f352a0000040f000000010220019000000d920000613d000000000101043b0000000a02000029000000000121004b00000bd10000213d00000d550100004100000000001004390000000001000412000a00000001001d00000004001004430000002001000039000000240010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000101043b000600000001001d00000d550100004100000000001004390000000a010000290000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000201043b000000400500043d00000d89010000410000000000150435000000040350003900000000010004140000000c040000290000000000430435000000060300002900000d4f04300197000a00000005001d0000002403500039000500000004001d000000000043043500000d4f02200197000000040320008c00000e070000c13d0000000103000031000000200130008c0000002004000039000000000403401900000e390000013d0000000001000416000000000110004c00000d920000c13d0000000001000031352f20300000040f00000d550b0000410000000000b00439000000000b0004120000000400b00443000000200b0000390000002400b00443000c00000001001d000b00000002001d000900000003001d000800000004001d000700000005001d000a00000006001d000300000007001d000600000008001d000500000009001d00040000000a001d00008005010000390000004402000039352f006f0000040f00000000020100190000000c0100002900000003030000290000000b040000290000000a05000029000000060600002900000005070000290000000408000029352f22c30000040f0000000c010000290000000b020000290000000903000029000000080400002900000007050000290000000a06000029352f23d10000040f000000400200043d000000000012043500000d4d0100004100000d4d0320009c0000000001024019000000400110021000000d9a011001c7000035300001042e0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000200310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000004010000390000000201100367000000000101043b00000d4f0210009c00000d920000213d00000000001004350000000101000039000000200010043f00000040020000390000000001000019352f00590000040f000000000101041a000000400200043d000000000012043500000d4d0100004100000d4d0320009c0000000001024019000000400110021000000d9a011001c7000035300001042e0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000000310004c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d000000400100043d000c00000001001d00000d5501000041000000000010043900000000010004120000000400100443000000240000044300008005010000390000004402000039352f006f0000040f00000d4f011001970000000c03000029000000000013043500000d4d0100004100000d4d0230009c0000000001034019000000400110021000000d9a011001c7000035300001042e0000000001000416000000000110004c00000d920000c13d000000040100008a000000000110003100000d4e02000041000000200310008c0000000003000019000000000302401900000d4e01100197000000000410004c000000000200a01900000d4e0110009c00000000010300190000000001026019000000000110004c00000d920000c13d00000004010000390000000201100367000000000101043b00000d4f0210009c00000d920000213d00000000001004350000000101000039000000200010043f00000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000301041a000000400200043d000c00000002001d000a00000003001d0000000002320436000b00000002001d0000000d04000029000000000014043500000d4d01000041000000000200041400000d4d0320009c000000000201801900000d4d0340009c000900000004001d00000000010440190000004001100210000000c002200210000000000121019f00000d95011001c70000801002000039352f352a0000040f000000010220019000000d920000613d0000000a040000290000000905000029000000000245004b0000000b0300002900000b610000813d000000000101043b000000000201041a00000d4f02200197000000000323043600000001011000390000000105500039000000000245004b00000b5a0000413d0000000c010000290000000002130049352f208d0000040f000000400100043d000b00000001001d0000000c02000029352f20600000040f0000000b04000029000000000141004900000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c000000000204401900000040022002100000006001100210000000000121019f000035300001042e0000000001000416000000000110004c00000d920000c13d0000000001000031000b00000001001d352f1fff0000040f000c00000001001d000000000102001900000000020300190000000b03000029352f277f0000040f000b00000001001d0000000002010433000000010120008c00000000010000190000000101002039352f27be0000040f00000d5501000041000000000010043900000000010004120000000400100443000000240000044300008005010000390000004402000039352f006f0000040f0000000c020000290000000b03000029352f2fff0000040f0000000002010019000000400100043d000c00000001001d352f1ff00000040f0000000c04000029000000000141004900000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c000000000204401900000040022002100000006001100210000000000121019f000035300001042e000000040220008a00000d4e03000041000000c00420008c0000000004000019000000000403401900000d4e02200197000000000520004c000000000300a01900000d4e0220009c00000000020400190000000002036019000000000220004c00000d920000c13d0000000402100370000000000202043b000c00000002001d00000d4f0220009c00000d920000213d0000008402100370000000000202043b000b00000002001d00000d4f0220009c00000d920000213d000000a402100370000000000202043b000a00000002001d0000002402100370000000000202043b000800000002001d0000004402100370000000000202043b000900000002001d0000006401100370000000000101043b000700000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039352f352a0000040f000000010220019000000d920000613d000000000101043b0000000a02000029000000000121004b00000d400000a13d000000400100043d000000440210003900000da403000041000000000032043500000024021000390000000703000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c700003531000104300000004401100370000000000201043b000b00000002001d000000000130004c0000000001000019000000010100c039000000000220004c0000000002000019000000010200c039000000000121016f000000010110018f000c00000003001d000a00000004001d352f2f490000040f0000000a010000290000000b02000029352f2b3f0000040f0000000c03000029000000000230004c00000bfd0000c13d00000d510100004100000000001004350000001201000039000000040010043f00000d5201000041000035310001043000000000213100d9000000400200043d000000000012043500000d4d0100004100000d4d0320009c0000000001024019000000400110021000000d9a011001c7000035300001042e00000d4d010000410000000b0400002900000d4d0340009c000000000301001900000000030440190000000c0500002900000d4d0450009c00000000010540190000004001100210000000c003300210000000000113019f00000d87011001c7352f352a0000040f0000000c0a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000c260000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000c1e0000413d000000000750004c00000c350000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000cef0000613d0000001f01400039000000600210018f0000000001a20019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d0000000c0100002900000000040104330000ffff0140008c00000d920000213d000000080100002900000009020000290000000a03000029352f2f5e0000040f000000400200043d000000000012043500000d4d0100004100000d4d0320009c0000000001024019000000400110021000000d9a011001c7000035300001042e000c00000004001d000b00000003001d00000000001004350000000101000039000000200010043f00000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000301041a000000400200043d000a00000002001d000800000003001d0000000002320436000900000002001d0000000d04000029000000000014043500000d4d01000041000000000200041400000d4d0320009c000000000201801900000d4d0340009c000700000004001d00000000010440190000004001100210000000c002200210000000000121019f00000d95011001c70000801002000039352f352a0000040f000000010220019000000d920000613d00000008040000290000000705000029000000000245004b0000000903000029000000000203001900000c8c0000813d000000000101043b0000000002030019000000000301041a00000d4f03300197000000000232043600000001011000390000000105500039000000000345004b00000c850000413d0000000a0400002900000000014200490000001f02100039000000200100008a000000000312016f0000000002430019000000000332004b0000000003000019000000010300403900000d7f0420009c0000101b0000213d00000001033001900000101b0000c13d000000400020043f0000000b030000290000000c040000290000000003340019000000000443004b0000000004000019000000010400403900000001044001900000000a0400002900000da00000613d00000d510100004100000000001004350000001101000039000000040010043f00000d5201000041000035310001043000000d4d010000410000000c0400002900000d4d0340009c000000000301001900000000030440190000000b0500002900000d4d0450009c0000000001054019000000c0011002100000004003300210000000000113019f00000d87011001c7352f352a0000040f0000000c0a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000cc90000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000cc10000413d000000000750004c00000cd80000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000d150000613d0000001f01400039000000600210018f0000000001a20019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d8e0000813d00000d4d010000410000000d0200002900000d4d0320009c000000000102401900000d88211000d10000353100010430000000400200043d0000001f0430018f000000050330027200000cfc0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000cf40000413d000000000540004c00000d0b0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f00003531000104300000000d020000290000000004230019000000000434004b00000d920000213d000000000221034f000000400100043d0000001f0430018f000000050330027200000d270000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b00000d1f0000413d000000000540004c00000d360000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d55010000410000000000100439000000000100041200000004001004430000002001000039000000240010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d000000000201043b000a00000002001d00000000040004160000000c01000029000000080300002900000009050000290000000706000029352f20cc0000040f00000000050100190000000004020019000900000003001d00000000020004110000000c01000029000700000002001d000800000005001d0000000003050019000600000004001d352f34210000040f00000d830100004100000000001004390000000a0100002900000d4f01100197000c00000001001d000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000110004c00000d920000613d000000400400043d00000d8501000041000000000014043500000000010004140000000d02000029000500000002001d0000000c02000029000000040220008c000a00000004001d000010190000613d00000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f0000000902000029000000000220004c00000feb0000c13d00000d87011001c70000000c02000029352f35250000040f00000ff10000013d0000000c0100002900000000040104330000ffff0140008c00000d940000a13d00000000010000190000353100010430000000080100002900000009020000290000000a03000029352f2fb10000040f000000400200043d000000000012043500000d4d0100004100000d4d0320009c0000000001024019000000400110021000000d9a011001c7000035300001042e0000000004040433000000000343004b00000e9b0000a13d000000440120003900000d9f03000041000000000031043500000024012000390000000c03000039000000000031043500000d9201000041000000000012043500000004012000390000002003000039000000000031043500000d4d0100004100000d4d0320009c0000000001024019000000400110021000000d9d011001c7000035310001043000000d4d0200004100000d4d0390009c000900000009001d0000000003020019000000000309401900000d4d0410009c0000000001028019000000c0011002100000004002300210000000000112019f000000000260004c00000ef10000c13d00000d52011001c70000000002050019352f35250000040f00000ef70000013d000000400100043d000000440210003900000da303000041000000000032043500000024021000390000000c03000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c7000035310001043000000007010000290000000201100367000000000101043b000400000001001d00000d4f0110009c00000d920000213d0000000901000029000000020110008c000009840000413d00000d5501000041000000000010043900000000010004120000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d0000000c0200002900000044022000390000000202200367000000000202043b00000d4f0320009c00000d920000213d000000000301043b000000400500043d00000d89010000410000000000150435000000240450003900000000010004140000000000240435000c00000005001d00000004025000390000000404000029000000000042043500000d4f02300197000000040320008c0000120e0000c13d0000000103000031000000200130008c00000020040000390000000004034019000012400000013d00000d4d0300004100000d4d0410009c00000000010380190000000a0500002900000d4d0450009c00000000030540190000004003300210000000c001100210000000000131019f00000d8a011001c7352f352a0000040f0000000a0a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000e250000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000e1d0000413d000000000750004c00000e350000613d0000000506600210000000000761034f0000000a0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000010390000613d0000001f01400039000000600210018f0000000a010000290000000001120019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d0000000a01000029000000000101043300000d4f0210009c00000d920000213d00000000070004100000000c020000290000000603000029000000090400002900000008050000290000000706000029352f2b4d0000040f0000000003010019000a00000002001d0000000c010000290000000b02000029000c00000003001d352f33920000040f00000d830100004100000000001004390000000501000029000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000110004c00000d920000613d000000400200043d00000d98010000410000000000120435000900000002001d00000004012000390000000a02000029000000000021043500000000010004140000000502000029000000040220008c00000e870000613d00000d4d0200004100000d4d0310009c0000000001028019000000090400002900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f00000d52011001c70000000502000029352f35250000040f0000000003010019000000600330027000010d4d0030019d00000d4d04300197000300000001035500000001022001900000132f0000613d000000090100002900000d7f0110009c0000101b0000213d0000000901000029000000400010043f0000000b010000290000000a02000029352f34b30000040f000000400100043d00000020021000390000000a0300002900000000003204350000000c02000029000000000021043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d99011001c7000035300001042e0000000c0300002900000d7f0330009c0000101b0000213d0000000c0300002900000005053002100000003f03500039000000000113016f000000000121001900000d7f0310009c0000101b0000213d000000400010043f0000000c0100002900000000031204360000001f0150018f00000000040000310000000204400367000000050550027200000eb60000613d000000000600001900000005076002100000000008730019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b00000eae0000413d000000000610004c00000ec50000613d0000000505500210000000000454034f00000000035300190000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f00000000001304350000000d010000290000000c06000029000000000361004b0000000b050000290000000a07000029000000090800002900000ee30000813d0000000003020433000000000313004b000009840000a13d0000000003150019000000000453004b00000000040000190000000104004039000000010440019000000ca30000c13d0000000004070433000000000434004b000009840000a13d00000005041002100000000004240019000000200440003900000005033002100000000003380019000000000303043300000d4f0330019700000000003404350000000101100039000000000361004b00000ecc0000413d000000400100043d000c00000001001d352f20600000040f0000000c04000029000000000141004900000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c000000000204401900000040022002100000006001100210000000000121019f000035300001042e00000d8f011001c700008009020000390000000c0300002900000000040500190000000005000019352f35250000040f0000000003010019000000600330027000000d4d03300197000000200430008c000000200500003900000000050340190000001f0450018f0000000505500272000000090900002900000f0a0000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b00000f020000413d000000000640004c00000f190000613d0000000505500210000000000651034f00000000055900190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f0003000000010355000000010220019000000fbf0000613d000000200130008c000000200100003900000000010340190000001f01100039000000600210018f00000000050900190000000001920019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d0000000001050433000900000001001d0000000a010000290000000c0200002900000000001204350000000d04000029000000200040043f00000d4d01000041000000000200041400000d4d0320009c000000000201801900000d4d0340009c000c00000004001d00000000010440190000004001100210000000c002200210000000000121019f00000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b0000000b020000290000000000200435000000200010043f00000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000101041a000000ff0110019000000fb00000c13d0000000a010000290000000c0200002900000000001204350000000d04000029000000200040043f00000d4d01000041000000000200041400000d4d0320009c000000000201801900000d4d0340009c000c00000004001d00000000010440190000004001100210000000c002200210000000000121019f00000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b0000000b020000290000000000200435000000200010043f00000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000201041a000001000300008a000000000232016f00000001022001bf000000000021041b0000000a010000290000000c0200002900000000001204350000000101000039000000200010043f00000d4d010000410000000d02000029000000000300041400000d4d0430009c000000000301801900000d4d0420009c00000000010240190000004001100210000000c002300210000000000121019f00000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000201041a000c00000002001d00000d7f0220009c0000101b0000213d0000000c030000290000000102300039000000000021041b000000000201041a000000000232004b000009840000a13d000000000010043500000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d95011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b0000000c020000290000000001210019000000000201041a00000d96022001970000000b03000029000000000232019f000000000021041b000000400100043d0000004002100039000000090300002900000000003204350000002002100039000000080300002900000000003204350000000602000029000000000021043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d97011001c7000035300001042e0000000c020000290000000002230019000000000232004b00000d920000213d0000000c02000029000000000221034f000000400100043d0000001f0430018f000000050330027200000fd20000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b00000fca0000413d000000000540004c00000fe10000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d86011001c7000080090200003900000009030000290000000c040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d033001970000000505000029000000000453004b00000000050340190000001f0450018f00000005055002720000000a09000029000010040000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b00000ffc0000413d000000000640004c000010140000613d0000000505500210000000000651034f0000000a0700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f000300000001035500000001022001900000000a040000290000105f0000613d00000d7f0140009c000010210000a13d00000d510100004100000000001004350000004101000039000000040010043f00000d520100004100003531000104300000000a01000029000000400010043f0000000501000029000000000110004c0000108b0000c13d00000d8b010000410000000a040000290000000000140435000000240240003900000000010004140000000d03000029000500000003001d00000009030000290000000000320435000000080200002900000d4f032001970000000402400039000800000003001d00000000003204350000000c02000029000000040220008c000011140000c13d0000000103000031000011780000013d000000400200043d0000001f0430018f0000000503300272000010460000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000103e0000413d000000000540004c000010550000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000005020000290000000002230019000000000232004b00000d920000213d0000000502000029000000000221034f000000400100043d0000001f0430018f0000000503300272000010720000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b0000106a0000413d000000000540004c000010810000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d4d01000041000000050300002900000d4d0230009c000000000103401900000d88211000d1000035310001043000000d4d0300004100000d4d0410009c0000000001038019000000070500002900000d4d0450009c00000000030540190000004003300210000000c001100210000000000131019f00000d8a011001c7352f352a0000040f000000070a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000010af0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000010a70000413d000000000750004c000010bf0000613d0000000506600210000000000761034f000000070800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000011250000613d0000001f01400039000000600210018f00000007010000290000000001120019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d0000000701000029000000000101043300000d4f0210009c00000d920000213d00000000070004100000000c0200002900000001030000290000000b0400002900000008050000290000000906000029352f2b4d0000040f0000000003010019000b00000002001d0000000c010000290000000a02000029000c00000003001d352f33920000040f00000d830100004100000000001004390000000601000029000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000110004c00000ce90000613d000000400200043d00000d98010000410000000000120435000900000002001d00000004012000390000000b02000029000000000021043500000000010004140000000d02000029000800000002001d0000000602000029000000040220008c000014d20000613d00000d4d02000041000000090400002900000d4d0340009c0000000003020019000000000304401900000d4d0410009c0000000001028019000000c0011002100000004002300210000000000112019f0000000802000029000000000220004c000014a50000c13d00000d52011001c70000000602000029352f35250000040f0000000003010019000000600330027000000d4d03300197000014ce0000013d00000d4d020000410000000a0400002900000d4d0340009c0000000003020019000000000304401900000d4d0410009c0000000001028019000000c0011002100000004002300210000000000112019f0000000502000029000000000220004c0000114b0000c13d00000d8a011001c70000000c02000029352f35250000040f000011510000013d000000400200043d0000001f0430018f0000000503300272000011320000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000112a0000413d000000000540004c000011410000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000d8c011001c7000080090200003900000005030000290000000c040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d03300197000000200430008c000000200500003900000000050340190000001f0450018f00000005055002720000000a09000029000011640000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b0000115c0000413d000000000640004c000011740000613d0000000505500210000000000651034f0000000a0700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f00030000000103550000000102200190000011950000613d000000200130008c000000200100003900000000010340190000001f01100039000000600110018f0000000a020000290000000001210019000c00000001001d00000d7f0110009c0000101b0000213d0000000c01000029000000400010043f000000200130008c00000d920000413d0000000a010000290000000001010433000000000210004c0000000002000019000000010200c039000000000221004b00000d920000c13d000000000110004c000012700000c13d00000d510100004100000000001004350000000101000039000000040010043f00000d5201000041000035310001043000000005020000290000000002230019000000000232004b00000d920000213d0000000502000029000000000221034f000000400100043d0000001f0430018f0000000503300272000011a80000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b000011a00000413d000000000540004c000011b70000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f00003531000104300000000901000029000000000110004c000009840000613d00000002010003670000000702000029000000000221034f000000000202043b000000000402001900000d4f0220009c00000d920000213d0000000902000029000000020220008c000009840000413d0000000c020000290000004402200039000000000121034f000000000301043b00000d4f0130009c00000d920000213d00000008010000290000000002040019000a00000002001d352f2ec60000040f000c00000001001d0000000b01000029352f20a00000040f000000000401043300000000020004110000000a010000290000000c03000029352f34210000040f00000008010000290000000c020000290000000b03000029000000070400002900000009050000290000000606000029352f2c800000040f000000400100043d000c00000001001d0000000b02000029352f1ff00000040f0000000c04000029000000000141004900000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c000000000204401900000040022002100000006001100210000000000121019f000035300001042e0000000901000029000000000110004c000012030000613d00000002010003670000000702000029000000000221034f000000000202043b000000000402001900000d4f0220009c00000d920000213d0000000902000029000000020220008c000013a00000813d0000000d0100002900000d510200004100000000002104350000003202000039000000040020043f00000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d52011001c7000035310001043000000d4d0300004100000d4d0410009c00000000010380190000000c0500002900000d4d0450009c00000000030540190000004003300210000000c001100210000000000131019f00000d8a011001c7352f352a0000040f0000000c0a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000122c0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000012240000413d000000000750004c0000123c0000613d0000000506600210000000000761034f0000000c0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000012dd0000613d0000001f01400039000000600210018f0000000c010000290000000001120019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d0000000c010000290000000001010433000c00000001001d00000d4f0110009c00000d920000213d000000000200041100000004010000290000000c030000290000000b04000029352f34210000040f0000000801000029000000060200002900000000012100190000000201100367000000000101043b000b00000001001d00000d4f0110009c00000d920000213d000000400200043d00000d9b010000410000000000120435000800000002001d00000004012000390000000502000029000000000021043500000000010004140000000b02000029000000040220008c000015410000c13d0000000103000031000000200130008c00000020040000390000000004034019000015740000013d00000d8e010000410000000c02000029000000000012043500000004012000390000000b02000029000000000021043500000000010004140000000d02000029000a00000002001d0000000802000029000000040220008c0000135b0000c13d0000000103000031000013f50000013d00000d86011001c7000080090200003900000004040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d033001970000000305000029000000000453004b00000000050340190000001f0450018f00000005055002720000000609000029000012960000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b0000128e0000413d000000000640004c000012a60000613d0000000505500210000000000651034f000000060700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f00030000000103550000000102200190000013030000613d000000060100002900000d7f0110009c0000101b0000213d0000000601000029000000400010043f0000000301000029000000000110004c000013550000c13d0000000a01000029000000020110008c000009840000413d00000d5501000041000000000010043900000005010000290000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f000000010220019000000d920000613d0000000c0200002900000044022000390000000202200367000000000202043b00000d4f0320009c00000d920000213d000000000301043b000000400500043d00000d89010000410000000000150435000000240450003900000000010004140000000000240435000c00000005001d00000004025000390000000404000029000000000042043500000d4f02300197000000040320008c0000159a0000c13d0000000103000031000000200130008c00000020040000390000000004034019000015cc0000013d000000400200043d0000001f0430018f0000000503300272000012ea0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000012e20000413d000000000540004c000012f90000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000003020000290000000002230019000000000232004b00000d920000213d0000000302000029000000000221034f000000400100043d0000001f0430018f0000000503300272000013160000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b0000130e0000413d000000000540004c000013250000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0340018f00000005044002720000133c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000013340000413d000000000530004c0000134b0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000d4d01000041000000030300002900000d4d0230009c000000000103401900000d88211000d1000035310001043000000d4d020000410000000c0400002900000d4d0340009c0000000003020019000000000304401900000d4d0410009c0000000001028019000000c0011002100000004002300210000000000112019f0000000a02000029000000000220004c000013c80000c13d00000d52011001c70000000802000029352f35250000040f000013ce0000013d00000005022002100000000603000029000000000232001900000000020204330000000b03000029000000000232004b0000076d0000413d0000000001010433000b00000001001d00000d830100004100000000001004390000000301000029000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000110004c00000ce90000613d000000400200043d00000d8501000041000500000002001d000000000012043500000000010004140000000d02000029000400000002001d0000000302000029000000040220008c0000176f0000613d00000d4d0200004100000d4d0310009c0000000001028019000000050400002900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f0000000b02000029000000000220004c000017420000c13d00000d87011001c70000000302000029352f35250000040f000017480000013d0000000c020000290000004402200039000000000121034f000000000301043b00000d4f0130009c00000d920000213d00000008010000290000000002040019000a00000002001d352f2ec60000040f000c00000001001d0000000b01000029352f20a00000040f000000000401043300000000020004110000000a010000290000000c03000029352f34210000040f00000008010000290000000c020000290000000b03000029000000070400002900000009050000290000000606000029352f2c800000040f000000400100043d000c00000001001d0000000b02000029352f1ff00000040f0000000c04000029000000000141004900000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c000000000204401900000040022002100000006001100210000000000121019f000035300001042e00000d8f011001c700008009020000390000000a0300002900000008040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d03300197000000200430008c000000200500003900000000050340190000001f0450018f00000005055002720000000c09000029000013e10000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000013d90000413d000000000640004c000013f10000613d0000000505500210000000000651034f0000000c0700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f00030000000103550000000102200190000014190000613d000000200130008c000000200100003900000000010340190000001f01100039000000600110018f0000000c02000029000000000121001900000d7f0210009c0000101b0000213d000000400010043f000000200130008c00000d920000413d0000000c010000290000000001010433000c00000001001d00000000010004160000000902000029000000000121004b000019e40000a13d00000000020004160000000901000029000000000112004b00000ca30000413d000000400300043d00000d8d0130009c0000101b0000213d0000002001300039000000400010043f000000000003043500000000030004140000000704000029000000040440008c000017ea0000c13d00000001020000390000000101000031000019b50000013d0000000a020000290000000002230019000000000232004b00000d920000213d0000000a02000029000000000221034f000000400100043d0000001f0430018f00000005033002720000142c0000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b000014240000413d000000000540004c0000143b0000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d4d0300004100000d4d0410009c00000000010380190000000c0500002900000d4d0450009c00000000030540190000004003300210000000c001100210000000000131019f00000d8a011001c7352f352a0000040f0000000c0a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000014630000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000145b0000413d000000000750004c000014730000613d0000000506600210000000000761034f0000000c0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000151b0000613d0000001f01400039000000600210018f0000000c010000290000000001120019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d0000000c010000290000000001010433000000000301001900000d4f0110009c00000d920000213d00000000020004110000000301000029000c00000003001d0000000b04000029352f34210000040f0000000004000410000b00000004001d0000000c0100002900000006020000290000000903000029352f27d30000040f00000d9b01000041000000400200043d0000000000120435000c00000002001d00000004012000390000000b02000029000000000021043500000000010004140000000802000029000000040220008c0000161c0000c13d0000000103000031000000200130008c000000200400003900000000040340190000164f0000013d00000d8f011001c70000800902000039000000080300002900000006040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d033001970000000805000029000000000453004b00000000050340190000001f0450018f00000005055002720000000909000029000014be0000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000014b60000413d000000000640004c000014ce0000613d0000000505500210000000000651034f000000090700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f00030000000103550000000102200190000014e90000613d000000090100002900000d7f0110009c0000101b0000213d0000000901000029000000400010043f0000000801000029000000000110004c000015150000c13d0000000a010000290000000b02000029352f34b30000040f000000400100043d00000020021000390000000b0300002900000000003204350000000c02000029000000000021043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d99011001c7000035300001042e00000008020000290000000002230019000000000232004b00000d920000213d0000000802000029000000000221034f000000400100043d0000001f0430018f0000000503300272000014fc0000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b000014f40000413d000000000540004c0000150b0000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d4d01000041000000080300002900000d4d0230009c000000000103401900000d88211000d10000353100010430000000400200043d0000001f0430018f0000000503300272000015280000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000015200000413d000000000540004c000015370000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000d4d0200004100000d4d0310009c0000000001028019000000080400002900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f00000d52011001c70000000b02000029352f352a0000040f000000080a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000015600000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000015580000413d000000000750004c000015700000613d0000000506600210000000000761034f000000080800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000015f10000613d0000001f01400039000000600210018f00000008010000290000000001120019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d00000008010000290000000001010433000800000001001d0000000c01000029000000070200002900000009030000290000000504000029352f27d30000040f00000d9b01000041000000400200043d0000000000120435000c00000002001d00000004012000390000000502000029000000000021043500000000010004140000000b02000029000000040220008c0000169a0000c13d0000000103000031000000200130008c00000020040000390000000004034019000016cd0000013d00000d4d0300004100000d4d0410009c00000000010380190000000c0500002900000d4d0450009c00000000030540190000004003300210000000c001100210000000000131019f00000d8a011001c7352f352a0000040f0000000c0a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000015b80000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000015b00000413d000000000750004c000015c80000613d0000000506600210000000000761034f0000000c0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000016740000613d0000001f01400039000000600110018f0000000c020000290000000002210019000000000112004b00000000010000190000000101004039000600000002001d00000d7f0220009c0000101b0000213d00000001011001900000101b0000c13d0000000601000029000000400010043f000000200130008c00000d920000413d0000000c010000290000000001010433000500000001001d00000d4f0110009c00000d920000213d00000d8b0100004100000006050000290000000000150435000000240250003900000000010004140000000d03000029000000000400041600000000004204350000000402500039000000050400002900000000004204350000000402000029000000040220008c00001a730000c13d000000010300003100001b2b0000013d0000000d020000290000000004230019000000000434004b00000d920000213d000000000221034f000000400100043d0000001f0430018f0000000503300272000016030000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b000015fb0000413d000000000540004c000016120000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d4d0200004100000d4d0310009c00000000010280190000000c0400002900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f00000d52011001c70000000802000029352f352a0000040f0000000c0a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000163b0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000016330000413d000000000750004c0000164b0000613d0000000506600210000000000761034f0000000c0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000017fc0000613d0000001f01400039000000600210018f0000000c010000290000000001120019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200230008c00000d920000413d0000000c0200002900000000030204330000000a02000029000c00000003001d000000000223004b00001a820000813d000000440210003900000da103000041000000000032043500000024021000390000001a03000039000000000032043500000d9202000041000000000021043500000004021000390000000403000029000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c70000353100010430000000400200043d0000001f0430018f0000000503300272000016810000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000016790000413d000000000540004c000016900000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000d4d0200004100000d4d0310009c00000000010280190000000c0400002900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f00000d52011001c70000000b02000029352f352a0000040f0000000c0a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000016b90000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000016b10000413d000000000750004c000016c90000613d0000000506600210000000000761034f0000000c0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000018330000613d0000001f01400039000000600210018f0000000c010000290000000001120019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d0000000c0100002900000000010104330000000802000029000000000221004b00000ca30000413d000000080200002900000000012100490000000a02000029000000000121004b00000000010000190000000101008039352f27a90000040f00000d4d010000410000000d0200002900000d4d0320009c0000000002018019000000400300043d00000d4d0430009c000000000103401900000040011002100000006002200210000000000112019f000035300001042e00000d86011001c70000800902000039000000050300002900000003040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d033001970000000205000029000000000453004b00000000050340190000001f0450018f000000050550027200000004090000290000170b0000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000017030000413d000000000640004c0000171b0000613d0000000505500210000000000651034f000000040700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f00030000000103550000000102200190000017920000613d000000040100002900000d7f0110009c0000101b0000213d0000000401000029000000400010043f0000000201000029000000000110004c000018270000c13d0000000a01000029000000020110008c000009840000413d0000000c0100002900000044011000390000000201100367000000000201043b00000d4f0120009c00000d920000213d00000d890100004100000004040000290000000000140435000000240340003900000000010004140000000000230435000000040240003900000003030000290000000000320435000000080200002900000d4f02200197000000040320008c00001b830000c13d0000000103000031000000200130008c0000002004000039000000000403401900001bb50000013d00000d86011001c700008009020000390000000b0300002900000003040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d033001970000000405000029000000000453004b00000000050340190000001f0450018f000000050550027200000005090000290000175b0000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000017530000413d000000000640004c0000176b0000613d0000000505500210000000000651034f000000050700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f00030000000103550000000102200190000017be0000613d000000050100002900000d7f0110009c0000101b0000213d0000000501000029000000400010043f0000000401000029000000000110004c0000182d0000c13d0000000a01000029000000020110008c000009840000413d0000000c0100002900000044011000390000000201100367000000000201043b00000d4f0120009c00000d920000213d00000d890100004100000005040000290000000000140435000000240340003900000000010004140000000000230435000000040240003900000003030000290000000000320435000000080200002900000d4f02200197000000040320008c00001bd60000c13d0000000103000031000000200130008c0000002004000039000000000403401900001c080000013d00000002020000290000000002230019000000000232004b00000d920000213d0000000202000029000000000221034f000000400100043d0000001f0430018f0000000503300272000017a50000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b0000179d0000413d000000000540004c000017b40000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000004020000290000000002230019000000000232004b00000d920000213d0000000402000029000000000221034f000000400100043d0000001f0430018f0000000503300272000017d10000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b000017c90000413d000000000540004c000017e00000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d4d0400004100000d4d0530009c000000000304801900000d4d0510009c00000000010480190000004001100210000000c003300210000000000113019f0000000903000029000000000332004b000019aa0000c13d0000000702000029352f35250000040f0003000000010355000000600110027000010d4d0010019d00000d4d01100197000019b50000013d0000000d020000290000000004230019000000000434004b00000d920000213d000000000221034f000000400100043d0000001f0430018f00000005033002720000180e0000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b000018060000413d000000000540004c0000181d0000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d4d01000041000000020300002900000d4d0230009c000000000103401900000d88211000d1000035310001043000000d4d01000041000000040300002900000d4d0230009c000000000103401900000d88211000d100003531000104300000000d020000290000000004230019000000000434004b00000d920000213d000000000221034f000000400100043d0000001f0430018f0000000503300272000018450000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b0000183d0000413d000000000540004c000018540000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d4d0300004100000d4d0410009c00000000010380190000000c0500002900000d4d0450009c00000000030540190000004003300210000000c001100210000000000131019f00000d8a011001c7352f352a0000040f0000000c0a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000187c0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000018740000413d000000000750004c0000188c0000613d0000000506600210000000000761034f0000000c0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000001ab30000613d0000001f01400039000000600210018f0000000c010000290000000001120019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d0000000c010000290000000001010433000000000301001900000d4f0110009c00000d920000213d0000000b010000290000000001010433000000000110004c000009840000613d0000000401000029000000000401043300000000020004110000000a01000029000c00000003001d352f34210000040f000000000600041000000007010000290000000c020000290000000b0300002900000006040000290000000905000029352f2c800000040f0000000b010000290000000001010433000000000210004c00000ca30000613d00000005011002100000000b0200002900000000012100190000000001010433000c00000001001d00000d830100004100000000001004390000000801000029000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000110004c00000d920000613d000000400200043d00000d98010000410000000000120435000a00000002001d00000004012000390000000c02000029000000000021043500000000010004140000000802000029000000040220008c000018ec0000613d00000d4d0200004100000d4d0310009c00000000010280190000000a0400002900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f00000d52011001c70000000802000029352f35250000040f0000000003010019000000600330027000010d4d0030019d00000d4d043001970003000000010355000000010220019000001eb50000613d0000000a0100002900000d7f0110009c0000101b0000213d0000000a01000029000000400010043f0000000b010000290000000001010433000000000210004c00000ca30000613d000000010210008a0000000b01000029352f20aa0000040f00000000020104330000000501000029352f34b30000040f000000400100043d000c00000001001d0000000b02000029352f1ff00000040f0000000c04000029000000000141004900000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c000000000204401900000040022002100000006001100210000000000121019f000035300001042e00000d4d0300004100000d4d0410009c00000000010380190000000c0500002900000d4d0450009c00000000030540190000004003300210000000c001100210000000000131019f00000d8a011001c7352f352a0000040f0000000c0a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000019280000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000019200000413d000000000750004c000019380000613d0000000506600210000000000761034f0000000c0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000001ad90000613d0000001f01400039000000600210018f0000000c010000290000000001120019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d0000000c010000290000000001010433000000000301001900000d4f0110009c00000d920000213d00000000020004110000000a01000029000c00000003001d0000000404000029352f34210000040f000000000600041000000007010000290000000c020000290000000b0300002900000006040000290000000905000029352f2c800000040f0000000b010000290000000001010433000000000210004c00000ca30000613d00000005011002100000000b0200002900000000012100190000000001010433000c00000001001d00000d830100004100000000001004390000000801000029000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000110004c00000d920000613d000000400200043d00000d98010000410000000000120435000a00000002001d00000004012000390000000c02000029000000000021043500000000010004140000000802000029000000040220008c000019930000613d00000d4d0200004100000d4d0310009c00000000010280190000000a0400002900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f00000d52011001c70000000802000029352f35250000040f0000000003010019000000600330027000010d4d0030019d00000d4d043001970003000000010355000000010220019000001e8f0000613d0000000a0100002900000d7f0110009c0000101b0000213d0000000a01000029000000400010043f00000005010000290000000c02000029352f34b30000040f000000400100043d000c00000001001d0000000b02000029352f1ff00000040f0000000c04000029000000000141004900000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c000000000204401900000040022002100000006001100210000000000121019f000035300001042e0000000903000029000000000332004900000d53011001c7000080090200003900000007040000290000000005000019352f35250000040f0003000000010355000000600110027000010d4d0010019d00000d4d01100197000000000310004c000019e20000613d0000003f03100039000000200400008a000000000443016f000000400300043d0000000004430019000000000534004b0000000005000019000000010500403900000d7f0640009c0000101b0000213d00000001055001900000101b0000c13d000000400040043f0000000001130436000000030300036700000001050000310000001f0450018f0000000505500272000019d30000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000019cb0000413d000000000640004c000019e20000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000010120019000001f8e0000613d0000000b010000290000000a0200002900000000001204350000000d04000029000000200040043f00000d4d01000041000000000200041400000d4d0320009c000000000201801900000d4d0340009c000a00000004001d00000000010440190000004001100210000000c002200210000000000121019f00000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b00000008020000290000000000200435000000200010043f00000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000101041a000000ff0110019000001a640000c13d0000000b010000290000000a0200002900000000001204350000000d04000029000000200040043f00000d4d01000041000000000200041400000d4d0320009c000000000201801900000d4d0340009c000a00000004001d00000000010440190000004001100210000000c002200210000000000121019f00000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b00000008020000290000000000200435000000200010043f00000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000201041a000001000300008a000000000232016f00000001022001bf000000000021041b0000000b010000290000000a0200002900000000001204350000000101000039000000200010043f00000d4d010000410000000d02000029000000000300041400000d4d0430009c000000000301801900000d4d0420009c00000000010240190000004001100210000000c002300210000000000121019f00000d94011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000201041a000b00000002001d00000d7f0220009c0000101b0000213d0000000b030000290000000102300039000000000021041b000000000201041a000000000232004b000009840000a13d000000000010043500000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d95011001c70000801002000039352f352a0000040f000000010220019000000d920000613d000000000101043b0000000b020000290000000001210019000000000201041a00000d96022001970000000803000029000000000232019f000000000021041b000000400100043d00000040021000390000000c0300002900000000003204350000002002100039000000090300002900000000003204350000000602000029000000000021043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d97011001c7000035300001042e00000d4d0200004100000d4d0410009c0000000001028019000000060500002900000d4d0450009c00000000020540190000004002200210000000c001100210000000000121019f000000000230004c00001aff0000c13d00000d8a011001c70000000402000029352f35250000040f00001b040000013d00000d830100004100000000001004390000000801000029000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f000000010220019000000d920000613d000000000101043b000000000110004c00000ce90000613d000000400200043d00000d98010000410000000000120435000b00000002001d00000004012000390000000c02000029000000000021043500000000010004140000000d02000029000a00000002001d0000000802000029000000040220008c00001ca10000613d00000d4d0200004100000d4d0310009c00000000010280190000000b0400002900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f0000000a02000029000000000220004c00001c740000c13d00000d52011001c70000000802000029352f35250000040f0000000003010019000000600330027000000d4d0330019700001c9d0000013d000000400200043d0000001f0430018f000000050330027200001ac00000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00001ab80000413d000000000540004c00001acf0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f000000050330027200001ae60000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00001ade0000413d000000000540004c00001af50000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000d8c011001c7000080090200003900000004040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d03300197000000200430008c000000200500003900000000050340190000001f0450018f0000000505500272000000060900002900001b170000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b00001b0f0000413d000000000640004c00001b270000613d0000000505500210000000000651034f000000060700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f0003000000010355000000010220019000001b580000613d000000200130008c000000200100003900000000010340190000001f01100039000000600110018f00000006020000290000000001210019000c00000001001d00000d7f0110009c0000101b0000213d0000000c01000029000000400010043f000000200130008c00000d920000413d00000006010000290000000001010433000000000210004c0000000002000019000000010200c039000000000221004b00000d920000c13d000000000110004c0000118f0000613d0000000801000029000000200110008a0000000201100367000000000101043b000800000001001d00000d4f0110009c00000d920000213d00000d9b010000410000000c02000029000000000012043500000004012000390000000702000029000000000021043500000000010004140000000802000029000000040220008c00001d030000c13d0000000101000031000000200210008c0000002003000039000000000301401900001d370000013d0000000d020000290000000004230019000000000434004b00000d920000213d000000000221034f000000400100043d0000001f0430018f000000050330027200001b6a0000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b00001b620000413d000000000540004c00001b790000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d4d0300004100000d4d0410009c0000000001038019000000040500002900000d4d0450009c00000000030540190000004003300210000000c001100210000000000131019f00000d8a011001c7352f352a0000040f000000040a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200001ba10000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00001b990000413d000000000750004c00001bb10000613d0000000506600210000000000761034f000000040800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000001c280000613d0000001f01400039000000600110018f00000004020000290000000001210019000c00000001001d00000d7f0110009c0000101b0000213d0000000c01000029000000400010043f000000200130008c00000d920000413d00000004010000290000000001010433000400000001001d00000d4f0110009c00000d920000213d00000d8b010000410000000c040000290000000000140435000000240240003900000000010004140000000d03000029000200000003001d000000050300002900000000003204350000000402400039000000040300002900000000003204350000000302000029000000040220008c00001ce40000c13d000000010300003100001d850000013d00000d4d0300004100000d4d0410009c0000000001038019000000050500002900000d4d0450009c00000000030540190000004003300210000000c001100210000000000131019f00000d8a011001c7352f352a0000040f000000050a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200001bf40000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00001bec0000413d000000000750004c00001c040000613d0000000506600210000000000761034f000000050800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000001c4e0000613d0000001f01400039000000600110018f00000005020000290000000001210019000c00000001001d00000d7f0110009c0000101b0000213d0000000c01000029000000400010043f000000200130008c00000d920000413d00000005010000290000000001010433000500000001001d00000d4f0110009c00000d920000213d00000d8b010000410000000c050000290000000000150435000000240250003900000000010004140000000d030000290000000b0400002900000000004204350000000402500039000000050400002900000000004204350000000302000029000000040220008c00001cf40000c13d000000010300003100001de20000013d000000400200043d0000001f0430018f000000050330027200001c350000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00001c2d0000413d000000000540004c00001c440000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f000000050330027200001c5b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00001c530000413d000000000540004c00001c6a0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000d8f011001c700008009020000390000000a0300002900000008040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d033001970000000a05000029000000000453004b00000000050340190000001f0450018f00000005055002720000000b0900002900001c8d0000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b00001c850000413d000000000640004c00001c9d0000613d0000000505500210000000000651034f0000000b0700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f0003000000010355000000010220019000001cb20000613d0000000b0100002900000d7f0110009c0000101b0000213d0000000b01000029000000400010043f0000000a01000029000000000110004c00001cde0000c13d00000005010000290000000c02000029352f34b30000040f00000d4d01000041000000400200043d00000d4d0320009c00000000010240190000004001100210000035300001042e0000000a020000290000000002230019000000000232004b00000d920000213d0000000a02000029000000000221034f000000400100043d0000001f0430018f000000050330027200001cc50000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b00001cbd0000413d000000000540004c00001cd40000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d4d010000410000000a0300002900000d4d0230009c000000000103401900000d88211000d1000035310001043000000d4d0200004100000d4d0310009c00000000010280190000000c0400002900000d4d0340009c00000000020440190000004002200210000000c001100210000000000121019f0000000202000029000000000220004c00001d580000c13d00000d8a011001c70000000302000029352f35250000040f00001d5e0000013d00000d4d0200004100000d4d0410009c00000000010280190000000c0500002900000d4d0450009c00000000020540190000004002200210000000c001100210000000000121019f000000000230004c00001db60000c13d00000d8a011001c70000000302000029352f35250000040f00001dbb0000013d00000d4d020000410000000c0400002900000d4d0340009c0000000003020019000000000304401900000d4d0410009c0000000001028019000000c0011002100000004002300210000000000112019f00000d52011001c70000000802000029352f352a0000040f0000000003010019000000600330027000000d4d04300197000000200340008c000000200300003900000000030440190000001f0530018f000000050630027200001d230000613d000000000700001900000005087002100000000c090000290000000009890019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00001d1a0000413d000000000750004c00001d330000613d0000000506600210000000000761034f0000000c0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000004001f0003000000010355000000010220019000001e640000613d0000001f01300039000000600110018f0000000c02000029000000000121001900000d7f0210009c0000101b0000213d000000400010043f000000200130008c00000d920000413d0000000c010000290000000001010433000600000001001d000000050100002900000009020000290000000a030000290000000704000029352f27d30000040f00000d9b01000041000000400200043d0000000000120435000c00000002001d00000004012000390000000702000029000000000021043500000000010004140000000802000029000000040220008c00001edb0000c13d0000000101000031000000200210008c0000002003000039000000000301401900001f0f0000013d00000d8c011001c70000800902000039000000020300002900000003040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d03300197000000200430008c000000200500003900000000050340190000001f0450018f000000050550027200001d710000613d000000000600001900000005076002100000000c080000290000000008780019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b00001d680000413d000000000640004c00001d810000613d0000000505500210000000000651034f0000000c0700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f0003000000010355000000010220019000001e0d0000613d000000200130008c000000200100003900000000010340190000001f01100039000000600110018f0000000c02000029000000000121001900000d7f0210009c0000101b0000213d000000400010043f000000200130008c00000d920000413d0000000c010000290000000001010433000000000210004c0000000002000019000000010200c039000000000221004b00000d920000c13d000000000110004c0000118f0000613d000000080100002900000004020000290000000b0300002900000009040000290000000a050000290000000706000029352f2c800000040f00000000010004160000000502000029000000000121004b00001f7f0000a13d00000000020004160000000501000029000000000112004b00000ca30000413d000000400300043d00000d8d0130009c0000101b0000213d00000000040004110000002001300039000000400010043f00000000000304350000000003000414000000040540008c00001f5f0000c13d0000000102000039000000010100003100001f7b0000013d00000d8c011001c7000080090200003900000003040000290000000005000019352f35250000040f0000000003010019000000600330027000000d4d03300197000000200430008c000000200500003900000000050340190000001f0450018f000000050550027200001dce0000613d000000000600001900000005076002100000000c080000290000000008780019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b00001dc50000413d000000000640004c00001dde0000613d0000000505500210000000000651034f0000000c0700002900000000055700190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f0003000000010355000000010220019000001e390000613d000000200130008c000000200100003900000000010340190000001f01100039000000600110018f0000000c02000029000000000121001900000d7f0210009c0000101b0000213d000000400010043f000000200130008c00000d920000413d0000000c010000290000000001010433000000000210004c0000000002000019000000010200c039000000000221004b00000d920000c13d000000000110004c0000118f0000613d00000008010000290000000502000029000000060300002900000009040000290000000a050000290000000706000029352f2c800000040f000000400100043d000c00000001001d0000000602000029352f1ff00000040f0000000c04000029000000000141004900000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c000000000204401900000040022002100000006001100210000000000121019f000035300001042e00000002020000290000000002230019000000000232004b00000d920000213d0000000202000029000000000221034f000000400100043d0000001f0430018f000000050330027200001e200000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b00001e180000413d000000000540004c00001e2f0000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f00003531000104300000000d020000290000000004230019000000000434004b00000d920000213d000000000221034f000000400100043d0000001f0430018f000000050330027200001e4b0000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000635004b00001e430000413d000000000540004c00001e5a0000613d0000000503300210000000000232034f00000000033100190000000304400210000000000503043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f000000000023043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f00003531000104300000000d020000290000000003240019000000000343004b00000d920000213d000000000221034f000000400100043d0000001f0340018f000000050440027200001e760000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000645004b00001e6e0000413d000000000530004c00001e850000613d0000000504400210000000000242034f00000000044100190000000303300210000000000504043300000000053501cf000000000535022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000252019f000000000024043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0340018f000000050440027200001e9c0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00001e940000413d000000000530004c00001eab0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0340018f000000050440027200001ec20000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00001eba0000413d000000000530004c00001ed10000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000d4d020000410000000c0400002900000d4d0340009c0000000003020019000000000304401900000d4d0410009c0000000001028019000000c0011002100000004002300210000000000112019f00000d52011001c70000000802000029352f352a0000040f0000000003010019000000600330027000000d4d04300197000000200340008c000000200300003900000000030440190000001f0530018f000000050630027200001efb0000613d000000000700001900000005087002100000000c090000290000000009890019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00001ef20000413d000000000750004c00001f0b0000613d0000000506600210000000000761034f0000000c0800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000004001f0003000000010355000000010220019000001f340000613d0000001f01300039000000600210018f0000000c010000290000000001120019000000000221004b0000000002000019000000010200403900000d7f0410009c0000101b0000213d00000001022001900000101b0000c13d000000400010043f000000200130008c00000d920000413d0000000c0100002900000000010104330000000602000029000000000221004b00000ca30000413d000000060200002900000000012100490000000b02000029000000000121004b00000000010000190000000101008039352f27a90000040f00000d4d010000410000000d0200002900000d4d0320009c0000000002018019000000400300043d00000d4d0430009c000000000103401900000040011002100000006002200210000000000112019f000035300001042e0000000d020000290000000003240019000000000343004b00000d920000213d000000000221034f000000400100043d0000001f0340018f000000050440027200001f460000613d000000000500001900000005065002100000000007610019000000000662034f000000000606043b00000000006704350000000105500039000000000645004b00001f3e0000413d000000000530004c00001f550000613d0000000504400210000000000242034f00000000044100190000000303300210000000000504043300000000053501cf000000000535022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000252019f000000000024043500000d4d02000041000000010300003100000d4d0430009c000000000302801900000d4d0410009c000000000102801900000040011002100000006002300210000000000112019f000035310001043000000d4d0500004100000d4d0630009c000000000305801900000d4d0610009c00000000010580190000004001100210000000c003300210000000000113019f0000000503000029000000000332004b00001f710000c13d0000000002040019352f35250000040f0003000000010355000000600110027000010d4d0010019d00000d4d0110019700001f7b0000013d0000000503000029000000000332004900000d53011001c700008009020000390000000005000019352f35250000040f0003000000010355000000600110027000010d4d0010019d00000d4d01100197000000000310004c00001fa30000c13d000000010120019000001f8e0000613d000000400100043d000c00000001001d0000000b02000029352f1ff00000040f0000000c04000029000000000141004900000d4d0200004100000d4d0310009c000000000102801900000d4d0340009c000000000204401900000040022002100000006001100210000000000121019f000035300001042e000000400100043d000000640210003900000d90030000410000000000320435000000440210003900000d9103000041000000000032043500000024021000390000002303000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d93011001c700003531000104300000003f031000390000000604000029000000000443016f000000400300043d0000000004430019000000000534004b0000000005000019000000010500403900000d7f0640009c0000101b0000213d00000001055001900000101b0000c13d000000400040043f0000000001130436000000030300036700000001050000310000001f0450018f000000050550027200001fbf0000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00001fb70000413d000000000640004c00001f7d0000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500001f7d0000013d000000040110008a00000d4e02000041000000bf0310008c0000000003000019000000000302201900000d4e01100197000000000410004c000000000200801900000d4e0110009c00000000010300190000000001026019000000000110004c00001fee0000613d00000002060003670000000401600370000000000101043b00000d4f0210009c00001fee0000213d0000008402600370000000000502043b00000d4f0250009c00001fee0000213d0000002402600370000000000202043b0000004403600370000000000303043b0000006404600370000000000404043b000000a406600370000000000606043b000000000001042d0000000001000019000035310001043000000020030000390000000004310436000000000302043300000000003404350000004001100039000000000430004c00001ffe0000613d00000000040000190000002002200039000000000502043300000000015104360000000104400039000000000534004b00001ff80000413d000000000001042d000000040210008a00000d4e030000410000003f0420008c0000000004000019000000000403201900000d4e02200197000000000520004c000000000300801900000d4e0220009c00000000020400190000000002036019000000000220004c0000202e0000613d00000002030003670000000402300370000000000402043b0000002402300370000000000202043b00000d7f0520009c0000202e0000213d000000230520003900000d4e06000041000000000715004b0000000007000019000000000706801900000d4e0810019700000d4e05500197000000000985004b0000000006008019000000000585013f00000d4e0550009c00000000050700190000000005066019000000000550004c0000202e0000c13d0000000405200039000000000353034f000000000303043b00000d7f0530009c0000202e0000213d000000240220003900000005053002100000000005250019000000000115004b0000202e0000213d0000000001040019000000000001042d00000000010000190000353100010430000000040110008a00000d4e020000410000013f0310008c0000000003000019000000000302201900000d4e01100197000000000410004c000000000200801900000d4e0110009c00000000010300190000000001026019000000000110004c0000205e0000613d00000002090003670000000401900370000000000101043b00000d4f0210009c0000205e0000213d0000006402900370000000000402043b0000004402900370000000000302043b0000002402900370000000000202043b0000008405900370000000000505043b00000d4f0650009c0000205e0000213d000000a406900370000000000606043b000000c407900370000000000707043b000000000870004c0000000008000019000000010800c039000000000887004b0000205e0000c13d000000e408900370000000000808043b000000ff0a80008c0000205e0000213d000001240a9003700000010409900370000000000909043b000000000a0a043b000000000001042d0000000001000019000035310001043000000020030000390000000004310436000000000302043300000000003404350000004001100039000000000430004c0000206f0000613d00000000040000190000002002200039000000000502043300000d4f0550019700000000015104360000000104400039000000000534004b000020680000413d000000000001042d0001000000000002000000000301041a000100000002001d000000000223004b000020850000a13d000000000010043500000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d95011001c70000801002000039352f352a0000040f00000001022001900000208b0000613d000000000101043b000000010200002900000000012100190000000002000019000000000001042d00000d510100004100000000001004350000003201000039000000040010043f00000d52010000410000353100010430000000000100001900003531000104300000001f02200039000000200300008a000000000232016f0000000001120019000000000221004b0000000002000019000000010200403900000d7f0310009c0000209a0000213d00000001022001900000209a0000c13d000000400010043f000000000001042d00000d510100004100000000001004350000004101000039000000040010043f00000d520100004100003531000104300000000012010434000000000220004c000020a40000613d000000000001042d00000d510100004100000000001004350000003201000039000000040010043f00000d520100004100003531000104300000000003010433000000000323004b000020b10000a13d000000050220021000000000012100190000002001100039000000000001042d00000d510100004100000000001004350000003201000039000000040010043f00000d52010000410000353100010430000000000110004c000020ba0000613d000000000001042d000000400100043d000000440210003900000da403000041000000000032043500000024021000390000000703000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c700003531000104300009000000000002000500000006001d000400000005001d000900000004001d000800000003001d000600000002001d000700000001001d00000d5501000041000000000010043900000000010004120000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f00000009030000290000000102200190000022140000613d000000000201043b000000400c00043d00000d890100004100000000001c0435000000060100002900000d4f061001970000002404c0003900000000010004140000000000640435000000070400002900000d4f074001970000000404c00039000000000074043500000d4f05200197000000040250008c000020f80000c13d000000010a0000310000002001a0008c000000200400003900000000040a4019000021310000013d000600000007001d000700000006001d00000d4d0200004100000d4d0310009c000000000102801900000d4d03c0009c00000000020c40190000004002200210000000c001100210000000000121019f00000d8a011001c7000300000005001d000000000205001900020000000c001d352f352a0000040f000000020c0000290000000003010019000000600330027000000d4d0a3001970000002004a0008c000000200400003900000000040a40190000001f0540018f00000005064002720000211a0000613d0000000007000019000000050870021000000000098c0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000021120000413d000000000750004c000021290000613d0000000506600210000000000761034f00000000066c00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f000000000056043500010000000a001f000300000001035500000001022001900000000903000029000000070600002900000006070000290000000305000029000022230000613d0000001f01400039000000600110018f000000000bc1001900000000011b004b0000000001000019000000010100403900000d7f02b0009c0000221d0000213d00000001011001900000221d0000c13d0000004000b0043f0000002001a0008c000022140000413d00000000090c043300000d4f0190009c000022140000213d000000000190004c0000214d0000613d00000da50100004100000000081b04360000000001000414000000040290008c0000215b0000c13d000000010a0000310000004001a0008c000000400400003900000000040a4019000021960000013d00000da90100004100000000001b04350000002402b00039000000000100041400000000006204350000000402b000390000000000720435000000040250008c000021d60000c13d000000010a0000310000002001a0008c000000200400003900000000040a4019000022090000013d000100000008001d000600000007001d000700000006001d00000d4d0200004100000d4d0310009c000000000102801900000d4d03b0009c00000000020b40190000004002200210000000c001100210000000000121019f00000d87011001c7000200000009001d000000000209001900030000000b001d352f352a0000040f000000030b0000290000000003010019000000600330027000000d4d0a3001970000004004a0008c000000400400003900000000040a40190000001f0540018f00000005064002720000217e0000613d0000000007000019000000050870021000000000098b0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000021760000413d000000000750004c0000218d0000613d0000000506600210000000000761034f00000000066b00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f000000000056043500010000000a001f0003000000010355000000010220019000000009030000290000000706000029000000060700002900000002090000290000000108000029000022660000613d0000001f01400039000000e00110018f0000000001b1001900000d7f0210009c0000221d0000213d000000400010043f0000004002a0008c000022140000413d00000000050b043300000da60250009c000022140000213d000000000408043300000da60240009c000022140000213d000000000267004b000000000205001900000000020440190000000007040019000000000705401900000000042701a00000221a0000613d0000000808000029000000000480004c000022490000613d000000010400008a00000000658400d9000000000525004b0000225a0000413d000000000570004c000022600000613d00000000658200a900000000657500d9000000000635004b000022160000a13d000000000530004c000022490000613d00000000543400d9000000000474004b0000225a0000413d000000000420004c000022600000613d00000000453700a900000000242500d9000800000004001d0000000402000029000000000224004b0000221a0000813d000000440210003900000da803000041000000000032043500000024021000390000001503000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c7000035310001043000000d4d0200004100000d4d0310009c000000000102801900000d4d03b0009c00000000020b40190000004002200210000000c001100210000000000121019f00000d8a011001c7000000000205001900030000000b001d352f35250000040f000000030b0000290000000003010019000000600330027000000d4d0a3001970000002004a0008c000000200400003900000000040a40190000001f0540018f0000000506400272000021f50000613d0000000007000019000000050870021000000000098b0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000021ed0000413d000000000750004c000022040000613d0000000506600210000000000761034f00000000066b00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f000000000056043500010000000a001f0003000000010355000000010220019000000009030000290000228c0000613d0000001f01400039000000600110018f0000000001b1001900000d7f0210009c0000221d0000213d000000400010043f0000002001a0008c000022140000413d00000000090b043300000d4f0190009c0000221a0000a13d000000000100001900003531000104300000000502000029000000000225004b0000000003050019000022b20000413d00000000010900190000000802000029000000000001042d00000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000400200043d0000001f04a0018f0000000503a00272000022300000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000022280000413d000000000540004c0000223f0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000440210003900000d9c03000041000000000032043500000024021000390000001303000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c7000035310001043000000d510100004100000000001004350000001101000039000000040010043f00000d5201000041000035310001043000000d510100004100000000001004350000001201000039000000040010043f00000d52010000410000353100010430000000400200043d0000001f04a0018f0000000503a00272000022730000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000226b0000413d000000000540004c000022820000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f04a0018f0000000503a00272000022990000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000022910000413d000000000540004c000022a80000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000440210003900000da703000041000000000032043500000024021000390000001503000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c700003531000104300008000000000002000100000008001d000200000007001d000300000006001d000400000005001d000600000004001d000500000003001d000700000002001d000800000001001d00000d5501000041000000000010043900000000010004120000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f00000001022001900000237d0000613d000000000201043b000000400a00043d00000d890100004100000000001a0435000000070100002900000d4f031001970000002404a0003900000000010004140000000000340435000000080300002900000d4f033001970000000404a00039000000000034043500000d4f02200197000000040320008c000022f00000c13d0000000103000031000000200130008c00000020040000390000000004034019000023210000013d00000d4d0300004100000d4d0410009c000000000103801900000d4d04a0009c00000000030a40190000004003300210000000c001100210000000000131019f00000d8a011001c700080000000a001d352f352a0000040f000000080a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f00000005064002720000230e0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000023060000413d000000000750004c0000231d0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000023850000613d0000001f01400039000000600210018f0000000001a20019000000000221004b0000000002000019000000010200403900000d7f0410009c0000237f0000213d00000001022001900000237f0000c13d000000400010043f000000200130008c0000237d0000413d00000000040a043300000d4f0140009c0000237d0000213d00000d83010000410000000000100439000000040040044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039000800000004001d352f352a0000040f0000000805000029000000010300008a0000000504000029000000000440004c0000000604000029000000000304601900000001022001900000237d0000613d000000000101043b000000000110004c0000237d0000613d000000400600043d000000c40160003900000001020000290000000000210435000000a401600039000000020200002900000000002104350000000301000029000000ff0110018f000000840260003900000000001204350000006401600039000000040200002900000000002104350000004401600039000000000031043500000024016000390000000002000410000000000021043500000daa0100004100000000001604350000000401600039000000000200041100000000002104350000000001000414000000040250008c000023780000613d00000d4d0200004100000d4d0310009c000000000102801900000d4d0360009c00000000020640190000004002200210000000c001100210000000000121019f00000dab011001c70000000002050019000700000006001d352f35250000040f000000070600002900000008050000290000000003010019000000600330027000010d4d0030019d00000d4d0430019700030000000103550000000102200190000023ab0000613d00000d7f0160009c0000237f0000213d000000400060043f0000000001050019000000000001042d0000000001000019000035310001043000000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000400200043d0000001f0430018f0000000503300272000023920000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000238a0000413d000000000540004c000023a10000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0340018f0000000504400272000023b80000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000023b00000413d000000000530004c000023c70000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000a000000000002000900000006001d000800000005001d000300000004001d000400000003001d000500000002001d000a00000001001d00000d8001000041000000000010043900000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d81011001c70000800b02000039352f352a0000040f0000000a0300002900000001022001900000265d0000613d000000000101043b0000000902000029000000000121004b0000267a0000213d00000d550100004100000000001004390000000001000412000900000001001d00000004001004430000002001000039000200000001001d000000240010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f00000001022001900000265d0000613d000000000101043b000700000001001d00000d5501000041000000000010043900000009010000290000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f0000000a0600002900000001022001900000265d0000613d000000000201043b000000400b00043d00000d890100004100000000001b0435000000070100002900000d4f041001970000002403b000390000000001000414000900000004001d000000000043043500000d4f056001970000000403b00039000000000053043500000d4f02200197000000040320008c000600000005001d000024230000c13d0000000103000031000000200130008c00000020040000390000000004034019000024560000013d00000d4d0300004100000d4d0410009c000000000103801900000d4d04b0009c00000000030b40190000004003300210000000c001100210000000000131019f00000d8a011001c700070000000b001d352f352a0000040f000000070b0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000024410000613d0000000007000019000000050870021000000000098b0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000024390000413d000000000750004c000024500000613d0000000506600210000000000761034f00000000066b00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000000a060000290000000605000029000026c10000613d0000001f01400039000000600110018f000000000ab1001900000000011a004b0000000001000019000000010100403900000d7f02a0009c0000265f0000213d00000001011001900000265f0000c13d0000004000a0043f000000200130008c0000265d0000413d00000000070b043300000d4f0170009c0000265d0000213d0000004401a000390000000502000029000000000021043500000dac0100004100000000001a0435000000000100041100000d4f011001970000000402a0003900000000001204350000002401a0003900000000007104350000000001000414000000040270008c000024790000c13d0000000103000031000000200130008c00000020040000390000000004034019000024af0000013d00000d4d0200004100000d4d0310009c000000000102801900000d4d03a0009c00000000020a40190000004002200210000000c001100210000000000121019f00000d9d011001c7000700000007001d000000000207001900050000000a001d352f35250000040f000000050a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000024990000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000024910000413d000000000750004c000024a80000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000000a0600002900000006050000290000000707000029000026e70000613d0000001f01400039000000600110018f000000000ba1001900000d7f01b0009c0000265f0000213d0000004000b0043f000000200130008c0000265d0000413d00000000010a0433000000000210004c0000000002000019000000010200c039000000000121004b0000265d0000c13d000000000800041000000dad0100004100000000091b043600000d4f018001970000000402b0003900000000001204350000000001000414000000040270008c000024cb0000c13d0000000103000031000000400130008c00000040040000390000000004034019000025030000013d000100000009001d000500000008001d00000d4d0200004100000d4d0310009c000000000102801900000d4d03b0009c00000000020b40190000004002200210000000c001100210000000000121019f00000d52011001c7000000000207001900070000000b001d352f35250000040f000000070b0000290000000003010019000000600330027000000d4d03300197000000400430008c000000400400003900000000040340190000001f0540018f0000000506400272000024ec0000613d0000000007000019000000050870021000000000098b0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000024e40000413d000000000750004c000024fb0000613d0000000506600210000000000761034f00000000066b00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000000a060000290000000605000029000000050800002900000001090000290000270d0000613d0000001f01400039000000e00110018f000000000ab1001900000d7f01a0009c0000265f0000213d0000004000a0043f000000400130008c0000265d0000413d00000000010b043300000000020904330000000903000029000000000335004b0000000003010019000000000302401900000000010280190000000402000029000000000121004b0000000401a000390000268c0000413d0000000302000029000000000223004b0000269c0000413d000700000003001d00000d9b0200004100000000002a043500000000008104350000000001000414000000040250008c000025250000c13d0000000103000031000000200130008c00000020040000390000000004034019000025580000013d00000d4d0200004100000d4d0310009c000000000102801900000d4d03a0009c00000000020a40190000004002200210000000c001100210000000000121019f00000d52011001c7000000000205001900060000000a001d352f352a0000040f000000060a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000025440000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000253c0000413d000000000750004c000025530000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000000a06000029000027330000613d0000001f01400039000000600110018f0000000001a1001900000d7f0210009c0000265f0000213d000000400010043f000000200230008c0000265d0000413d00000000020a043300000044031000390000000000230435000000200210003900000d8b030000410000000000320435000000080300002900000d4f03300197000000240410003900000000003404350000004403000039000000000031043500000dae0310009c0000265f0000213d0000008003100039000000400030043f0000000003000414000000040460008c000025760000c13d000000010200003900000001030000310000258b0000013d00000d4d0400004100000d4d0520009c00000000020480190000004002200210000000000101043300000d4d0510009c00000000010480190000006001100210000000000121019f00000d4d0230009c00000000020400190000000002034019000000c002200210000000000121019f0000000002060019352f35250000040f000000010220018f0003000000010355000000600110027000010d4d0010019d00000d4d031001970000006001000039000000000430004c000025b90000613d0000003f01300039000000200400008a000000000441016f000000400100043d0000000004410019000000000514004b0000000005000019000000010500403900000d7f0640009c0000265f0000213d00000001055001900000265f0000c13d000000400040043f0000000003310436000000030400036700000001060000310000001f0560018f0000000506600272000025aa0000613d000000000700001900000005087002100000000009830019000000000884034f000000000808043b00000000008904350000000107700039000000000867004b000025a20000413d000000000750004c000025b90000613d0000000506600210000000000464034f00000000036300190000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000220004c000026650000613d0000000012010434000000000320004c000025d20000613d00000d4e03000041000000200420008c0000000004000019000000000403401900000d4e02200197000000000520004c000000000300a01900000d4e0220009c00000000020400190000000002036019000000000220004c0000265d0000c13d0000000001010433000000000210004c0000000002000019000000010200c039000000000221004b0000265d0000c13d000000000110004c000026650000613d00000d830100004100000000001004390000000901000029000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f00000001022001900000265d0000613d000000000101043b000000000110004c0000265d0000613d000000400600043d00000d9801000041000000000516043600000004016000390000000702000029000000000021043500000000010004140000000902000029000000040320008c000026030000613d00000d4d0400004100000d4d0310009c000000000104801900000d4d0360009c000000000304001900000000030640190000004003300210000000c001100210000000000131019f00000d52011001c7000a00000005001d000900000006001d352f35250000040f00000009060000290000000a050000290000000003010019000000600330027000010d4d0030019d00000d4d0430019700030000000103550000000102200190000027590000613d00000d7f0160009c0000265f0000213d000000400060043f00000d8d0160009c0000265f0000213d000000400050043f000000000006043500000000010004140000000802000029000000040220008c000026110000c13d000000010200003900000001010000310000262c0000013d00000d4d0200004100000d4d0310009c000000000102801900000d4d0350009c00000000020540190000004002200210000000c001100210000000000121019f0000000703000029000000000230004c000026260000613d00000d53011001c7000080090200003900000008040000290000000005000019352f35250000040f0003000000010355000000600110027000010d4d0010019d00000d4d011001970000262c0000013d0000000802000029352f35250000040f0003000000010355000000600110027000010d4d0010019d00000d4d01100197000000000310004c000026590000613d0000003f03100039000000200400008a000000000443016f000000400300043d0000000004430019000000000534004b0000000005000019000000010500403900000d7f0640009c0000265f0000213d00000001055001900000265f0000c13d000000400040043f0000000001130436000000030300036700000001050000310000001f0450018f00000005055002720000264a0000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000026420000413d000000000640004c000026590000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000000101200190000026ac0000613d0000000701000029000000000001042d0000000001000019000035310001043000000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000400100043d000000640210003900000daf030000410000000000320435000000440210003900000db003000041000000000032043500000024021000390000002d03000039000000000032043500000d9202000041000000000021043500000004021000390000000203000029000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d93011001c70000353100010430000000400100043d000000440210003900000da403000041000000000032043500000024021000390000000703000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c700003531000104300000004402a0003900000da80300004100000000003204350000002402a000390000001503000039000000000032043500000d920200004100000000002a04350000000202000029000000000021043500000d4d0100004100000d4d02a0009c00000000010a4019000000400110021000000d9d011001c700003531000104300000004402a0003900000da70300004100000000003204350000002402a000390000001503000039000000000032043500000d920200004100000000002a04350000000202000029000000000021043500000d4d0100004100000d4d02a0009c00000000010a4019000000400110021000000d9d011001c70000353100010430000000400100043d000000640210003900000d90030000410000000000320435000000440210003900000d9103000041000000000032043500000024021000390000002303000039000000000032043500000d9202000041000000000021043500000004021000390000000203000029000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d93011001c70000353100010430000000400200043d0000001f0430018f0000000503300272000026ce0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000026c60000413d000000000540004c000026dd0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f0000000503300272000026f40000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000026ec0000413d000000000540004c000027030000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f00000005033002720000271a0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000027120000413d000000000540004c000027290000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f0000000503300272000027400000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000027380000413d000000000540004c0000274f0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0340018f0000000504400272000027660000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000275e0000413d000000000530004c000027750000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000db10420009c000027a30000813d00000005052002100000003f04500039000000200600008a000000000664016f000000400400043d0000000006640019000000000746004b0000000007000019000000010700403900000d7f0860009c000027a30000213d0000000107700190000027a30000c13d000000400060043f00000000002404350000000002150019000000000332004b000027a10000213d000000000312004b0000279f0000a13d00000000030400190000000205100367000000000505043b00000d4f0650009c000027a10000213d000000200330003900000000005304350000002001100039000000000521004b000027960000413d0000000001040019000000000001042d0000000001000019000035310001043000000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000000110004c000027ac0000613d000000000001042d000000400100043d000000440210003900000da103000041000000000032043500000024021000390000001a03000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c70000353100010430000000000110004c000027c10000613d000000000001042d000000400100043d000000440210003900000da303000041000000000032043500000024021000390000000c03000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c700003531000104300010000000000002000600000004001d000b00000002001d000100000001001d000c00000003001d000000000130004c00002a470000613d0000000c01000029000000010110008c000500000001001d00002a440000613d0000000c01000029000000020110008a000400000001001d0000000007000019000027eb0000013d00000d7f0160009c00002a4d0000213d000000400060043f00000005010000290000000902000029000000000112004b000000000702001900002a440000813d0000000c01000029000000000117004b00002a530000813d00000005017002100000000b0200002900000000022100190000000201000367000000000221034f000000000502043b00000db20250009c00002a450000813d00000001037000390000000c02000029000000000223004b00002a530000813d000900000003001d00000005023002100000000b030000290000000002320019000000000121034f000000000101043b000f00000001001d00000d4f0110009c00002a450000213d000000000170004c0000000002000412001000000005001d000d00000007001d000800000002001d0000282b0000613d00000d550100004100000000001004390000000400200443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039352f352a0000040f0000000d070000290000001005000029000000010220019000002a450000613d000000000201043b000000400a00043d00000d890100004100000000001a04350000002403a0003900000000010004140000000f0400002900000000004304350000000403a00039000000000053043500000d4f02200197000000040320008c0000282e0000c13d0000000103000031000000200130008c00000020040000390000000004034019000028600000013d000000400900043d0000000101000029000028700000013d00000d4d0300004100000d4d0410009c000000000103801900000d4d04a0009c00000000030a40190000004003300210000000c001100210000000000131019f00000d8a011001c7000e0000000a001d352f352a0000040f0000000e0a0000290000000003010019000000600330027000000d4d03300197000000200430008c0000002004000039000000000403401900000005054002720000284b0000613d0000000006000019000000050760021000000000087a0019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000028430000413d0000001f064001900000285a0000613d0000000505500210000000000751034f00000000055a00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010220019000000010050000290000000d0700002900002acd0000613d0000001f01400039000000600110018f0000000009a10019000000000119004b0000000001000019000000010100403900000d7f0290009c00002a4d0000213d000000010110019000002a4d0000c13d000000400090043f000000200130008c00002a450000413d00000000010a043300000d4f0210009c00002a450000213d00000db3020000410000000008290436000000000200041400000d4f06100197000000040160008c000e00000006001d0000287c0000c13d0000000103000031000000600130008c00000060040000390000000004034019000028b20000013d000700000008001d00000d4d0100004100000d4d0320009c000000000201801900000d4d0390009c00000000010940190000004001100210000000c002200210000000000112019f00000d87011001c70000000002060019000a00000009001d352f352a0000040f0000000a090000290000000003010019000000600330027000000d4d03300197000000600430008c0000006004000039000000000403401900000005054002720000289b0000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000028930000413d0000001f06400190000028aa0000613d0000000505500210000000000751034f00000000055900190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010220019000000010050000290000000e060000290000000d07000029000000070800002900002aa70000613d0000001f01400039000000e00110018f000000000a91001900000000011a004b0000000001000019000000010100403900000d7f02a0009c00002a4d0000213d000000010110019000002a4d0000c13d0000004000a0043f000000600130008c00002a450000413d000000000109043300000da60210009c00002a450000213d000000000208043300000da60320009c00002a450000213d000000400390003900000000090304330000ffff0390008c00002a450000213d00000d9b0300004100000000003a04350000000403a0003900000000006304350000000f03000029000000000335004b00000000080100190000000008024019000000000b020019000000000b0140190000000001000414000000040250008c000a00000008001d000028dc0000c13d0000000103000031000000200130008c00000020040000390000000004034019000029150000013d000200000009001d00030000000b001d00000d4d0200004100000d4d0310009c000000000102801900000d4d03a0009c00000000020a40190000004002200210000000c001100210000000000121019f00000d52011001c7000000000205001900070000000a001d352f352a0000040f000000070a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000000505400272000028fc0000613d0000000006000019000000050760021000000000087a0019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000028f40000413d0000001f064001900000290b0000613d0000000505500210000000000751034f00000000055a00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010220019000000010050000290000000e060000290000000d070000290000000a08000029000000030b000029000000020900002900002a810000613d0000001f01400039000000600110018f0000000001a1001900000d7f0210009c00002a4d0000213d000000400010043f000000200230008c00002a450000413d00000000020a04330000000003b2004b00002a470000413d0000000003b2004b00002a590000613d0000000003b0004c00002a6a0000613d000000000380004c00002a6a0000613d000027100190008c00002a470000213d0000000002b20049000000010100008a00000000342100d90000271003900089000000000434004b00002a470000413d00000000292300aa000029330000613d00000000219100d9000000000181004b00002a470000413d0000271021b000c9000000000a19001900000000019a004b00000000010000190000000101004039000000010110019000002a470000c13d0000000001a0004c00002a7b0000613d0000000401000029000000000117004b0000000602000029000029b90000813d00000d5501000041000000000010043900000008010000290000000400100443000000240000044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d82011001c70000800502000039000800000009001d00070000000a001d352f352a0000040f000000070a00002900000008090000290000000a080000290000000d030000290000000e060000290000001005000029000000010220019000002a450000613d0000000202300039000000000101043b0000000c03000029000000000332004b00002a530000813d00000005022002100000000b0300002900000000023200190000000202200367000000000202043b00000d4f0320009c00002a450000213d000000400b00043d00000d890300004100000000003b04350000002404b00039000000000300041400000000002404350000000402b000390000000f04000029000000000042043500000d4f02100197000000040120008c000029740000c13d0000000103000031000000200130008c00000020040000390000000004034019000029a90000013d00000d4d0100004100000d4d0430009c000000000301801900000d4d04b0009c00000000010b40190000004001100210000000c003300210000000000113019f00000d8a011001c7000d0000000b001d352f352a0000040f0000000d0b0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000000505400272000029910000613d0000000006000019000000050760021000000000087b0019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000029890000413d0000001f06400190000029a00000613d0000000505500210000000000751034f00000000055b00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010220019000000010050000290000000e060000290000000a080000290000000809000029000000070a00002900002af30000613d0000001f01400039000000600210018f0000000001b20019000000000221004b0000000002000019000000010200403900000d7f0410009c00002a4d0000213d000000010220019000002a4d0000c13d000000400010043f000000200130008c00002a450000413d00000000020b043300000d4f0120009c00002a450000213d000d00000002001d00000000218900a90000000012a100d9000a00000002001d00000d83010000410000000000100439000000040060044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f0000000f030000290000001004000029000000000334004b000000010220018f000029f70000813d000000000220004c0000000e020000290000000d0300002900002a450000613d000000000101043b000000000110004c00002a450000613d000000400600043d00000db501000041000000000016043500000d4f0430019700000024036000390000000001000414000000000043043500000004036000390000000a040000290000000000430435000000040320008c000029f40000613d00000d4d0500004100000d4d0360009c0000000003050019000000000306401900000d4d0410009c0000000001058019000000c0011002100000004003300210000000000113019f00000d8a011001c7001000000006001d352f35250000040f00000010060000290000000003010019000000600330027000010d4d0030019d00000d4d043001970003000000010355000000010220019000002b190000613d00000d7f0160009c000027e50000a13d00002a4d0000013d000000000220004c0000000e020000290000000d0300002900002a450000613d000000000101043b000000000110004c00002a450000613d000000400600043d00000db401000041000000000016043500000d4f0430019700000024036000390000000001000414000000000043043500000004036000390000000a040000290000000000430435000000040320008c000027e30000613d00000d4d0500004100000d4d0360009c0000000003050019000000000306401900000d4d0410009c0000000001058019000000c0011002100000004003300210000000000113019f00000d8a011001c7001000000006001d352f35250000040f00000010060000290000000003010019000000600330027000010d4d0030019d00000d4d0430019700030000000103550000000102200190000027e30000c13d000000400200043d0000001f0340018f000000050440027200002a2b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00002a230000413d000000000530004c00002a3a0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000000001042d0000000001000019000035310001043000000d510100004100000000001004350000001101000039000000040010043f00000d5201000041000035310001043000000d510100004100000000001004350000004101000039000000040010043f00000d5201000041000035310001043000000d510100004100000000001004350000003201000039000000040010043f00000d52010000410000353100010430000000440210003900000db703000041000000000032043500000024021000390000001903000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c70000353100010430000000440210003900000db603000041000000000032043500000024021000390000001603000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c7000035310001043000000d510100004100000000001004350000001201000039000000040010043f00000d52010000410000353100010430000000400200043d0000001f0430018f000000050330027200002a8e0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00002a860000413d000000000540004c00002a9d0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f000000050330027200002ab40000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00002aac0000413d000000000540004c00002ac30000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f000000050330027200002ada0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00002ad20000413d000000000540004c00002ae90000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f000000050330027200002b000000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00002af80000413d000000000540004c00002b0f0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0340018f000000050440027200002b260000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00002b1e0000413d000000000530004c00002b350000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000000310004c00002b450000613d000000010300008a00000000431300d9000000000323004b00002b470000413d00000000211200a9000000000001042d00000d510100004100000000001004350000001101000039000000040010043f00000d520100004100003531000104300007000000000002000400000006001d000700000005001d000500000003001d000600000002001d000000400b00043d0000004402b00039000000000042043500000dac0200004100000000002b0435000000000200041100000d4f022001970000000403b00039000000000023043500000d4f051001970000002401b0003900000000005104350000000001000414000000040250008c00002b660000c13d0000000103000031000000200130008c0000002004000039000000000403401900002b9c0000013d000200000007001d00000d4d0200004100000d4d0310009c000000000102801900000d4d03b0009c00000000020b40190000004002200210000000c001100210000000000121019f00000d9d011001c7000300000005001d000000000205001900010000000b001d352f35250000040f000000010b0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200002b870000613d0000000007000019000000050870021000000000098b0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00002b7f0000413d000000000750004c00002b960000613d0000000506600210000000000761034f00000000066b00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000000305000029000000020700002900002c340000613d0000001f01400039000000600110018f000000000ab1001900000000011a004b0000000001000019000000010100403900000d7f02a0009c00002c0c0000213d000000010110019000002c0c0000c13d0000004000a0043f0000001f0130008c00002c0a0000a13d00000000010b0433000000000210004c0000000002000019000000010200c039000000000121004b00002c0a0000c13d00000dad0100004100000000061a043600000d4f017001970000000402a0003900000000001204350000000001000414000000040250008c00002bbc0000c13d0000000103000031000000400130008c0000004004000039000000000403401900002bf00000013d000200000006001d00000d4d0200004100000d4d0310009c000000000102801900000d4d03a0009c00000000020a40190000004002200210000000c001100210000000000121019f00000d52011001c7000000000205001900030000000a001d352f35250000040f000000030a0000290000000003010019000000600330027000000d4d03300197000000400430008c000000400400003900000000040340190000001f0540018f000000050640027200002bdc0000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00002bd40000413d000000000750004c00002beb0000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000000020600002900002c5a0000613d0000001f01400039000000e00110018f0000000004a1001900000d7f0140009c00002c0c0000213d000000400040043f000000400130008c00002c0a0000413d000000050100002900000d4f01100197000000060200002900000d4f0220019700000000030a04330000000005060433000000000112004b00000000020300190000000002054019000000000105001900000000010340190000000703000029000000000331004b00002c120000413d0000000403000029000000000332004b00002c230000413d000000000001042d0000000001000019000035310001043000000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000440140003900000da802000041000000000021043500000024014000390000001502000039000000000021043500000d9201000041000000000014043500000004014000390000002002000039000000000021043500000d4d0100004100000d4d0240009c0000000001044019000000400110021000000d9d011001c70000353100010430000000440140003900000da702000041000000000021043500000024014000390000001502000039000000000021043500000d9201000041000000000014043500000004014000390000002002000039000000000021043500000d4d0100004100000d4d0240009c0000000001044019000000400110021000000d9d011001c70000353100010430000000400200043d0000001f0430018f000000050330027200002c410000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00002c390000413d000000000540004c00002c500000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f000000050330027200002c670000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00002c5f0000413d000000000540004c00002c760000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000e000000000002000e00000004001d000600000003001d000900000002001d000000000250004c00002ec00000613d00000d4f01100197000200000001001d00000d4f01600197000100000001001d000000010150008c000500000001001d00002df90000613d000000020150008a000400000001001d00000006010000290000002001100039000300000001001d0000000006000019000800000005001d00002c9b0000013d00000db10170009c00002df30000813d000000400070043f0000000501000029000000000116004b00002df90000813d0000000001060019000000000251004b00002dfc0000813d00000005021002100000000e0300002900000000033200190000000202000367000000000332034f000000000303043b000b00000003001d00000db20330009c00002dfa0000813d0000000106100039000000000356004b00002dfc0000813d00000005036002100000000e040000290000000004430019000000000442034f000000000704043b00000d4f0470009c00002dfa0000213d00000006040000290000000004040433000000000464004b00002dfc0000a13d000000030400002900000000033400190000000003030433000a00000003001d0000000403000029000000000331004b000d00000006001d000c00000007001d00002cd80000813d0000000201100039000000000351004b00002dfc0000813d00000005011002100000000e030000290000000001310019000000000112034f000000000101043b00000d4f0210009c00002dfa0000213d000000400900043d00000d89020000410000000000290435000000240390003900000000040004140000000000130435000000040190003900000000007104350000000202000029000000040120008c00002d420000c13d0000000103000031000000200130008c0000002004000039000000000403401900002d730000013d00000d83010000410000000000100439000000090100002900000d4f01100197000700000001001d000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f0000000b030000290000000c04000029000000000343004b00002d170000813d000000010220019000000008050000290000000d0600002900002dfa0000613d000000000101043b000000000110004c00002dfa0000613d000000400700043d00000db5010000410000000000170435000000240270003900000000010004140000000103000029000000000032043500000004027000390000000a0300002900000000003204350000000702000029000000040320008c00002d140000613d00000d4d0400004100000d4d0310009c000000000104801900000d4d0370009c000000000304001900000000030740190000004003300210000000c001100210000000000131019f00000d8a011001c7000c00000007001d352f35250000040f0000000c070000290000000d0600002900000008050000290000000003010019000000600330027000010d4d0030019d00000d4d043001970003000000010355000000010220019000002e280000613d00000d7f0170009c00002c970000a13d00002df30000013d000000010220019000000008050000290000000d0600002900002dfa0000613d000000000101043b000000000110004c00002dfa0000613d000000400700043d00000db4010000410000000000170435000000240270003900000000010004140000000103000029000000000032043500000004027000390000000a0300002900000000003204350000000702000029000000040320008c00002c950000613d00000d4d0400004100000d4d0310009c000000000104801900000d4d0370009c000000000304001900000000030740190000004003300210000000c001100210000000000131019f00000d8a011001c7000c00000007001d352f35250000040f0000000c070000290000000d0600002900000008050000290000000003010019000000600330027000010d4d0030019d00000d4d043001970003000000010355000000010220019000002c950000c13d00002e4e0000013d00000d4d0100004100000d4d0340009c000000000401801900000d4d0390009c00000000010940190000004001100210000000c003400210000000000113019f00000d8a011001c7000700000009001d352f352a0000040f00000007090000290000000003010019000000600330027000000d4d03300197000000200430008c00000020040000390000000004034019000000050540027200002d5f0000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b00002d570000413d0000001f0640019000002d6e0000613d0000000505500210000000000751034f00000000055900190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001022001900000000c0700002900002e020000613d0000001f01400039000000600210018f0000000001920019000000000221004b0000000002000019000000010200403900000d7f0410009c00002df30000213d000000010220019000002df30000c13d000000400010043f000000200130008c00002dfa0000413d0000000001090433000700000001001d00000d4f0110009c00002dfa0000213d00000d83010000410000000000100439000000090100002900000d4f01100197000900000001001d000000040010044300000d4d01000041000000000200041400000d4d0320009c0000000001024019000000c00110021000000d84011001c70000800202000039352f352a0000040f0000000b030000290000000c04000029000000000343004b00002dc50000813d000000010220019000000008050000290000000d0600002900002dfa0000613d000000000101043b000000000110004c00002dfa0000613d000000400700043d00000db5010000410000000000170435000000240270003900000000010004140000000703000029000000000032043500000004027000390000000a0300002900000000003204350000000902000029000000040320008c00002dc00000613d00000d4d0400004100000d4d0310009c000000000104801900000d4d0370009c000000000304001900000000030740190000004003300210000000c001100210000000000131019f00000d8a011001c7000c00000007001d352f35250000040f0000000c070000290000000d0600002900000008050000290000000003010019000000600330027000010d4d0030019d00000d4d043001970003000000010355000000010220019000002e740000613d00000d7f0170009c0000000701000029000900000001001d00002c970000a13d00002df30000013d000000010220019000000008050000290000000d0600002900002dfa0000613d000000000101043b000000000110004c00002dfa0000613d000000400700043d00000db4010000410000000000170435000000240270003900000000010004140000000703000029000000000032043500000004027000390000000a0300002900000000003204350000000902000029000000040320008c00002def0000613d00000d4d0400004100000d4d0310009c000000000104801900000d4d0370009c000000000304001900000000030740190000004003300210000000c001100210000000000131019f00000d8a011001c7000c00000007001d352f35250000040f0000000c070000290000000d0600002900000008050000290000000003010019000000600330027000010d4d0030019d00000d4d043001970003000000010355000000010220019000002e9a0000613d00000d7f0170009c0000000701000029000900000001001d00002c970000a13d00000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000000001042d0000000001000019000035310001043000000d510100004100000000001004350000003201000039000000040010043f00000d52010000410000353100010430000000400200043d0000001f0430018f000000050330027200002e0f0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00002e070000413d000000000540004c00002e1e0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0340018f000000050440027200002e350000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00002e2d0000413d000000000530004c00002e440000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0340018f000000050440027200002e5b0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00002e530000413d000000000530004c00002e6a0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0340018f000000050440027200002e810000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00002e790000413d000000000530004c00002e900000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0340018f000000050440027200002ea70000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00002e9f0000413d000000000530004c00002eb60000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f000035310001043000000d510100004100000000001004350000001101000039000000040010043f00000d520100004100003531000104300001000000000002000000400a00043d00000d890400004100000000004a043500000d4f043001970000002405a000390000000003000414000000000045043500000d4f022001970000000404a00039000000000024043500000d4f02100197000000040120008c00002ed90000c13d0000000103000031000000200130008c0000002004000039000000000403401900002f0a0000013d00000d4d0100004100000d4d0430009c000000000301801900000d4d04a0009c00000000010a40190000004001100210000000c003300210000000000113019f00000d8a011001c700010000000a001d352f352a0000040f000000010a0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200002ef70000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00002eef0000413d000000000750004c00002f060000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000002f230000613d0000001f01400039000000600210018f0000000001a20019000000000221004b0000000002000019000000010200403900000d7f0410009c00002f1d0000213d000000010220019000002f1d0000c13d000000400010043f0000001f0130008c00002f1b0000a13d00000000010a043300000d4f0210009c00002f1b0000213d000000000001042d0000000001000019000035310001043000000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000400200043d0000001f0430018f000000050330027200002f300000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00002f280000413d000000000540004c00002f3f0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000000110004c00002f4c0000613d000000000001042d000000400100043d000000440210003900000db603000041000000000032043500000024021000390000001603000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c70000353100010430000000000510004c00002f870000613d000000000520004c00002f990000613d000000000530004c00002f990000613d000027110540008c00002f810000813d000000010500008a00000000761500d90000271004400089000000000646004b00002f810000413d00000000411400aa00002f730000613d00000000541500d9000000000434004b00002f810000413d00000db80420009c00002f750000413d00002f810000013d00000db90420009c00002f810000213d00002710422000c90000000002210019000000000412004b00000000040000190000000104004039000000010440019000002f810000c13d000000000420004c00002fab0000613d00000000313100a900000000212100d9000000000001042d00000d510100004100000000001004350000001101000039000000040010043f00000d52010000410000353100010430000000400100043d000000440210003900000db703000041000000000032043500000024021000390000001903000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c70000353100010430000000400100043d000000440210003900000db603000041000000000032043500000024021000390000001603000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c7000035310001043000000d510100004100000000001004350000001201000039000000040010043f00000d52010000410000353100010430000000000510004c00002fd50000613d000000000520004c00002fe70000613d000000000530004c00002fe70000613d000000010500008a00000000762500d9000000000616004b00002fcf0000413d00000000621200a900000db90620009c00002fcf0000213d000000000613004b00002fcf0000413d000027100640008c00002fcf0000213d00000000061300490000271004400089000000000113004b00002fc90000613d00000000316500d9000000000141004b00002fcf0000413d00000000316400aa00002ff90000613d00002710322000c900000000211200d90000000101100039000000000001042d00000d510100004100000000001004350000001101000039000000040010043f00000d52010000410000353100010430000000400100043d000000440210003900000da103000041000000000032043500000024021000390000001a03000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c70000353100010430000000400100043d000000440210003900000db603000041000000000032043500000024021000390000001603000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d9d011001c7000035310001043000000d510100004100000000001004350000001201000039000000040010043f00000d52010000410000353100010430000d000000000002000600000003001d000000009303043400000db10430009c0000314e0000813d00000005053002100000003f04500039000000200600008a000000000464016f000000400600043d0000000004460019000700000006001d000000000664004b0000000006000019000000010600403900000d7f0740009c0000314e0000213d00000001066001900000314e0000c13d000000400040043f0000000704000029000000000a3404360000001f0350018f000000000400003100000002044003670000000505500272000030230000613d0000000006000019000000050760021000000000087a0019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b0000301b0000413d000000000630004c000030320000613d0000000505500210000000000454034f00000000055a00190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f000000000035043500000007030000290000000003030433000000000330004c000031480000613d00000000002a043500000006020000290000000002020433000000000320004c0000313e0000613d00000d4f081001970000000006000019000400000009001d00030000000a001d000200000008001d000000010120008a000000000116004b000031440000813d000000000162004b000031480000a13d00000005076002100000000001970019000000000101043300000d4f04100197000000010b6000390000000001b2004b000031480000a13d000000050cb0021000000000019c00190000000002010433000000400e00043d00000d890100004100000000001e04350000000403e000390000000001000414000900000004001d000000000043043500000d4f032001970000002402e00039000800000003001d0000000000320435000000040280008c000030610000c13d0000000103000031000000200130008c000000200400003900000000040340190000309d0000013d000a00000007001d000b00000006001d000c0000000c001d000d0000000b001d00000d4d0200004100000d4d0310009c000000000102801900000d4d03e0009c00000000020e40190000004002200210000000c001100210000000000121019f00000d8a011001c7000000000208001900050000000e001d352f352a0000040f000000050e0000290000000003010019000000600330027000000d4d03300197000000200430008c000000200400003900000000040340190000000505400272000030830000613d0000000006000019000000050760021000000000087e0019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b0000307b0000413d0000001f06400190000030920000613d0000000505500210000000000751034f00000000055e00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001022001900000000409000029000000030a00002900000002080000290000000d0b0000290000000c0c0000290000000b060000290000000a070000290000317c0000613d0000001f01400039000000600110018f000000000de1001900000000011d004b0000000001000019000000010100403900000d7f02d0009c0000314e0000213d00000001011001900000314e0000c13d0000004000d0043f0000001f0130008c000031460000a13d00000000020e043300000d4f0120009c000031460000213d000000000120004c000000000300001900000000010000190000000004000019000031120000613d00000db30100004100000000051d04360000000001000414000000040320008c000030bc0000c13d0000000103000031000000600130008c00000060040000390000000004034019000030f90000013d000100000005001d000a00000007001d000b00000006001d000c0000000c001d000d0000000b001d00000d4d0300004100000d4d0410009c000000000103801900000d4d04d0009c00000000030d40190000004003300210000000c001100210000000000131019f00000d87011001c700050000000d001d352f352a0000040f000000050d0000290000000003010019000000600330027000000d4d03300197000000600430008c000000600400003900000000040340190000000505400272000030de0000613d0000000006000019000000050760021000000000087d0019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000030d60000413d0000001f0640019000000004090000290000000c0c000029000030ef0000613d0000000505500210000000000751034f00000000055d00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000102200190000000030a00002900000002080000290000000d0b0000290000000b060000290000000a070000290000000105000029000031a20000613d0000001f01400039000000e00110018f0000000002d1001900000d7f0120009c0000314e0000213d000000400020043f000000600130008c000031460000413d00000000030d043300000da60130009c000031460000213d000000000505043300000da60150009c000031460000213d0000004001d0003900000000040104330000ffff0140008c000031460000213d0000000901000029000000080d0000290000000001d1004b000000000103001900000000010540190000000003058019000000000d02001900000007020000290000000002020433000000000562004b000031480000a13d0000000002b2004b000031480000a13d0000000002a700190000000002020433000000000520004c000031540000613d000000000530004c000031650000613d000000000510004c000031650000613d000027100540008c0000313e0000213d000000010500008a00000000762500d90000271004400089000000000646004b0000313e0000413d00000000424200aa0000312c0000613d00000000542500d9000000000414004b0000313e0000413d00002710433000c90000000003320019000000000423004b0000000004000019000000010400403900000001044001900000313e0000c13d000000000430004c000031760000613d0000000004ac001900000000211200a900000000213100d9000000000014043500000006010000290000000002010433000000000120004c00000000060b0019000030400000c13d00000d510100004100000000001004350000001101000039000000040010043f00000d520100004100003531000104300000000701000029000000000001042d0000000001000019000035310001043000000d510100004100000000001004350000003201000039000000040010043f00000d5201000041000035310001043000000d510100004100000000001004350000004101000039000000040010043f00000d520100004100003531000104300000004401d0003900000db70200004100000000002104350000002401d000390000001902000039000000000021043500000d920100004100000000001d04350000000401d000390000002002000039000000000021043500000d4d0100004100000d4d02d0009c00000000010d4019000000400110021000000d9d011001c700003531000104300000004401d0003900000db60200004100000000002104350000002401d000390000001602000039000000000021043500000d920100004100000000001d04350000000401d000390000002002000039000000000021043500000d4d0100004100000d4d02d0009c00000000010d4019000000400110021000000d9d011001c7000035310001043000000d510100004100000000001004350000001201000039000000040010043f00000d52010000410000353100010430000000400200043d0000001f0430018f0000000503300272000031890000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000031810000413d000000000540004c000031980000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f0000000503300272000031af0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000031a70000413d000000000540004c000031be0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000d000000000002000600000003001d000000009303043400000db10430009c000033180000813d00000005053002100000003f04500039000000200600008a000000000464016f000000400600043d0000000004460019000700000006001d000000000664004b0000000006000019000000010600403900000d7f0740009c000033180000213d0000000106600190000033180000c13d000000400040043f0000000704000029000000000a3404360000001f0350018f000000000400003100000002044003670000000505500272000031ec0000613d0000000006000019000000050760021000000000087a0019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000031e40000413d000000000630004c000031fb0000613d0000000505500210000000000454034f00000000055a00190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f000000000035043500000007030000290000000003030433000000000430004c000033120000613d000000050330021000000007040000290000000003430019000000000023043500000006020000290000000002020433000000000320004c000033120000613d000000010620008c000033080000613d00000d4f08100197000400000009001d00030000000a001d000200000008001d00000006010000290000000001010433000000010b60008a0000000002b1004b0000330c0000a13d000000050cb0021000000000029c0019000000000202043300000d4f04200197000000000161004b0000330c0000a13d000000050760021000000000019700190000000002010433000000400e00043d00000d890100004100000000001e04350000000403e000390000000001000414000900000004001d000000000043043500000d4f032001970000002402e00039000800000003001d0000000000320435000000040280008c0000322d0000c13d0000000103000031000000200130008c00000020040000390000000004034019000032690000013d000a00000007001d000b00000006001d000c0000000c001d000d0000000b001d00000d4d0200004100000d4d0310009c000000000102801900000d4d03e0009c00000000020e40190000004002200210000000c001100210000000000121019f00000d8a011001c7000000000208001900050000000e001d352f352a0000040f000000050e0000290000000003010019000000600330027000000d4d03300197000000200430008c0000002004000039000000000403401900000005054002720000324f0000613d0000000006000019000000050760021000000000087e0019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000032470000413d0000001f064001900000325e0000613d0000000505500210000000000751034f00000000055e00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001022001900000000409000029000000030a00002900000002080000290000000d0b0000290000000c0c0000290000000b060000290000000a07000029000033460000613d0000001f01400039000000600110018f000000000de1001900000000011d004b0000000001000019000000010100403900000d7f02d0009c000033180000213d0000000101100190000033180000c13d0000004000d0043f0000001f0130008c0000330a0000a13d00000000020e043300000d4f0120009c0000330a0000213d000000000120004c000000000400001900000000030000190000000001000019000032de0000613d00000db30100004100000000051d04360000000001000414000000040320008c000032880000c13d0000000103000031000000600130008c00000060040000390000000004034019000032c50000013d000100000005001d000a00000007001d000b00000006001d000c0000000c001d000d0000000b001d00000d4d0300004100000d4d0410009c000000000103801900000d4d04d0009c00000000030d40190000004003300210000000c001100210000000000131019f00000d87011001c700050000000d001d352f352a0000040f000000050d0000290000000003010019000000600330027000000d4d03300197000000600430008c000000600400003900000000040340190000000505400272000032aa0000613d0000000006000019000000050760021000000000087d0019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000032a20000413d0000001f064001900000000409000029000032ba0000613d0000000505500210000000000751034f00000000055d00190000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000102200190000000030a00002900000002080000290000000d0b0000290000000c0c0000290000000b060000290000000a0700002900000001050000290000336c0000613d0000001f01400039000000e00110018f0000000002d1001900000d7f0120009c000033180000213d000000400020043f000000600130008c0000330a0000413d00000000040d043300000da60140009c0000330a0000213d000000000505043300000da60150009c0000330a0000213d0000004001d0003900000000010104330000ffff0310008c0000330a0000213d0000000903000029000000080d0000290000000003d3004b000000000304001900000000030540190000000004058019000000000d02001900000007020000290000000002020433000000000562004b0000330c0000a13d0000000002b2004b0000330c0000a13d0000000002a700190000000002020433000000000520004c0000331e0000613d000000000540004c0000332f0000613d000000000530004c0000332f0000613d000000010500008a00000000764500d9000000000626004b000033120000413d00000000644200a900000db90640009c000033120000213d000000000623004b000033120000413d000027100610008c000033120000213d00000000062300490000271001100089000000000223004b000032fe0000613d00000000326500d9000000000212004b000033120000413d00000000211600aa000033400000613d0000000002ac001900002710434000c900000000311300d9000000010110003900000000001204350000000001b0004c00000000060b00190000320d0000c13d0000000701000029000000000001042d0000000001000019000035310001043000000d510100004100000000001004350000003201000039000000040010043f00000d5201000041000035310001043000000d510100004100000000001004350000001101000039000000040010043f00000d5201000041000035310001043000000d510100004100000000001004350000004101000039000000040010043f00000d520100004100003531000104300000004401d0003900000da10200004100000000002104350000002401d000390000001a02000039000000000021043500000d920100004100000000001d04350000000401d000390000002002000039000000000021043500000d4d0100004100000d4d02d0009c00000000010d4019000000400110021000000d9d011001c700003531000104300000004401d0003900000db60200004100000000002104350000002401d000390000001602000039000000000021043500000d920100004100000000001d04350000000401d000390000002002000039000000000021043500000d4d0100004100000d4d02d0009c00000000010d4019000000400110021000000d9d011001c7000035310001043000000d510100004100000000001004350000001201000039000000040010043f00000d52010000410000353100010430000000400200043d0000001f0430018f0000000503300272000033530000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b0000334b0000413d000000000540004c000033620000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f0000353100010430000000400200043d0000001f0430018f0000000503300272000033790000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000033710000413d000000000540004c000033880000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000d4d01000041000000010300003100000d4d0430009c000000000301801900000d4d0420009c000000000102401900000040011002100000006002300210000000000112019f00003531000104300000000004010019000000400100043d00000044051000390000000000350435000000200310003900000d8b05000041000000000053043500000d4f02200197000000240510003900000000002504350000004402000039000000000021043500000dba0210009c000034040000813d0000008002100039000000400020043f0000000002000414000000040540008c000033a80000c13d00000001020000390000000103000031000033bc0000013d00000d4d0500004100000d4d0630009c00000000030580190000004003300210000000000101043300000d4d0610009c00000000010580190000006001100210000000000131019f00000d4d0320009c0000000002058019000000c002200210000000000121019f0000000002040019352f35250000040f000000010220018f0003000000010355000000600110027000010d4d0010019d00000d4d031001970000006001000039000000000430004c000033ea0000613d0000003f01300039000000200400008a000000000441016f000000400100043d0000000004410019000000000514004b0000000005000019000000010500403900000d7f0640009c000034040000213d0000000105500190000034040000c13d000000400040043f0000000003310436000000030400036700000001060000310000001f0560018f0000000506600272000033db0000613d000000000700001900000005087002100000000009830019000000000884034f000000000808043b00000000008904350000000107700039000000000867004b000033d30000413d000000000750004c000033ea0000613d0000000506600210000000000464034f00000000036300190000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000220004c0000340a0000613d0000000012010434000000000320004c000034030000613d00000d4e030000410000001f0420008c0000000004000019000000000403201900000d4e02200197000000000520004c000000000300801900000d4e0220009c00000000020400190000000002036019000000000220004c0000341f0000613d0000000001010433000000000210004c0000000002000019000000010200c039000000000221004b0000341f0000c13d000000000110004c0000340a0000613d000000000001042d00000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000400100043d000000640210003900000daf030000410000000000320435000000440210003900000db003000041000000000032043500000024021000390000002d03000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d93011001c70000353100010430000000000100001900003531000104300000000005010019000000400100043d0000006406100039000000000046043500000d4f0330019700000044041000390000000000340435000000200310003900000dac04000041000000000043043500000d4f02200197000000240410003900000000002404350000006402000039000000000021043500000dbb0210009c000034960000813d000000a002100039000000400020043f0000000002000414000000040450008c0000343a0000c13d000000010200003900000001030000310000344e0000013d00000d4d0400004100000d4d0630009c00000000030480190000004003300210000000000101043300000d4d0610009c00000000010480190000006001100210000000000131019f00000d4d0320009c0000000002048019000000c002200210000000000121019f0000000002050019352f35250000040f000000010220018f0003000000010355000000600110027000010d4d0010019d00000d4d031001970000006001000039000000000430004c0000347c0000613d0000003f01300039000000200400008a000000000441016f000000400100043d0000000004410019000000000514004b0000000005000019000000010500403900000d7f0640009c000034960000213d0000000105500190000034960000c13d000000400040043f0000000003310436000000030400036700000001060000310000001f0560018f00000005066002720000346d0000613d000000000700001900000005087002100000000009830019000000000884034f000000000808043b00000000008904350000000107700039000000000867004b000034650000413d000000000750004c0000347c0000613d0000000506600210000000000464034f00000000036300190000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000000220004c0000349c0000613d0000000012010434000000000320004c000034950000613d00000d4e030000410000001f0420008c0000000004000019000000000403201900000d4e02200197000000000520004c000000000300801900000d4e0220009c00000000020400190000000002036019000000000220004c000034b10000613d0000000001010433000000000210004c0000000002000019000000010200c039000000000221004b000034b10000c13d000000000110004c0000349c0000613d000000000001042d00000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000400100043d000000640210003900000dbc030000410000000000320435000000440210003900000dbd03000041000000000032043500000024021000390000003103000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d93011001c700003531000104300000000001000019000035310001043000000000030200190000000004010019000000400200043d00000dbe0120009c0000350a0000813d0000002001200039000000400010043f00000000000204350000000002000414000000040540008c000034c10000c13d00000001020000390000000101000031000034da0000013d00000d4d0500004100000d4d0620009c000000000205801900000d4d0610009c00000000010580190000004001100210000000c002200210000000000112019f000000000230004c000034d40000613d00000d53011001c700008009020000390000000005000019352f35250000040f0003000000010355000000600110027000010d4d0010019d00000d4d01100197000034da0000013d0000000002040019352f35250000040f0003000000010355000000600110027000010d4d0010019d00000d4d01100197000000000310004c000035070000613d0000003f03100039000000200400008a000000000443016f000000400300043d0000000004430019000000000534004b0000000005000019000000010500403900000d7f0640009c0000350a0000213d00000001055001900000350a0000c13d000000400040043f0000000001130436000000030300036700000001050000310000001f0450018f0000000505500272000034f80000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000034f00000413d000000000640004c000035070000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000000101200190000035100000613d000000000001042d00000d510100004100000000001004350000004101000039000000040010043f00000d52010000410000353100010430000000400100043d000000640210003900000d90030000410000000000320435000000440210003900000d9103000041000000000032043500000024021000390000002303000039000000000032043500000d9202000041000000000021043500000004021000390000002003000039000000000032043500000d4d0200004100000d4d0310009c0000000001028019000000400110021000000d93011001c7000035310001043000003528002104210000000102000039000000000001042d0000000002000019000000000001042d0000352d002104230000000102000039000000000001042d0000000002000019000000000001042d0000352f00000432000035300001042e00003531000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000002000000000000000000000000000000c00000010000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000000000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e00000000000000000000000000000000000000000000000000000000867133d900000000000000000000000000000000000000000000000000000000c45a015400000000000000000000000000000000000000000000000000000000e55a7dee00000000000000000000000000000000000000000000000000000000f305d71800000000000000000000000000000000000000000000000000000000f305d71900000000000000000000000000000000000000000000000000000000fb3bdb4100000000000000000000000000000000000000000000000000000000e55a7def00000000000000000000000000000000000000000000000000000000e8e3370000000000000000000000000000000000000000000000000000000000d06ca61e00000000000000000000000000000000000000000000000000000000d06ca61f00000000000000000000000000000000000000000000000000000000ded9382a00000000000000000000000000000000000000000000000000000000c45a015500000000000000000000000000000000000000000000000000000000c96ca6bf00000000000000000000000000000000000000000000000000000000ad615deb00000000000000000000000000000000000000000000000000000000b6f9de9400000000000000000000000000000000000000000000000000000000b6f9de9500000000000000000000000000000000000000000000000000000000baa2abde00000000000000000000000000000000000000000000000000000000ad615dec00000000000000000000000000000000000000000000000000000000af2979eb00000000000000000000000000000000000000000000000000000000867133da000000000000000000000000000000000000000000000000000000008803dbee00000000000000000000000000000000000000000000000000000000ad5c4648000000000000000000000000000000000000000000000000000000005b0d598300000000000000000000000000000000000000000000000000000000791ac946000000000000000000000000000000000000000000000000000000007ff36ab4000000000000000000000000000000000000000000000000000000007ff36ab50000000000000000000000000000000000000000000000000000000085f8c25900000000000000000000000000000000000000000000000000000000791ac9470000000000000000000000000000000000000000000000000000000079ec1b7c000000000000000000000000000000000000000000000000000000005b0d5984000000000000000000000000000000000000000000000000000000005c11d7950000000000000000000000000000000000000000000000000000000068f63c99000000000000000000000000000000000000000000000000000000001f00ca730000000000000000000000000000000000000000000000000000000038ed17380000000000000000000000000000000000000000000000000000000038ed1739000000000000000000000000000000000000000000000000000000004a25d94a000000000000000000000000000000000000000000000000000000001f00ca74000000000000000000000000000000000000000000000000000000002195995c0000000000000000000000000000000000000000000000000000000002751cec00000000000000000000000000000000000000000000000000000000054d50d40000000000000000000000000000000000000000000000000000000018cbafe5000000000000000000000000000000000000000000000000ffffffffffffffff796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000002000002000000000000000000000000000000440000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000d0e30db000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000010000000000000000e6a43905000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000a9059cbb000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf6a6278420000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000240000000000000000000000004c454400000000000000000000000000000000000000000000000000000000005472616e7366657248656c7065723a204554485f5452414e534645525f46414908c379a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000002000000000000000000000000000000000000400000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000002e1a7d4d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000494e53554646494349454e545f414d4f554e5400000000000000000000000000000000000000000000000000000000000000006400000000000000000000000054cf2aeb000000000000000000000000000000000000000000000000000000004f7574206f6620626f756e640000000000000000000000000000000000000000436f756e7473206d7573742067726561746572207468616e207a65726f000000494e53554646494349454e545f4f55545055545f414d4f554e540000000000004558434553534956455f494e5055545f414d4f554e5400000000000000000000494e56414c49445f504154480000000000000000000000000000000000000000455850495245440000000000000000000000000000000000000000000000000065d176f500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff494e53554646494349454e545f425f414d4f554e540000000000000000000000494e53554646494349454e545f415f414d4f554e540000000000000000000000c9c6539600000000000000000000000000000000000000000000000000000000d505accf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e400000000000000000000000023b872dd0000000000000000000000000000000000000000000000000000000089afcb4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f616e73666572206661696c6564000000000000000000000000000000000000005472616e7366657248656c7065723a3a736166655472616e736665723a20747200000000000000000000000000000000000000000000000100000000000000000000000000000000000000010000000000000000000000000000000000000000e5ba6dad000000000000000000000000000000000000000000000000000000004a1c83090000000000000000000000000000000000000000000000000000000051415b5d00000000000000000000000000000000000000000000000000000000494e53554646494349454e545f4c495155494449545900000000000000000000494e53554646494349454e545f494e5055545f414d4f554e540000000000000000068db8bac710cb295e9e1b089a027525460aa64c2f837b4a2339c0ebedfa4400068db8bac710cb295e9e1b089a027525460aa64c2f837b4a2339c0ebedfa43000000000000000000000000000000000000000000000000ffffffffffffff80000000000000000000000000000000000000000000000000ffffffffffffff60616e7366657246726f6d206661696c65640000000000000000000000000000005472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472000000000000000000000000000000000000000000000000ffffffffffffffe000000000000000000000000000000000000000000000000000000000000000007f38abf077919c97fd220a337a61bcba6e53da19a346b88c0d91d20f93af83bd

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

0x0000000000000000000000003a76e377ed58c8731f9df3a36155942438744ce30000000000000000000000005aea5775959fbc2557cc8789bc1bf90a239d9a91

-----Decoded View---------------
Arg [0] : _factory (address): 0x3a76e377ED58c8731F9DF3A36155942438744Ce3
Arg [1] : _WETH (address): 0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91

-----Encoded View---------------


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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