ERC-20
Overview
Max Total Supply
0.01549923314569434 SLP
Holders
105
Market
Price
-
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000200382622827 SLPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x353B35a3...65CcD4dA7 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
SyncSwapClassicPool
Compiler Version
v0.8.23+commit.f704f362
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later and MIT // ___ ___ ___ ___ ___ ___ // / /\ __ / /\ / /\ / /\ / /\ / /\ ___ // / /::\ | |\ / /::| / /::\ / /::\ / /:/_ / /::\ / /\ // /__/:/\:\ | |:| / /:|:| / /:/\:\ /__/:/\:\ / /:/ /\ / /:/\:\ / /::\ // _\_ \:\ \:\ | |:| / /:/|:|__ / /:/ \:\ _\_ \:\ \:\ / /:/ /:/_ / /::\ \:\ / /:/\:\ // /__/\ \:\ \:\ |__|:|__ /__/:/ |:| /\ /__/:/ \ \:\ /__/\ \:\ \:\ /__/:/ /:/ /\ /__/:/\:\_\:\ / /::\ \:\ // \ \:\ \:\_\/ / /::::\ \__\/ |:|/:/ \ \:\ \__\/ \ \:\ \:\_\/ \ \:\/:/ /:/ \__\/ \:\/:/ /__/:/\:\_\:\ // \ \:\_\:\ / /:/~~~~ | |:/:/ \ \:\ \ \:\_\:\ \ \::/ /:/ \__\::/ \__\/ \:\/:/ // \ \:\/:/ /__/:/ |__|::/ \ \:\ \ \:\/:/ \ \:\/:/ / /:/ \ \::/ // \ \::/ \__\/ /__/:/ \ \:\ \ \::/ \ \::/ /__/:/ \__\/ // \__\/ \__\/ \__\/ \__\/ \__\/ \__\/ // // Welcome to the SyncSwap protocol! // // File contracts/interfaces/factory/IPoolFactory.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IPoolFactory { function master() external view returns (address); function getDeployData() external view returns (bytes memory); function createPool(bytes calldata data) external returns (address pool); } // File contracts/interfaces/factory/IBasePoolFactory.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IBasePoolFactory is IPoolFactory { event PoolCreated( address indexed token0, address indexed token1, address pool ); function getPool(address tokenA, address tokenB) external view returns (address pool); function getSwapFee( address pool, address sender, address tokenIn, address tokenOut, bytes calldata data ) external view returns (uint24 swapFee); } // File contracts/interfaces/master/IFeeManager.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; /// @notice The manager contract to control fees. /// Management functions are omitted. interface IFeeManager { function getSwapFee( address pool, address sender, address tokenIn, address tokenOut, bytes calldata data ) external view returns (uint24); function getProtocolFee(address pool) external view returns (uint24); function getFeeRecipient() external view returns (address); } // File contracts/interfaces/master/IForwarderRegistry.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IForwarderRegistry { function isForwarder(address forwarder) external view returns (bool); } // File contracts/interfaces/master/IPoolMaster.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; /// @dev The master contract to create pools and manage whitelisted factories. /// Inheriting the fee manager interface to support fee queries. interface IPoolMaster is IFeeManager, IForwarderRegistry { event SetFactoryWhitelisted(address indexed factory, bool whitelisted); event RegisterPool( address indexed factory, address indexed pool, uint16 indexed poolType, bytes data ); event UpdateForwarderRegistry(address indexed newForwarderRegistry); event UpdateFeeManager(address indexed newFeeManager); function wETH() external view returns (address); function vault() external view returns (address); function feeManager() external view returns (address); function pools(uint) external view returns (address); function poolsLength() external view returns (uint); // Forwarder Registry function setForwarderRegistry(address) external; // Fees function setFeeManager(address) external; // Factories function isFactoryWhitelisted(address) external view returns (bool); function setFactoryWhitelisted(address factory, bool whitelisted) external; // Pools function isPool(address) external view returns (bool); function getPool(bytes32) external view returns (address); function createPool(address factory, bytes calldata data) external returns (address pool); function registerPool(address pool, uint16 poolType, bytes calldata data, address token0, address token1) external; } // File contracts/interfaces/pool/IPool.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IPool { struct TokenAmount { address token; uint amount; } /// @dev Returns the address of pool master. function master() external view returns (address); /// @dev Returns the vault. function vault() external view returns (address); /// @dev Returns the pool type. function poolType() external view returns (uint16); /// @dev Returns the assets of the pool. function getAssets() external view returns (address[] memory assets); /// @dev Returns the swap fee of the pool. function getSwapFee(address sender, address tokenIn, address tokenOut, bytes calldata data) external view returns (uint24 swapFee); /// @dev Returns the protocol fee of the pool. function getProtocolFee() external view returns (uint24 protocolFee); /// @dev Mints liquidity. function mint( bytes calldata data, address sender, address callback, bytes calldata callbackData ) external returns (uint liquidity); /// @dev Burns liquidity. function burn( bytes calldata data, address sender, address callback, bytes calldata callbackData ) external returns (TokenAmount[] memory tokenAmounts); /// @dev Burns liquidity with single output token. function burnSingle( bytes calldata data, address sender, address callback, bytes calldata callbackData ) external returns (TokenAmount memory tokenAmount); /// @dev Swaps between tokens. function swap( bytes calldata data, address sender, address callback, bytes calldata callbackData ) external returns (TokenAmount memory tokenAmount); } // File contracts/interfaces/token/IERC20Base.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC20Base { function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint amount) external returns (bool); function transfer(address to, uint amount) external returns (bool); function transferFrom(address from, address to, uint amount) external returns (bool); event Approval(address indexed owner, address indexed spender, uint amount); event Transfer(address indexed from, address indexed to, uint amount); } // File contracts/interfaces/token/IERC20.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC20 is IERC20Base { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } // File contracts/interfaces/token/IERC20Permit.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC20Permit is IERC20 { function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; function nonces(address owner) external view returns (uint); function DOMAIN_SEPARATOR() external view returns (bytes32); } // File contracts/interfaces/token/IERC20Permit2.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC20Permit2 is IERC20Permit { function permit2(address owner, address spender, uint amount, uint deadline, bytes calldata signature) external; } // File contracts/interfaces/pool/IBasePool.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IBasePool is IPool, IERC20Permit2 { function token0() external view returns (address); function token1() external view returns (address); function reserve0() external view returns (uint); function reserve1() external view returns (uint); function invariantLast() external view returns (uint); function getReserves() external view returns (uint, uint); function getAmountOut(address tokenIn, uint amountIn, address sender) external view returns (uint amountOut); function getAmountIn(address tokenOut, uint amountOut, address sender) external view returns (uint amountIn); event Mint( address indexed sender, uint amount0, uint amount1, uint liquidity, address indexed to ); event Burn( address indexed sender, uint amount0, uint amount1, uint liquidity, address indexed to ); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync( uint reserve0, uint reserve1 ); } // File contracts/interfaces/pool/IBasePoolV2.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IBasePoolV2 is IBasePool { function poolVersion() external view returns (uint); function sync() external; event MintProtocolFee( address indexed feeRecipient, uint24 protocolFee, uint liquidity, uint totalSupply ); event Swapped( address indexed sender, address indexed user, address indexed tokenOut, uint amountIn, uint amountOut, uint24 swapFee, address to ); event Fee( uint amount0, uint amount1 ); } // File contracts/interfaces/pool/IClassicPoolV2.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IClassicPoolV2 is IBasePoolV2 { } // File contracts/interfaces/vault/IERC3156FlashBorrower.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC3156FlashBorrower { /** * @dev Receive a flash loan. * @param initiator The initiator of the loan. * @param token The loan currency. * @param amount The amount of tokens lent. * @param fee The additional amount of tokens to repay. * @param data Arbitrary data structure, intended to contain user-defined parameters. * @return The keccak256 hash of "ERC3156FlashBorrower.onFlashLoan" */ function onFlashLoan( address initiator, address token, uint256 amount, uint256 fee, bytes calldata data ) external returns (bytes32); } // File contracts/interfaces/vault/IERC3156FlashLender.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC3156FlashLender { /** * @dev The amount of currency available to be lent. * @param token The loan currency. * @return The amount of `token` that can be borrowed. */ function maxFlashLoan( address token ) external view returns (uint256); /** * @dev The fee to be charged for a given loan. * @param token The loan currency. * @param amount The amount of tokens lent. * @return The amount of `token` to be charged for the loan, on top of the returned principal. */ function flashFee( address token, uint256 amount ) external view returns (uint256); /** * @dev Initiate a flash loan. * @param receiver The receiver of the tokens in the loan, and the receiver of the callback. * @param token The loan currency. * @param amount The amount of tokens lent. * @param data Arbitrary data structure, intended to contain user-defined parameters. */ function flashLoan( IERC3156FlashBorrower receiver, address token, uint256 amount, bytes calldata data ) external returns (bool); } // File contracts/interfaces/pool/IPoolFlashLoan.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IPoolFlashLoan is IERC3156FlashLender { /** * @dev Emitted for each individual flash loan performed by `flashLoan`. */ event FlashLoan(address indexed recipient, address indexed token, uint amount, uint feeAmount); } // File contracts/interfaces/vault/IFlashLoanRecipient.sol // Original license: SPDX_License_Identifier: GPL-3.0-or-later pragma solidity >=0.7.0 <0.9.0; // Inspired by Aave Protocol's IFlashLoanReceiver. interface IFlashLoanRecipient { /** * @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient. * * At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this * call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the * Vault, or else the entire flash loan will revert. * * `userData` is the same value passed in the `IVault.flashLoan` call. */ function receiveFlashLoan( address[] memory tokens, uint[] memory amounts, uint[] memory feeAmounts, bytes memory userData ) external; } // File contracts/interfaces/vault/IFlashLoan.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IFlashLoan is IERC3156FlashLender { function flashLoanFeePercentage() external view returns (uint); /** * @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it, * and then reverting unless the tokens plus a proportional protocol fee have been returned. * * The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount * for each token contract. `tokens` must be sorted in ascending order. * * The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the * `receiveFlashLoan` call. * * Emits `FlashLoan` events. */ function flashLoanMultiple( IFlashLoanRecipient recipient, address[] memory tokens, uint[] memory amounts, bytes memory userData ) external; /** * @dev Emitted for each individual flash loan performed by `flashLoan`. */ event FlashLoan(address indexed recipient, address indexed token, uint amount, uint feeAmount); } // File contracts/interfaces/vault/IVault.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IVault is IFlashLoan { function wETH() external view returns (address); function reserves(address token) external view returns (uint reserve); function balanceOf(address token, address owner) external view returns (uint balance); function deposit(address token, address to) external payable returns (uint amount); function depositETH(address to) external payable returns (uint amount); function transferAndDeposit(address token, address to, uint amount) external payable returns (uint); function transfer(address token, address to, uint amount) external; function withdraw(address token, address to, uint amount) external; function withdrawAlternative(address token, address to, uint amount, uint8 mode) external; function withdrawETH(address to, uint amount) external; } // File contracts/interfaces/token/IERC165.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC165 { /// @notice Query if a contract implements an interface /// @param interfaceID The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceID) external view returns (bool); } // File contracts/libraries/ECDSA.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. * * Based on OpenZeppelin's ECDSA library. * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/561d1061fc568f04c7a65853538e834a889751e8/contracts/utils/cryptography/ECDSA.sol */ library ECDSA { /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature` or error string. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { // Check the signature length if (signature.length != 65) { return address(0); } // Divide the signature in r, s and v variables bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. /// @solidity memory-safe-assembly // solhint-disable-next-line no-inline-assembly assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return address(0); } return ecrecover(hash, v, r, s); } } // File contracts/libraries/SignatureChecker.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; /** * @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA * signatures from externally owned accounts (EOAs) as well as ERC1271 signatures from smart contract wallets like * Argent and Gnosis Safe. * * Based on OpenZeppelin's SignatureChecker library. * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/561d1061fc568f04c7a65853538e834a889751e8/contracts/utils/cryptography/SignatureChecker.sol */ library SignatureChecker { bytes4 constant internal MAGICVALUE = 0x1626ba7e; // bytes4(keccak256("isValidSignature(bytes32,bytes)") /** * @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the * signature is validated against that smart contract using ERC1271, otherwise it's validated using `ECDSA.recover`. * * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus * change through time. It could return true at block N and false at block N+1 (or the opposite). */ function isValidSignatureNow( address signer, bytes32 hash, bytes memory signature ) internal view returns (bool) { (address recovered) = ECDSA.recover(hash, signature); if (recovered == signer) { if (recovered != address(0)) { return true; } } (bool success, bytes memory result) = signer.staticcall( abi.encodeWithSelector(MAGICVALUE, hash, signature) ); return ( success && result.length == 32 && abi.decode(result, (bytes32)) == bytes32(MAGICVALUE) ); } } // File contracts/libraries/ERC20Permit2.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; error Expired(); error InvalidSignature(); /** * @dev A simple ERC20 implementation for pool's liquidity token, supports permit by both ECDSA signatures from * externally owned accounts (EOAs) as well as ERC1271 signatures from smart contract wallets like Argent. * * Based on Solmate's ERC20. * https://github.com/transmissions11/solmate/blob/bff24e835192470ed38bf15dbed6084c2d723ace/src/tokens/ERC20.sol */ contract ERC20Permit2 is IERC165, IERC20Permit2 { uint8 public immutable override decimals = 18; uint public override totalSupply; mapping(address => uint) public override balanceOf; mapping(address => mapping(address => uint)) public override allowance; bytes32 private constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)") mapping(address => uint) public override nonces; // These members are actually immutable as // `_initialize` will only indent to be called once. string public override name; string public override symbol; uint private INITIAL_CHAIN_ID; bytes32 private INITIAL_DOMAIN_SEPARATOR; function _initialize(string memory _name, string memory _symbol) internal { name = _name; symbol = _symbol; INITIAL_CHAIN_ID = block.chainid; INITIAL_DOMAIN_SEPARATOR = _computeDomainSeparator(); } function supportsInterface(bytes4 interfaceID) external pure override returns (bool) { return interfaceID == this.supportsInterface.selector || // ERC-165 interfaceID == this.permit.selector || // ERC-2612 interfaceID == this.permit2.selector; // Permit2 } function DOMAIN_SEPARATOR() public view override returns (bytes32) { return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : _computeDomainSeparator(); } function _computeDomainSeparator() private view returns (bytes32) { return keccak256( abi.encode( // keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)") 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f, keccak256(bytes(name)), // keccak256(bytes("1")) 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6, block.chainid, address(this) ) ); } function _approve(address _owner, address _spender, uint _amount) private { allowance[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } function approve(address _spender, uint _amount) public override returns (bool) { _approve(msg.sender, _spender, _amount); return true; } function transfer(address _to, uint _amount) public override returns (bool) { balanceOf[msg.sender] -= _amount; // Cannot overflow because the sum of all user balances can't exceed the max uint256 value. unchecked { balanceOf[_to] += _amount; } emit Transfer(msg.sender, _to, _amount); return true; } function transferFrom(address _from, address _to, uint _amount) public override returns (bool) { uint256 _allowed = allowance[_from][msg.sender]; // Saves gas for limited approvals. if (_allowed != type(uint).max) { allowance[_from][msg.sender] = _allowed - _amount; } balanceOf[_from] -= _amount; // Cannot overflow because the sum of all user balances can't exceed the max uint256 value. unchecked { balanceOf[_to] += _amount; } emit Transfer(_from, _to, _amount); return true; } function _mint(address _to, uint _amount) internal { totalSupply += _amount; // Cannot overflow because the sum of all user balances can't exceed the max uint256 value. unchecked { balanceOf[_to] += _amount; } emit Transfer(address(0), _to, _amount); } function _burn(address _from, uint _amount) internal { balanceOf[_from] -= _amount; // Cannot underflow because a user's balance will never be larger than the total supply. unchecked { totalSupply -= _amount; } emit Transfer(_from, address(0), _amount); } modifier ensures(uint _deadline) { // solhint-disable-next-line not-rely-on-time if (block.timestamp > _deadline) { revert Expired(); } _; } function _permitHash( address _owner, address _spender, uint _amount, uint _deadline ) private returns (bytes32) { return keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR(), keccak256(abi.encode(PERMIT_TYPEHASH, _owner, _spender, _amount, nonces[_owner]++, _deadline)) ) ); } function permit( address _owner, address _spender, uint _amount, uint _deadline, uint8 _v, bytes32 _r, bytes32 _s ) public override ensures(_deadline) { bytes32 _hash = _permitHash(_owner, _spender, _amount, _deadline); address _recoveredAddress = ecrecover(_hash, _v, _r, _s); if (_recoveredAddress != _owner) { revert InvalidSignature(); } if (_recoveredAddress == address(0)) { revert InvalidSignature(); } _approve(_owner, _spender, _amount); } function permit2( address _owner, address _spender, uint _amount, uint _deadline, bytes calldata _signature ) public override ensures(_deadline) { bytes32 _hash = _permitHash(_owner, _spender, _amount, _deadline); if (!SignatureChecker.isValidSignatureNow(_owner, _hash, _signature)) { revert InvalidSignature(); } _approve(_owner, _spender, _amount); } } // File contracts/pool/BasePoolFactory.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; error InvalidTokens(); abstract contract BasePoolFactory is IBasePoolFactory { /// @dev The pool master that control fees and registry. address public immutable master; /// @dev Pools by its two pool tokens. mapping(address => mapping(address => address)) public override getPool; bytes internal cachedDeployData; constructor(address _master) { master = _master; } function getDeployData() external view override returns (bytes memory deployData) { deployData = cachedDeployData; } function getSwapFee( address pool, address sender, address tokenIn, address tokenOut, bytes calldata data ) external view override returns (uint24 swapFee) { swapFee = IPoolMaster(master).getSwapFee(pool, sender, tokenIn, tokenOut, data); } function createPool(bytes calldata data) external override returns (address pool) { (address tokenA, address tokenB) = abi.decode(data, (address, address)); // Perform safety checks. if (tokenA == tokenB) { revert InvalidTokens(); } // Sort tokens. if (tokenB < tokenA) { (tokenA, tokenB) = (tokenB, tokenA); } if (tokenA == address(0)) { revert InvalidTokens(); } // Underlying implementation to deploy the pools and register them. pool = _createPool(tokenA, tokenB); // Populate mapping in both directions. // Not necessary as existence of the master, but keep them for better compatibility. getPool[tokenA][tokenB] = pool; getPool[tokenB][tokenA] = pool; emit PoolCreated(tokenA, tokenB, pool); } function _createPool(address tokenA, address tokenB) internal virtual returns (address) { } } // File contracts/interfaces/ICallback.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; /// @dev The callback interface for SyncSwap base pool operations. /// Note additional checks will be required for some callbacks, see below for more information. /// Visit the documentation https://syncswap.gitbook.io/api-documentation/ for more details. interface ICallback { struct BaseMintCallbackParams { address sender; address to; uint reserve0; uint reserve1; uint balance0; uint balance1; uint amount0; uint amount1; uint fee0; uint fee1; uint newInvariant; uint oldInvariant; uint totalSupply; uint liquidity; uint24 swapFee; bytes callbackData; } function syncSwapBaseMintCallback(BaseMintCallbackParams calldata params) external; struct BaseBurnCallbackParams { address sender; address to; uint balance0; uint balance1; uint liquidity; uint totalSupply; uint amount0; uint amount1; uint8 withdrawMode; bytes callbackData; } function syncSwapBaseBurnCallback(BaseBurnCallbackParams calldata params) external; struct BaseBurnSingleCallbackParams { address sender; address to; address tokenIn; address tokenOut; uint balance0; uint balance1; uint liquidity; uint totalSupply; uint amount0; uint amount1; uint amountOut; uint amountSwapped; uint feeIn; uint24 swapFee; uint8 withdrawMode; bytes callbackData; } function syncSwapBaseBurnSingleCallback(BaseBurnSingleCallbackParams calldata params) external; struct BaseSwapCallbackParams { address sender; address to; address tokenIn; address tokenOut; uint reserve0; uint reserve1; uint balance0; uint balance1; uint amountIn; uint amountOut; uint feeIn; uint24 swapFee; uint8 withdrawMode; bytes callbackData; } function syncSwapBaseSwapCallback(BaseSwapCallbackParams calldata params) external; } // File contracts/interfaces/IOwnable.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IOwnable { function owner() external view returns (address); } // File contracts/interfaces/IWETH.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function withdraw(uint) external; } // File contracts/interfaces/master/IFeeRecipient.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IFeeRecipient { /// @dev Notifies the fee recipient after sent fees. function notifyFees( uint16 feeType, address token, uint amount, uint feeRate, bytes calldata data ) external; } // File contracts/libraries/Math.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; /// @dev Math functions. /// @dev Modified from Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/FixedPointMathLib.sol) library Math { function max(uint256 a, uint256 b) internal pure returns (uint256) { return a > b ? a : b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } function sqrtInt(uint256 x) internal pure returns (uint256) { if (x == 0) { return 0; } uint z = (x + 1e18) / 2; uint y = x; for (uint i; i < 256; ) { if (z == y) { return y; } y = z; z = (x * 1e18 / z + z) / 2; unchecked { ++i; } } revert(); } function geometricMean(uint a, uint b) internal pure returns (uint) { return Math.sqrt(a * b); } /// @notice Compares a and b and returns 'true' if the difference between a and b /// is less than 1 or equal to each other. /// @param a uint256 to compare with. /// @param b uint256 to compare with. function within1(uint256 a, uint256 b) internal pure returns (bool) { unchecked { if (a > b) { return a - b <= 1; } return b - a <= 1; } } /// @dev Returns the square root of `x`. function sqrt(uint256 x) internal pure returns (uint256 z) { /// @solidity memory-safe-assembly assembly { // `floor(sqrt(2**15)) = 181`. `sqrt(2**15) - 181 = 2.84`. z := 181 // The "correct" value is 1, but this saves a multiplication later. // This segment is to get a reasonable initial estimate for the Babylonian method. With a bad // start, the correct # of bits increases ~linearly each iteration instead of ~quadratically. // Let `y = x / 2**r`. // We check `y >= 2**(k + 8)` but shift right by `k` bits // each branch to ensure that if `x >= 256`, then `y >= 256`. let r := shl(7, lt(0xffffffffffffffffffffffffffffffffff, x)) r := or(r, shl(6, lt(0xffffffffffffffffff, shr(r, x)))) r := or(r, shl(5, lt(0xffffffffff, shr(r, x)))) r := or(r, shl(4, lt(0xffffff, shr(r, x)))) z := shl(shr(1, r), z) // Goal was to get `z*z*y` within a small factor of `x`. More iterations could // get y in a tighter range. Currently, we will have y in `[256, 256*(2**16))`. // We ensured `y >= 256` so that the relative difference between `y` and `y+1` is small. // That's not possible if `x < 256` but we can just verify those cases exhaustively. // Now, `z*z*y <= x < z*z*(y+1)`, and `y <= 2**(16+8)`, and either `y >= 256`, or `x < 256`. // Correctness can be checked exhaustively for `x < 256`, so we assume `y >= 256`. // Then `z*sqrt(y)` is within `sqrt(257)/sqrt(256)` of `sqrt(x)`, or about 20bps. // For `s` in the range `[1/256, 256]`, the estimate `f(s) = (181/1024) * (s+1)` // is in the range `(1/2.84 * sqrt(s), 2.84 * sqrt(s))`, // with largest error when `s = 1` and when `s = 256` or `1/256`. // Since `y` is in `[256, 256*(2**16))`, let `a = y/65536`, so that `a` is in `[1/256, 256)`. // Then we can estimate `sqrt(y)` using // `sqrt(65536) * 181/1024 * (a + 1) = 181/4 * (y + 65536)/65536 = 181 * (y + 65536)/2**18`. // There is no overflow risk here since `y < 2**136` after the first branch above. z := shr(18, mul(z, add(shr(r, x), 65536))) // A `mul()` is saved from starting `z` at 181. // Given the worst case multiplicative error of 2.84 above, 7 iterations should be enough. z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) // If `x+1` is a perfect square, the Babylonian method cycles between // `floor(sqrt(x))` and `ceil(sqrt(x))`. This statement ensures we return floor. // See: https://en.wikipedia.org/wiki/Integer_square_root#Using_only_integer_division // Since the ceil is rare, we save gas on the assignment and repeat division in the rare case. // If you don't care whether the floor or ceil square root is returned, you can remove this statement. z := sub(z, lt(div(x, z), z)) } } // Mul Div /// @dev Rounded down. function mulDiv( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require(denominator != 0 && (x == 0 || (x * y) / x == y)) if iszero(and(iszero(iszero(denominator)), or(iszero(x), eq(div(z, x), y)))) { revert(0, 0) } // Divide z by the denominator. z := div(z, denominator) } } /// @dev Rounded down. /// This function assumes that `x` is not zero, and must be checked externally. /// Reverts if x is zero. function mulDivUnsafeFirst( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require(denominator != 0 && (x * y) / x == y) if iszero(and(iszero(iszero(denominator)), eq(div(z, x), y))) { revert(0, 0) } // Divide z by the denominator. z := div(z, denominator) } } /// @dev Rounded down. /// This function assumes that `denominator` is not zero, and must be checked externally. /// This allows x to be zero. function mulDivUnsafeLast( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require(x == 0 || (x * y) / x == y) if iszero(or(iszero(x), eq(div(z, x), y))) { revert(0, 0) } // Divide z by the denominator. z := div(z, denominator) } } /// @dev Rounded down. /// This function assumes that both `x` and `denominator` are not zero, and must be checked externally. /// Reverts if x is zero. function mulDivUnsafeFirstLast( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require((x * y) / x == y) if iszero(eq(div(z, x), y)) { revert(0, 0) } // Divide z by the denominator. z := div(z, denominator) } } // Mul /// @dev Optimized safe multiplication operation for minimal gas cost. /// Equivalent to * function mul( uint256 x, uint256 y ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require(x == 0 || (x * y) / x == y) if iszero(or(iszero(x), eq(div(z, x), y))) { revert(0, 0) } } } /// @dev Optimized unsafe multiplication operation for minimal gas cost. /// This function assumes that `x` is not zero, and must be checked externally. /// Reverts if x is zero. function mulUnsafeFirst( uint256 x, uint256 y ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require((x * y) / x == y) if iszero(eq(div(z, x), y)) { revert(0, 0) } } } function mulUnsafe( uint256 x, uint256 y ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) } } // Div /// @dev Optimized safe division operation for minimal gas cost. /// Equivalent to / function div( uint256 x, uint256 y ) internal pure returns (uint256 z) { assembly { // Store x / y in z for now. z := div(x, y) // Equivalent to require(y != 0) if iszero(y) { revert(0, 0) } } } /// @dev Optimized unsafe division operation for minimal gas cost. /// Division by 0 will not reverts and returns 0, and must be checked externally. function divUnsafeLast( uint256 x, uint256 y ) internal pure returns (uint256 z) { assembly { z := div(x, y) } } } // File contracts/libraries/MetadataHelper.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; library MetadataHelper { /** * @dev Returns symbol of the token. * * @param token The address of a ERC20 token. * * Return boolean indicating the status and the symbol as string; * * NOTE: Symbol is not the standard interface and some tokens may not support it. * Calling against these tokens will not success, with an empty result. */ function getSymbol(address token) internal view returns (bool, string memory) { // bytes4(keccak256(bytes("symbol()"))) (bool success, bytes memory returndata) = token.staticcall(abi.encodeWithSelector(0x95d89b41)); if (success) { return (true, abi.decode(returndata, (string))); } else { return (false, ""); } } } // File contracts/libraries/TransferHelper.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; /// @dev The ETH transfer has failed. error ETHTransferFailed(); /// @dev The ERC20 `transferFrom` has failed. error TransferFromFailed(); /// @dev The ERC20 `transfer` has failed. error TransferFailed(); /// @dev The ERC20 `approve` has failed. error ApproveFailed(); /// @dev Helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true / false. library TransferHelper { function safeApprove( address token, address to, uint value ) internal { // bytes4(keccak256(bytes("approve(address,uint256)"))); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); if (!success || (data.length != 0 && !abi.decode(data, (bool)))) { revert ApproveFailed(); } } function safeTransfer( address token, address to, uint value ) internal { // bytes4(keccak256(bytes("transfer(address,uint256)"))); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); if (!success || (data.length != 0 && !abi.decode(data, (bool)))) { revert TransferFailed(); } } function safeTransferFrom( address token, address from, address to, uint value ) internal { // bytes4(keccak256(bytes("transferFrom(address,address,uint256)"))); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); if (!success || (data.length != 0 && !abi.decode(data, (bool)))) { revert TransferFromFailed(); } } function safeTransferETH(address to, uint value) internal { // solhint-disable-next-line avoid-low-level-calls (bool success, ) = to.call{value: value}(""); if (!success) { revert ETHTransferFailed(); } } } // File contracts/libraries/ReentrancyGuard.sol // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { /// @dev Public to allow external contracts to read the status. uint256 public reentrantStatus = 1; /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(reentrantStatus == 1); // Any calls to nonReentrant after this point will fail reentrantStatus = 2; _; reentrantStatus = 1; } } // File contracts/pool/PoolFlashLoans.sol // Original license: SPDX_License_Identifier: GPL-3.0-or-later pragma solidity ^0.8.0; /** * @dev Handles Flash Loans through the Pool. */ abstract contract PoolFlashLoans is IPoolFlashLoan, ReentrancyGuard { uint private constant FLASH_LOAN_FEE = 5e15; // 0.5% bytes32 private constant ERC3156_CALLBACK_SUCCESS = keccak256("ERC3156FlashBorrower.onFlashLoan"); /** * @dev Returns the protocol fee amount to charge for a flash loan of `amount`. */ function _calculateFlashLoanFeeAmount(uint amount) private pure returns (uint) { return amount * FLASH_LOAN_FEE / 1e18; } function _payFeeAmount(address token, uint amount) private { if (amount != 0) { address _feeRecipient = _getFeeRecipient(); if (_feeRecipient != address(0)) { TransferHelper.safeTransfer(token, _feeRecipient, amount); IFeeRecipient(_feeRecipient).notifyFees(10, token, amount, FLASH_LOAN_FEE, abi.encode(2)); } } } function _getFeeRecipient() internal virtual view returns (address) {} // EIP-3156 Implementations /** * @dev The amount of currency available to be lent. * @param token The loan currency. * @return The amount of `token` that can be borrowed. */ function maxFlashLoan(address token) external view override returns (uint256) { return IERC20(token).balanceOf(address(this)); } /** * @dev The fee to be charged for a given loan. * @param amount The amount of tokens lent. * @return The amount of `token` to be charged for the loan, on top of the returned principal. */ function flashFee(address /*token*/, uint256 amount) external pure override returns (uint256) { return _calculateFlashLoanFeeAmount(amount); } /** * @dev Initiate a flash loan. * @param receiver The receiver of the tokens in the loan, and the receiver of the callback. * @param token The loan currency. * @param amount The amount of tokens lent. * @param userData Arbitrary data structure, intended to contain user-defined parameters. */ function flashLoan( IERC3156FlashBorrower receiver, address token, uint amount, bytes memory userData ) external override nonReentrant returns (bool) { uint preLoanBalance = IERC20(token).balanceOf(address(this)); uint feeAmount = _calculateFlashLoanFeeAmount(amount); require(preLoanBalance >= amount, "INSUFFICIENT_FLASH_LOAN_BALANCE"); TransferHelper.safeTransfer(token, address(receiver), amount); require( receiver.onFlashLoan(msg.sender, token, amount, feeAmount, userData) == ERC3156_CALLBACK_SUCCESS, "IERC3156_CALLBACK_FAILED" ); // Checking for loan repayment first (without accounting for fees) makes for simpler debugging, and results // in more accurate revert reasons if the flash loan protocol fee percentage is zero. uint postLoanBalance = IERC20(token).balanceOf(address(this)); require(postLoanBalance >= preLoanBalance, "INVALID_POST_LOAN_BALANCE"); // No need for checked arithmetic since we know the loan was fully repaid. uint receivedFeeAmount = postLoanBalance - preLoanBalance; require(receivedFeeAmount >= feeAmount, "INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT"); _payFeeAmount(token, receivedFeeAmount); emit FlashLoan(address(receiver), token, amount, receivedFeeAmount); return true; } } // File contracts/pool/classic/SyncSwapClassicPool.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; //import "../../libraries/ReentrancyGuard.sol"; error Overflow(); error InsufficientLiquidityMinted(); contract SyncSwapClassicPool is IClassicPoolV2, ERC20Permit2, PoolFlashLoans { using Math for uint; uint private constant MINIMUM_LIQUIDITY = 1000; uint private constant MAX_FEE = 1e5; /// @dev 100%. address private immutable wETH; uint public constant override poolVersion = 2; /// @dev Pool type `1` for classic pools. uint16 public constant override poolType = 1; address public immutable override vault; address public immutable override master; address public immutable override token0; address public immutable override token1; /// @dev Pool reserve of each pool token as of immediately after the most recent balance event. /// The value is used to measure growth in invariant on mints and input tokens on swaps. uint128 private reserve0_; uint128 private reserve1_; function reserve0() external view override returns (uint _reserve0) { _reserve0 = reserve0_; } function reserve1() external view override returns (uint _reserve1) { _reserve1 = reserve1_; } /// @dev Invariant of the pool as of immediately after the most recent liquidity event. /// The value is used to measure growth in invariant when protocol fee is enabled, /// and will be reset to zero if protocol fee is disabled. uint public override invariantLast; receive() external payable {} /// @dev Factory must ensures that the parameters are valid. constructor() { (bytes memory _deployData) = IPoolFactory(msg.sender).getDeployData(); (address _token0, address _token1) = abi.decode(_deployData, (address, address)); address _master = IPoolFactory(msg.sender).master(); master = _master; wETH = IPoolMaster(_master).wETH(); vault = IPoolMaster(_master).vault(); (token0, token1) = (_token0, _token1); // try to set symbols for the LP token (bool _success0, string memory _symbol0) = MetadataHelper.getSymbol(_token0); (bool _success1, string memory _symbol1) = MetadataHelper.getSymbol(_token1); if (_success0 && _success1) { _initialize( string(abi.encodePacked("SyncSwap Classic LP")), string(abi.encodePacked(_symbol0, "/", _symbol1, "-C")) ); } else { _initialize("SLP", "SLP"); } } function getAssets() external view override returns (address[] memory assets) { assets = new address[](2); assets[0] = token0; assets[1] = token1; } /// @dev Returns the verified sender address otherwise `address(0)`. function _getVerifiedSender(address _sender) private view returns (address) { if (_sender != msg.sender) { // The sender from non-forwarder is invalid. try IPoolMaster(master).isForwarder(msg.sender) returns (bool _isTrustedForwarder) { return _isTrustedForwarder ? _sender : msg.sender; } catch { return msg.sender; } } return msg.sender; } /// @dev Mints LP tokens - should be called via the router after transferring pool tokens. /// The router should ensure that sufficient LP tokens are minted. function mint( bytes calldata _data, address _sender, address _callback, bytes calldata _callbackData ) external override nonReentrant returns (uint) { ICallback.BaseMintCallbackParams memory params; (params.to) = abi.decode(_data, (address)); (params.reserve0, params.reserve1) = getReserves(); (params.balance0, params.balance1) = _balances(); params.newInvariant = _computeInvariant(params.balance0, params.balance1); params.amount0 = params.balance0 - params.reserve0; params.amount1 = params.balance1 - params.reserve1; // Gets swap fee for the sender. _sender = _getVerifiedSender(_sender); uint _amount1Optimal = params.reserve0 == 0 ? 0 : Math.mulDivUnsafeLast(params.amount0, params.reserve1, params.reserve0); bool _swap0For1 = params.amount1 < _amount1Optimal; if (_swap0For1) { params.swapFee = _getSwapFee(_sender, token0, token1); } else { params.swapFee = _getSwapFee(_sender, token1, token0); } // Adds mint fee to reserves (applies to invariant increase) if unbalanced. (params.fee0, params.fee1) = _unbalancedMintFee(params.swapFee, params.amount0, params.amount1, _amount1Optimal, params.reserve0, params.reserve1); params.reserve0 += params.fee0; params.reserve1 += params.fee1; emit Fee(params.fee0, params.fee1); // Calculates old invariant (where unbalanced fee added to) and, mint protocol fee if any. params.oldInvariant = _computeInvariant(params.reserve0, params.reserve1); bool _feeOn; (_feeOn, params.totalSupply) = _mintProtocolFee(0, 0, params.oldInvariant); if (params.totalSupply == 0) { params.liquidity = params.newInvariant - MINIMUM_LIQUIDITY; _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock on first mint. } else { // Calculates liquidity proportional to invariant growth. params.liquidity = Math.mulDivUnsafeFirst(params.totalSupply, params.newInvariant - params.oldInvariant, params.oldInvariant); } // Mints liquidity for recipient. if (params.liquidity == 0) { revert InsufficientLiquidityMinted(); } _mint(params.to, params.liquidity); // Updates reserves and last invariant with new balances. _updateReserves(params.balance0, params.balance1); if (_feeOn) { invariantLast = params.newInvariant; } // Calls callback with data. if (_callback != address(0)) { // Fills additional values for callback params. params.sender = _sender; params.callbackData = _callbackData; ICallback(_callback).syncSwapBaseMintCallback(params); } emit Mint(msg.sender, params.amount0, params.amount1, params.liquidity, params.to); return params.liquidity; } /// @dev Burns LP tokens sent to this contract. /// The router should ensure that sufficient pool tokens are received. function burn( bytes calldata _data, address _sender, address _callback, bytes calldata _callbackData ) external override nonReentrant returns (TokenAmount[] memory _amounts) { ICallback.BaseBurnCallbackParams memory params; (params.to, params.withdrawMode) = abi.decode(_data, (address, uint8)); (params.balance0, params.balance1) = _balances(); params.liquidity = balanceOf[address(this)]; // Mints protocol fee if any. bool _feeOn; (_feeOn, params.totalSupply) = _mintProtocolFee(params.balance0, params.balance1, 0); // Calculates amounts of pool tokens proportional to balances. // require(params.liquidity != 0); params.amount0 = Math.mulDivUnsafeFirstLast(params.liquidity, params.balance0, params.totalSupply); params.amount1 = Math.mulDivUnsafeFirstLast(params.liquidity, params.balance1, params.totalSupply); // Burns liquidity. _burn(address(this), params.liquidity); // Updates balances. /// @dev Cannot underflow because amounts are lesser figures derived from balances. unchecked { params.balance0 -= params.amount0; params.balance1 -= params.amount1; } // Updates reserves and last invariant with up-to-date balances (after transfers). _updateReserves(params.balance0, params.balance1); if (_feeOn) { invariantLast = _computeInvariant(params.balance0, params.balance1); } // Transfers pool tokens. _transferTokens(token0, params.to, params.amount0, params.withdrawMode); _transferTokens(token1, params.to, params.amount1, params.withdrawMode); // Calls callback with data. if (_callback != address(0)) { // Fills additional values for callback params. params.sender = _getVerifiedSender(_sender); params.callbackData = _callbackData; ICallback(_callback).syncSwapBaseBurnCallback(params); } _amounts = new TokenAmount[](2); _amounts[0] = TokenAmount(token0, params.amount0); _amounts[1] = TokenAmount(token1, params.amount1); emit Burn(msg.sender, params.amount0, params.amount1, params.liquidity, params.to); } /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another /// - i.e., the user gets a single token out by burning LP tokens. /// The router should ensure that sufficient pool tokens are received. function burnSingle( bytes calldata _data, address _sender, address _callback, bytes calldata _callbackData ) external override nonReentrant returns (TokenAmount memory _tokenAmount) { ICallback.BaseBurnSingleCallbackParams memory params; (params.tokenOut, params.to, params.withdrawMode) = abi.decode(_data, (address, address, uint8)); (params.balance0, params.balance1) = _balances(); params.liquidity = balanceOf[address(this)]; // Mints protocol fee if any. bool _feeOn; (_feeOn, params.totalSupply) = _mintProtocolFee(params.balance0, params.balance1, 0); // Calculates amounts of pool tokens proportional to balances. require(params.liquidity != 0); params.amount0 = Math.mulDivUnsafeFirstLast(params.liquidity, params.balance0, params.totalSupply); params.amount1 = Math.mulDivUnsafeFirstLast(params.liquidity, params.balance1, params.totalSupply); // Burns liquidity. _burn(address(this), params.liquidity); // Gets swap fee for the sender. _sender = _getVerifiedSender(_sender); // Swaps one token for another, transfers desired tokens, and update context values. /// @dev Calculate `amountOut` as if the user first withdraw balanced liquidity and then swapped from one token for another. if (params.tokenOut == token1) { // Swaps `token0` for `token1`. params.swapFee = _getSwapFee(_sender, token0, token1); params.tokenIn = token0; (params.amountSwapped, params.feeIn) = _getAmountOut( params.swapFee, params.amount0, params.balance0 - params.amount0, params.balance1 - params.amount1, true ); params.amount1 += params.amountSwapped; params.amountOut = params.amount1; params.amount0 = 0; params.balance1 -= params.amount1; emit Fee(params.feeIn, 0); } else { // Swaps `token1` for `token0`. require(params.tokenOut == token0); params.swapFee = _getSwapFee(_sender, token1, token0); params.tokenIn = token1; (params.amountSwapped, params.feeIn) = _getAmountOut( params.swapFee, params.amount1, params.balance0 - params.amount0, params.balance1 - params.amount1, false ); params.amount0 += params.amountSwapped; params.amountOut = params.amount0; params.amount1 = 0; params.balance0 -= params.amount0; emit Fee(0, params.feeIn); } require(params.amountOut != 0); // Updates reserves and last invariant with up-to-date balances (updated above). _updateReserves(params.balance0, params.balance1); if (_feeOn) { invariantLast = _computeInvariant(params.balance0, params.balance1); } // Transfers output tokens. _transferTokens(params.tokenOut, params.to, params.amountOut, params.withdrawMode); // Calls callback with data. if (_callback != address(0)) { // Fills additional values for callback params. params.sender = _sender; params.callbackData = _callbackData; /// @dev Note the `tokenOut` parameter can be decided by the caller, and the correctness is not guaranteed. /// Additional checks MUST be performed in callback to ensure the `tokenOut` is one of the pools tokens if the sender /// is not a trusted source to avoid potential issues. ICallback(_callback).syncSwapBaseBurnSingleCallback(params); } _tokenAmount = TokenAmount(params.tokenOut, params.amountOut); emit Burn(msg.sender, params.amount0, params.amount1, params.liquidity, params.to); } /// @dev Swaps one token for another - should be called via the router after transferring input tokens. /// The router should ensure that sufficient output tokens are received. function swap( bytes calldata _data, address _sender, address _callback, bytes calldata _callbackData ) external override nonReentrant returns (TokenAmount memory _tokenAmount) { ICallback.BaseSwapCallbackParams memory params; (params.tokenIn, params.to, params.withdrawMode) = abi.decode(_data, (address, address, uint8)); (params.reserve0, params.reserve1) = getReserves(); (params.balance0, params.balance1) = _balances(); // Gets swap fee for the sender. _sender = _getVerifiedSender(_sender); // Calculates output amount, update context values and emit event. if (params.tokenIn == token0) { params.swapFee = _getSwapFee(_sender, token0, token1); params.tokenOut = token1; params.amountIn = params.balance0 - params.reserve0; (params.amountOut, params.feeIn) = _getAmountOut( params.swapFee, params.amountIn, params.reserve0, params.reserve1, true ); params.balance1 -= params.amountOut; emit Swap(msg.sender, params.amountIn, 0, 0, params.amountOut, params.to); emit Fee(params.feeIn, 0); } else { require(params.tokenIn == token1); params.swapFee = _getSwapFee(_sender, token1, token0); params.tokenOut = token0; params.amountIn = params.balance1 - params.reserve1; (params.amountOut, params.feeIn) = _getAmountOut( params.swapFee, params.amountIn, params.reserve0, params.reserve1, false ); params.balance0 -= params.amountOut; emit Swap(msg.sender, 0, params.amountIn, params.amountOut, 0, params.to); emit Fee(0, params.feeIn); } require(params.amountIn != 0 && params.amountOut != 0); // Updates reserves with up-to-date balances (updated above). _updateReserves(params.balance0, params.balance1); // Transfers output tokens. _transferTokens(params.tokenOut, params.to, params.amountOut, params.withdrawMode); // Calls callback with data. if (_callback != address(0)) { // Fills additional values for callback params. params.sender = _sender; params.callbackData = _callbackData; ICallback(_callback).syncSwapBaseSwapCallback(params); } _tokenAmount.token = params.tokenOut; _tokenAmount.amount = params.amountOut; emit Swapped( msg.sender, _sender, params.tokenOut, params.amountIn, params.amountOut, params.swapFee, params.to ); } function _getSwapFee(address _sender, address _tokenIn, address _tokenOut) private view returns (uint24 _swapFee) { _swapFee = getSwapFee(_sender, _tokenIn, _tokenOut, abi.encode(msg.sender)); } /// @dev This function doesn't check the forwarder. function getSwapFee(address _sender, address _tokenIn, address _tokenOut, bytes memory data) public view override returns (uint24) { try IPoolMaster(master).getSwapFee(address(this), _sender, _tokenIn, _tokenOut, data) returns (uint24 _swapFee) { return _swapFee; } catch { return 290; // 0.29% } //_swapFee = IPoolMaster(master).getSwapFee(address(this), _sender, _tokenIn, _tokenOut, data); } function getProtocolFee() public view override returns (uint24) { try IPoolMaster(master).getProtocolFee(address(this)) returns (uint24 _protocolFee) { return _protocolFee; } catch { return 30000; // 30% } //_protocolFee = IPoolMaster(master).getProtocolFee(address(this)); } function _updateReserves(uint _balance0, uint _balance1) private { if (_balance0 > type(uint128).max) { revert Overflow(); } if (_balance1 > type(uint128).max) { revert Overflow(); } (reserve0_, reserve1_) = (uint128(_balance0), uint128(_balance1)); emit Sync(_balance0, _balance1); } function _transferTokens(address token, address to, uint amount, uint8 withdrawMode) private { //TransferHelper.safeTransfer(token, to, amount); if (withdrawMode == 0) { TransferHelper.safeTransfer(token, vault, amount); IVault(vault).deposit(token, to); } else { if (withdrawMode == 1 && token == wETH) { IWETH(wETH).withdraw(amount); TransferHelper.safeTransferETH(to, amount); } else { TransferHelper.safeTransfer(token, to, amount); } } } function _balances() private view returns (uint _balance0, uint _balance1) { _balance0 = IERC20(token0).balanceOf(address(this)); _balance1 = IERC20(token1).balanceOf(address(this)); } /// @dev This fee is charged to cover for the swap fee when users adding unbalanced liquidity. function _unbalancedMintFee( uint _swapFee, uint _amount0, uint _amount1, uint _amount1Optimal, uint _reserve0, uint _reserve1 ) private pure returns (uint _token0Fee, uint _token1Fee) { if (_reserve0 != 0) { if (_amount1 >= _amount1Optimal) { unchecked { _token1Fee = Math.mulDivUnsafeLast(_swapFee, _amount1 - _amount1Optimal, MAX_FEE); } } else { uint _amount0Optimal = Math.mulDivUnsafeLast(_amount1, _reserve0, _reserve1); _token0Fee = Math.mulDivUnsafeLast(_swapFee, _amount0 - _amount0Optimal, MAX_FEE); } } } function _getFeeRecipient() internal view override returns (address) { try IPoolMaster(master).getFeeRecipient() returns (address _feeRecipient) { return _feeRecipient; } catch { return address(0); } } function _mintProtocolFee(uint _reserve0, uint _reserve1, uint _invariant) private returns (bool _feeOn, uint _totalSupply) { _totalSupply = totalSupply; address _feeRecipient = _getFeeRecipient(); _feeOn = (_feeRecipient != address(0)); uint _invariantLast = invariantLast; if (_invariantLast != 0) { if (_feeOn) { if (_invariant == 0) { _invariant = _computeInvariant(_reserve0, _reserve1); } if (_invariant > _invariantLast) { /// @dev Mints `protocolFee` % of growth in liquidity (invariant). uint24 _protocolFee = getProtocolFee(); uint _numerator = _totalSupply * (_invariant - _invariantLast) * _protocolFee; uint _denominator = (MAX_FEE - _protocolFee) * _invariant + _protocolFee * _invariantLast; uint _liquidity = _numerator / _denominator; if (_liquidity != 0) { _mint(_feeRecipient, _liquidity); // Notifies the fee recipient. try IFeeRecipient(_feeRecipient).notifyFees(1, address(this), _liquidity, _protocolFee, abi.encode(2)) {} catch {} _totalSupply += _liquidity; // update cached value. emit MintProtocolFee(_feeRecipient, _protocolFee, _liquidity, _totalSupply); } } } else { /// @dev Resets last invariant to clear measured growth if protocol fee is not enabled. invariantLast = 0; } } } function getReserves() public view override returns (uint _reserve0, uint _reserve1) { (_reserve0, _reserve1) = (reserve0_, reserve1_); } function getAmountOut(address _tokenIn, uint _amountIn, address _sender) external view override returns (uint _amountOut) { (uint _reserve0, uint _reserve1) = getReserves(); bool _swap0For1 = _tokenIn == token0; address _tokenOut = _swap0For1 ? token1 : token0; (_amountOut,) = _getAmountOut(_getSwapFee(_sender, _tokenIn, _tokenOut), _amountIn, _reserve0, _reserve1, _swap0For1); } function getAmountIn(address, uint, address) external pure override returns (uint) { revert(); } function _getAmountOut( uint _swapFee, uint _amountIn, uint _reserve0, uint _reserve1, bool _token0In ) private pure returns (uint _dy, uint _feeIn) { if (_amountIn != 0) { uint _amountInWithFee = Math.mulUnsafeFirst(_amountIn, MAX_FEE - _swapFee); _feeIn = Math.mulDivUnsafeFirstLast(_amountIn, _swapFee, MAX_FEE); if (_token0In) { _dy = Math.mulDiv(_amountInWithFee, _reserve1, Math.mulUnsafeFirst(MAX_FEE, _reserve0) + _amountInWithFee); } else { _dy = Math.mulDiv(_amountInWithFee, _reserve0, Math.mulUnsafeFirst(MAX_FEE, _reserve1) + _amountInWithFee); } } } function _computeInvariant(uint _reserve0, uint _reserve1) private pure returns (uint _invariant) { _invariant = (_reserve0 * _reserve1).sqrt(); } modifier onlyGovernance { require(IOwnable(master).owner() == msg.sender); _; } // force reserves to match balances function sync() external nonReentrant onlyGovernance { (uint _balance0, uint _balance1) = _balances(); _updateReserves(_balance0, _balance1); } // force balances to match reserves function skim(address to) external nonReentrant onlyGovernance { TransferHelper.safeTransfer(token0, to, IERC20(token0).balanceOf(address(this)) - reserve0_); TransferHelper.safeTransfer(token1, to, IERC20(token1).balanceOf(address(this)) - reserve1_); } } // File contracts/pool/classic/SyncSwapClassicPoolFactory.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; contract SyncSwapClassicPoolFactory is BasePoolFactory { constructor(address _master) BasePoolFactory(_master) { } function _createPool(address token0, address token1) internal override returns (address pool) { // Perform sanity checks. // IERC20(token0).balanceOf(address(this)); // IERC20(token1).balanceOf(address(this)); bytes memory deployData = abi.encode(token0, token1); cachedDeployData = deployData; // The salt is same with deployment data. bytes32 salt = keccak256(deployData); pool = address(new SyncSwapClassicPool{salt: salt}()); // this will prevent duplicated pools. // Register the pool. The config is same with deployment data. IPoolMaster(master).registerPool(pool, 1, deployData, token0, token1); } }
{ "viaIR": true, "optimizer": { "enabled": true, "mode": "3" }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "isSystem": false, "forceEvmla": false }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ETHTransferFailed","type":"error"},{"inputs":[],"name":"Expired","type":"error"},{"inputs":[],"name":"InsufficientLiquidityMinted","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"Overflow","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Fee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"FlashLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeRecipient","type":"address"},{"indexed":false,"internalType":"uint24","name":"protocolFee","type":"uint24"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"MintProtocolFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"},{"indexed":false,"internalType":"uint24","name":"swapFee","type":"uint24"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"Swapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reserve0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reserve1","type":"uint256"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_callback","type":"address"},{"internalType":"bytes","name":"_callbackData","type":"bytes"}],"name":"burn","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPool.TokenAmount[]","name":"_amounts","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_callback","type":"address"},{"internalType":"bytes","name":"_callbackData","type":"bytes"}],"name":"burnSingle","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPool.TokenAmount","name":"_tokenAmount","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"uint256","name":"_amountIn","type":"uint256"},{"internalType":"address","name":"_sender","type":"address"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"_amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAssets","outputs":[{"internalType":"address[]","name":"assets","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint256","name":"_reserve0","type":"uint256"},{"internalType":"uint256","name":"_reserve1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"address","name":"_tokenOut","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"getSwapFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"invariantLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"master","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_callback","type":"address"},{"internalType":"bytes","name":"_callbackData","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"permit2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"poolType","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reentrantStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserve0","outputs":[{"internalType":"uint256","name":"_reserve0","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserve1","outputs":[{"internalType":"uint256","name":"_reserve1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_callback","type":"address"},{"internalType":"bytes","name":"_callbackData","type":"bytes"}],"name":"swap","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPool.TokenAmount","name":"_tokenAmount","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
13b8683f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000072af9f169b619d85a47dfa8fefbcd39de55c567d0000000000000000000000009aa0f72392b5784ad86c6f3e899bcc053d00db4f
Deployed Bytecode
0x00040000000000020019000000000002000000600310027000000adc0030019d00000adc0430019700030000004103550002000000010355000000000341034f0000000100200190000000250000c13d0000008002000039000000400020043f000000040040008c000000370000413d000000000201043b000000e00220027000000aef0020009c0000006a0000a13d00000af00020009c000000cd0000213d00000afe0020009c0000017e0000213d00000b050020009c000002500000a13d00000b060020009c0000078a0000613d00000b070020009c000006ee0000613d00000b080020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d00000000010400192b6a23670000040f000000000100001900002b6c000104300000014008000039000000400080043f0000000001000416000000000001004b00000e910000c13d0000001201000039000000800010043f00000001010000390000000802000039000000000012041b00000add01000041000001400010043f0000000001000414000000000b0004110000000400b0008c0000003b0000c13d00000001040000310000004a0000013d000000000004004b00000e910000c13d000000000100001900002b6b0001042e00000adc0010009c00000adc01008041000000c00110021000000ade011001c700000000020b00192b6a2b650000040f000000000301034f000000600110027000010adc0010019d00000adc0410019700030000000303550000000100200190000000ef0000613d000000000b000411000001400800003900000b7c024001980000001f0540018f0000014001200039000000530000613d000000000603034f000000006706043c0000000008780436000000000018004b0000004f0000c13d000000000005004b000000600000613d000000000223034f0000000303500210000000000501043300000000053501cf000000000535022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000252019f00000000002104350000001f0140003900000b7c0110019700000ae00010009c0000007f0000413d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c0001043000000b0b0020009c0000010d0000a13d00000b0c0020009c000001be0000213d00000b130020009c000004710000a13d00000b140020009c000008a10000613d00000b150020009c0000085e0000613d00000b160020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d0000000901000039000000000101041a00000b2901100197000000800010043f00000b2d0100004100002b6b0001042e0000014002100039000000400020043f00000ae10040009c00000e910000213d000000200040008c00000e910000413d000001400500043d00000ae20050009c00000e910000213d00000140064000390000015f03500039000000000063004b000000000700001900000ae30700804100000ae30860019700000ae303300197000000000983013f000000000083004b000000000300001900000ae30300404100000ae30090009c000000000307c019000000000003004b00000e910000c13d0000014003500039000000000303043300000ae20030009c000000640000213d0000001f0730003900000b7c077001970000003f0770003900000b7c07700197000000000827001900000ae20080009c000000640000213d0000016007500039000000400080043f00000000003204350000000005730019000000000065004b00000e910000213d0000016005100039000000000003004b000000b30000613d000000000600001900000000085600190000000009760019000000000909043300000000009804350000002006600039000000000036004b000000ac0000413d00000000035300190000000000030435000000000202043300000ae10020009c00000e910000213d000000400020008c00000e910000413d0000000002050433000d00000002001d00000ae40020009c00000e910000213d00000180011000390000000001010433000c00000001001d00000ae40010009c00000e910000213d000000400c00043d00000ae50100004100000000001c043500000000010004140000000400b0008c00000a1c0000c13d000000200040008c0000002003000039000000000304401900000a490000013d00000af10020009c000001910000213d00000af80020009c000002640000a13d00000af90020009c000007ab0000613d00000afa0020009c000007020000613d00000afb0020009c00000e910000c13d000000440040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b00000ae40020009c00000e910000213d0000002401100370000000000101043b000d00000001001d00000ae40010009c00000e910000213d000000000020043f0000000201000039000000200010043f000000400200003900000000010000192b6a2b2d0000040f0000000d020000292b6a23570000040f000000000101041a000008620000013d0000001f0540018f00000adf06400198000000400100043d0000000002610019000000fa0000613d000000000703034f0000000008010019000000007907043c0000000008980436000000000028004b000000f60000c13d000000000005004b000001070000613d000000000363034f0000000305500210000000000602043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f0000000000320435000000600240021000000adc0010009c00000adc010080410000004001100210000000000121019f00002b6c0001043000000b190020009c000001d20000a13d00000b1a0020009c0000045e0000a13d00000b1b0020009c000008900000613d00000b1c0020009c000007ca0000613d00000b1d0020009c00000e910000c13d000000640040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000004401100370000000000101043b000b00000001001d0000000d01000029000000000010043f0000000201000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000200041100000ae402200197000a00000002001d000000000020043f000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000101041a00000b7d0010009c00000c060000c13d0000000d01000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000b0220006c0000028f0000413d000000000021041b0000000c01000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000b030000290000000002320019000000000021041b000000400100043d000000000031043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b30040000410000000d050000290000000c06000029000009a40000013d00000aff0020009c0000026d0000a13d00000b000020009c000007b80000613d00000b010020009c000007090000613d00000b020020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d0000000001000412001300000001001d001200a00000003d000080050100003900000044030000390000000004000415000000130440008a0000089a0000013d00000af20020009c000002950000a13d00000af30020009c000007bf0000613d00000af40020009c000007350000613d00000af50020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d0000000801000039000000000101041a000000010010008c00000e910000c13d00000002010000390000000802000039000000000012041b00000b2501000041000000800010043f00000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c000009490000c13d0000000103000031000000200030008c000000200400003900000000040340190000096e0000013d00000b0d0020009c000005910000a13d00000b0e0020009c000008b20000613d00000b0f0020009c000008690000613d00000b100020009c00000e910000c13d000000240040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000401100370000000000101043b00000ae40010009c00000e910000213d000000000010043f00000001010000390000025f0000013d00000b200020009c000004520000213d00000b230020009c000006bd0000613d00000b240020009c00000e910000c13d000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000502043b00000ae20050009c00000e910000213d0000002302500039000000000042004b00000e910000813d0000000402500039000000000321034f000000000303043b00000ae20030009c00000e910000213d00000000053500190000002405500039000000000045004b00000e910000213d0000002405100370000000000505043b000d00000005001d00000ae40050009c00000e910000213d0000004405100370000000000505043b000c00000005001d00000ae40050009c00000e910000213d0000006405100370000000000505043b00000ae20050009c00000e910000213d0000002306500039000000000046004b00000e910000813d0000000406500039000000000661034f000000000606043b000b00000006001d00000ae20060009c00000e910000213d0000002406500039000a00000006001d0009000b0060002d000000090040006b00000e910000213d0000000804000039000000000404041a000000010040008c00000e910000c13d00000002050000390000000804000039000000000054041b0000028004000039000000400040043f000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f000001800000043f000001a00000043f000001c00000043f000001e00000043f000002000000043f000002200000043f000002400000043f0000006004000039000002600040043f000000200030008c00000e910000413d0000002002200039000000000121034f000000000101043b00000ae40010009c00000e910000213d000000a00010043f0000000901000039000000000101041a0000008002100270000000e00020043f00000b2901100197000000c00010043f00000b4901000041000002800010043f000000000100041000000ae401100197000800000001001d000002840010043f00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c00000e650000c13d0000000103000031000000200030008c0000002004000039000000000403401900000e8a0000013d00000b090020009c000005f40000613d00000b0a0020009c00000e910000c13d000000240040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000401100370000000000101043b00000ae40010009c00000e910000213d000000000010043f0000000301000039000000200010043f000000400200003900000000010000192b6a2b2d0000040f0000045a0000013d00000afc0020009c0000067c0000613d00000afd0020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d00000008010000390000045a0000013d00000b030020009c000006ac0000613d00000b040020009c00000e910000c13d000000440040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002401100370000000000101043b000c00000001001d0000000001000411000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000c0220006c000009810000813d00000b5801000041000000000010043f0000001101000039000000040010043f00000b4a0100004100002b6c0001043000000af60020009c000006b20000613d00000af70020009c00000e910000c13d000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000502043b00000ae20050009c00000e910000213d0000002302500039000000000042004b00000e910000813d0000000402500039000000000321034f000000000303043b00000ae20030009c00000e910000213d00000000053500190000002405500039000000000045004b00000e910000213d0000002405100370000000000505043b000d00000005001d00000ae40050009c00000e910000213d0000004405100370000000000505043b000c00000005001d00000ae40050009c00000e910000213d0000006405100370000000000505043b00000ae20050009c00000e910000213d0000002306500039000000000046004b00000e910000813d0000000406500039000000000661034f000000000606043b000a00000006001d00000ae20060009c00000e910000213d0000002406500039000800000006001d0009000a0060002d000000090040006b00000e910000213d0000000804000039000000000404041a000000010040008c00000e910000c13d00000002050000390000000804000039000000000054041b000001c004000039000000400040043f000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f000001800000043f0000006004000039000001a00040043f000000400030008c00000e910000413d0000002003200039000000000231034f000000000202043b00000ae40020009c00000e910000213d0000002003300039000000000131034f000000000101043b000000ff0010008c00000e910000213d000001800010043f000000a00020043f2b6a250e0000040f000000e00020043f000000c00010043f000000000100041000000ae401100197000700000001001d000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000101041a000001000010043f000000e00200043d000000c00100043d2b6a26720000040f000600000001001d000001200020043f000000c00300043d000001000400043d00000000014300a9000b00000004001d000000000004004b00000000040000190000000b0400c029000000000441c0d9000000000034004b00000e910000c13d000000000002004b0000000003000019000000000321c0d9000001400030043f000000e00300043d0000000b013000b90000000b0000006b00000000040000190000000b0400c029000000000441c0d9000000000034004b00000e910000c13d000000000002004b0000000003000019000000000321c0d9000001600030043f0000000701000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000b0220006c0000028f0000413d000000000021041b000000000100041a0000000b020000290000000001210049000000000010041b000000400100043d000000000021043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000070500002900000000060000192b6a2b600000040f000000010020019000000e910000613d000001400100043d000000c00200043d0000000001120049000000c00010043f000001600200043d000000e00300043d0000000002230049000000e00020043f00000b290010009c00001a0b0000213d00000b290020009c00001a0b0000213d0000008003200210000000000313019f0000000904000039000000000034041b000000400300043d00000020043000390000000000240435000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d020000390000000103000039000b00000003001d00000b31040000412b6a2b600000040f000000010020019000000e910000613d000000060000006b000003ab0000613d000000e00200043d000000c00300043d00000000013200a9000000000003004b000003770000613d00000000033100d9000000000023004b0000028f0000c13d00000b320010009c00000000020000390000008002002039000000000321022f00000b330030009c00000040022021bf000000000321022f00000b340030009c00000020022021bf000000000321022f00000b2a0030009c00000010022021bf000000000321022f00000b350330009a0000000102200270000000b50220020f00000000023200a900000012022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000023004b000000010220408a0000000a01000039000000000021041b00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000001400300043d000001800400043d000000a00200043d00000ae402200197000000ff0440018f000700000001001d2b6a281f0000040f00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000001600300043d000001800400043d000000a00200043d00000ae402200197000000ff0440018f000600000001001d2b6a281f0000040f0000000c0000006b000015cb0000c13d000000400100043d000d00000001001d0000000d0100002900000b390010009c000000640000213d0000000d020000290000006001200039000000400010043f000000020100003900000000011204360000000003000019000000400400043d00000aea0040009c000000640000213d0000004005400039000000400050043f000000200540003900000000000504350000000003130019000000000004043500000000004304350000000b030000290000000100300190000b00000000001d0000002003000039000003e60000c13d000000400200043d00000aea0020009c000000640000213d0000004003200039000001400400043d000000400030043f00000020032000390000000000430435000000070300002900000ae40330019700000000003204350000000d030000290000000003030433000000000003004b0000088a0000613d0000000000210435000000400100043d00000aea0010009c000000640000213d0000004002100039000001600300043d000000400020043f00000020021000390000000000320435000000060200002900000ae40220019700000000002104350000000d020000290000000002020433000000020020008c0000088a0000413d0000000d0200002900000040022000390000000000120435000000400100043d0000004002100039000000a00300043d000001400400043d000001600500043d000001000600043d000000000062043500000020021000390000000000520435000000000041043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b3a011001c700000ae4063001970000800d020000390000000303000039000000000500041100000b3b040000412b6a2b600000040f000000010020019000000e910000613d00000001010000390000000802000039000000000012041b0000002002000039000000400100043d00000000032104360000000d02000029000000000202043300000000002304350000004003100039000000000002004b000004500000613d0000000004000019000000000501001900000000060300190000000d030000290000002003300039000d00000003001d0000000003030433000000007303043400000ae403300197000000000036043500000060035000390000000005070433000000000053043500000040036000390000000104400039000000000024004b0000000005060019000004400000413d0000000002130049000009110000013d00000b210020009c000006d00000613d00000b220020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d0000000a01000039000000000101041a000000800010043f00000b2d0100004100002b6b0001042e00000b1e0020009c0000077f0000613d00000b1f0020009c00000e910000c13d000000440040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b00000ae40020009c00000e910000213d0000002401100370000000000301043b00000000010004112b6a27e60000040f0000000101000039000008620000013d00000b170020009c000007d10000613d00000b180020009c00000e910000c13d000000a40040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000006402100370000000000202043b000b00000002001d0000004402100370000000000202043b000a00000002001d0000008402100370000000000202043b00000ae20020009c00000e910000213d0000002303200039000000000043004b00000e910000813d000800040020003d0000000801100360000000000101043b000900000001001d00000ae20010009c00000e910000213d0000000901200029000700240010003d000000070040006b00000e910000213d00000b3c010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b0000000b0010006c000006a40000213d0000000601000039000000000101041a000600000001001d00000b3e010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000500000001001d000000060010006c00000d7d0000c13d0000000701000039000000000101041a000500000001001d0000000d0100002900000ae401100197000600000001001d000000000010043f0000000301000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a000000010320003a0000028f0000613d000000000031041b000000400100043d000000c0031000390000000b040000290000000000430435000000a003100039000000000023043500000080021000390000000a0300002900000000003204350000000c0200002900000ae40220019700000060031000390000000000230435000000400210003900000006030000290000000000320435000000c002000039000000000221043600000b4403000041000000000032043500000b450010009c000000640000213d000000e003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000201043b000000400100043d00000042031000390000000000230435000000200210003900000b460300004100000000003204350000002203100039000000050400002900000000004304350000004203000039000000000031043500000b470010009c000000640000213d0000008003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d00000009020000290000001f0220003900000b7c022001970000003f0220003900000b7c02200197000000000101043b000400000001001d000000400300043d0000000001230019000b00000003001d000000000031004b0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f00000009010000290000000b030000290000000001130436000500000001001d0000000701000029000000000010007c00000e910000213d000000090100002900000b7c021001980000001f0310018f0000000501200029000000080400002900000020044000390000000204400367000005450000613d000000000504034f0000000506000029000000005705043c0000000006760436000000000016004b000005410000c13d000000000003004b000005520000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f00000000002104350000000502000029000000090120002900000000000104350000000b010000290000000001010433000000410010008c0000055e0000c13d0000000b010000290000004001100039000000000101043300000b680010009c0000137e0000a13d000000400200043d000000440120003900000040030000390000000000310435000000200120003900000b690300004100000000003104350000002403200039000000040400002900000000004304350000000b030000290000000003030433000000640420003900000000003404350000008404200039000000000003004b0000000508000029000005780000613d000000000500001900000000064500190000000007850019000000000707043300000000007604350000002005500039000000000035004b000005710000413d000000000443001900000000000404350000001f0330003900000b7c0330019700000064043000390000000000420435000000a30330003900000b7c043001970000000003240019000000000043004b0000000004000039000000010400403900000ae20030009c000000640000213d0000000100400190000000640000c13d000000400030043f000000000302043300000000020004140000000d04000029000000040040008c000013bf0000c13d00000001020000390000000104000031000013d10000013d00000b110020009c000008550000613d00000b120020009c00000e910000c13d000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000004402100370000000000202043b000b00000002001d0000006402100370000000000502043b00000ae20050009c00000e910000213d0000002302500039000000000042004b00000e910000813d0000000406500039000000000261034f000000000202043b00000ae20020009c000000640000213d0000001f0720003900000b7c077001970000003f0770003900000b7c0770019700000b470070009c000000640000213d00000024055000390000008007700039000000400070043f000000800020043f0000000005520019000000000045004b00000e910000213d0000002004600039000000000441034f00000b7c052001980000001f0620018f000000a001500039000005cc0000613d000000a007000039000000000804034f000000008908043c0000000007970436000000000017004b000005c80000c13d000000000006004b000005d90000613d000000000454034f0000000305600210000000000601043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000410435000000a00120003900000000000104350000000801000039000000000101041a000000010010008c00000e910000c13d00000002020000390000000801000039000000000021041b00000b4901000041000000400400043d0000000000140435000000000100041000000ae402100197000a00000004001d0000000401400039000900000002001d000000000021043500000000010004140000000c02000029000000040020008c00000c780000c13d0000000104000031000000200040008c0000002001000039000000000104401900000ca40000013d000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000502043b00000ae20050009c00000e910000213d0000002302500039000000000042004b00000e910000813d0000000402500039000000000321034f000000000303043b00000ae20030009c00000e910000213d00000000053500190000002405500039000000000045004b00000e910000213d0000002405100370000000000505043b000d00000005001d00000ae40050009c00000e910000213d0000004405100370000000000505043b000c00000005001d00000ae40050009c00000e910000213d0000006405100370000000000505043b00000ae20050009c00000e910000213d0000002306500039000000000046004b00000e910000813d0000000406500039000000000661034f000000000606043b000b00000006001d00000ae20060009c00000e910000213d0000002406500039000a00000006001d0009000b0060002d000000090040006b00000e910000213d000000c004000039000000400040043f000000800000043f000000a00000043f0000000804000039000000000404041a000000010040008c00000e910000c13d00000002040000390000000805000039000000000045041b0000028004000039000000400040043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f000001800000043f000001a00000043f000001c00000043f000001e00000043f000002000000043f000002200000043f000002400000043f0000006004000039000800000004001d000002600040043f000000600030008c00000e910000413d0000002003200039000000000231034f000000000202043b00000ae40020009c00000e910000213d0000002004300039000000000341034f000000000303043b00000ae40030009c00000e910000213d0000002004400039000000000141034f000000000101043b000000ff0010008c00000e910000213d000002400010043f000000e00030043f000001000020043f0000000901000039000000000101041a0000008002100270000001600020043f00000b2901100197000001400010043f00000b4901000041000002800010043f000000000100041000000ae401100197000700000001001d000002840010043f00000b26010000410000000000100443000000000100041200000004001004430000008001000039000600000001001d0000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c00000fc10000c13d0000000103000031000000200030008c0000002004000039000000000403401900000fe60000013d000000e40040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000006402100370000000000202043b000b00000002001d0000004402100370000000000202043b000a00000002001d0000008401100370000000000101043b000900000001001d000000ff0010008c00000e910000213d00000b3c010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b0000000b0010006c00000b2c0000a13d000000400100043d00000b6b02000041000000000021043500000adc0010009c00000adc01008041000000400110021000000ae6011001c700002b6c000104300000000001000416000000000001004b00000e910000c13d2b6a249d0000040f00000b2a01100197000008620000013d0000000001000416000000000001004b00000e910000c13d0000000001000412001100000001001d001000600000003d000080050100003900000044030000390000000004000415000000110440008a0000089a0000013d000000240040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000401100370000000000201043b00000b780020019800000e910000c13d000000010100003900000b790020009c0000089e0000613d00000b7a0020009c0000089e0000613d00000b7b0020009c000000000100c019000000800010043f00000b2d0100004100002b6b0001042e0000000001000416000000000001004b00000e910000c13d0000000403000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000390000000105002039000000000054004b000006fc0000c13d000000800010043f000000000004004b000008d80000613d000000000030043f000000000001004b0000000002000019000008dd0000613d00000b3f030000410000000002000019000000000403041a000000a005200039000000000045043500000001033000390000002002200039000000000012004b000006e60000413d000008dd0000013d0000000001000416000000000001004b00000e910000c13d0000000503000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000390000000105002039000000000552013f0000000100500190000008c70000613d00000b5801000041000000000010043f0000002201000039000000040010043f00000b4a0100004100002b6c000104300000000001000416000000000001004b00000e910000c13d0000000201000039000000800010043f00000b2d0100004100002b6b0001042e000000240040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000401100370000000000101043b000d00000001001d00000ae40010009c00000e910000213d0000000801000039000000000101041a000000010010008c00000e910000c13d00000002010000390000000802000039000000000012041b00000b2501000041000000800010043f00000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c000009bb0000c13d0000000103000031000000200030008c00000020040000390000000004034019000009e00000013d000000640040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000004402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000002401100370000000000101043b000b00000001001d0000000901000039000000000101041a000a00000001001d00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b0000000d0130014f00090ae40010019c0000076d0000c13d00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400400043d0000002001400039000000000200041100000000002104350000002001000039000000000014043500000aea0040009c000000640000213d0000004001400039000000400010043f0000000c010000290000000d020000292b6a24060000040f0000000b0000006b000000000200001900000c400000c13d000000400100043d000009a90000013d0000000001000416000000000001004b00000e910000c13d0000000901000039000000000101041a00000b2902100197000000800020043f0000008001100270000000a00010043f00000b700100004100002b6b0001042e000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000004402100370000000000202043b000b00000002001d00000ae40020009c00000e910000213d0000006401100370000000000101043b00000ae20010009c00000e910000213d000000040110003900000000020400192b6a230d0000040f00000000040100190000000d010000290000000c020000290000000b030000292b6a24060000040f000006b00000013d000000440040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b00000ae40020009c00000e910000213d0000002401100370000000000101043b2b6a2a370000040f000008620000013d0000000001000416000000000001004b00000e910000c13d0000000101000039000000800010043f00000b2d0100004100002b6b0001042e0000000001000416000000000001004b00000e910000c13d0000000001000412000f00000001001d000e00400000003d0000800501000039000000440300003900000000040004150000000f0440008a0000089a0000013d0000000001000416000000000001004b00000e910000c13d000000000100041a000000800010043f00000b2d0100004100002b6b0001042e000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000502043b00000ae20050009c00000e910000213d0000002302500039000000000042004b00000e910000813d0000000402500039000000000321034f000000000303043b00000ae20030009c00000e910000213d00000000053500190000002405500039000000000045004b00000e910000213d0000002405100370000000000505043b000d00000005001d00000ae40050009c00000e910000213d0000004405100370000000000505043b000c00000005001d00000ae40050009c00000e910000213d0000006405100370000000000505043b00000ae20050009c00000e910000213d0000002306500039000000000046004b00000e910000813d0000000406500039000000000661034f000000000606043b000b00000006001d00000ae20060009c00000e910000213d0000002406500039000a00000006001d0009000b0060002d000000090040006b00000e910000213d000000c004000039000000400040043f000000800000043f000000a00000043f0000000804000039000000000404041a000000010040008c00000e910000c13d00000002040000390000000805000039000000000045041b000002c004000039000000400040043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f000001800000043f000001a00000043f000001c00000043f000001e00000043f000002000000043f000002200000043f000002400000043f000002600000043f000002800000043f0000006004000039000800000004001d000002a00040043f000000600030008c00000e910000413d0000002003200039000000000231034f000000000202043b00000ae40020009c00000e910000213d0000002004300039000000000341034f000000000303043b00000ae40030009c00000e910000213d0000002004400039000000000141034f000000000101043b000000ff0010008c00000e910000213d000002800010043f000000e00030043f000001200020043f00000b4901000041000002c00010043f000000000100041000000ae401100197000700000001001d000002c40010043f00000b26010000410000000000100443000000000100041200000004001004430000008001000039000600000001001d0000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c0000100e0000c13d0000000103000031000000200030008c00000020040000390000000004034019000010330000013d0000000001000416000000000001004b00000e910000c13d0000000901000039000000000101041a0000008001100270000000800010043f00000b2d0100004100002b6b0001042e0000000001000416000000000001004b00000e910000c13d2b6a23770000040f000000400200043d000000000012043500000adc0020009c00000adc02008041000000400120021000000b2c011001c700002b6b0001042e0000000001000416000000000001004b00000e910000c13d000000e001000039000000400010043f0000000201000039000000800010043f000000a001000039000000003203043c0000000001210436000000e00010008c000008710000c13d00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b00000ae401100197000000a00010043f000000800100043d000000010010008c000008ee0000213d00000b5801000041000000000010043f0000003201000039000000040010043f00000b4a0100004100002b6c000104300000000001000416000000000001004b00000e910000c13d0000000001000412001700000001001d001600800000003d000080050100003900000044030000390000000004000415000000170440008a000000050440021000000b26020000412b6a2b420000040f00000ae401100197000000800010043f00000b2d0100004100002b6b0001042e0000000001000416000000000001004b00000e910000c13d0000000001000412001500000001001d001400000000003d000080050100003900000044030000390000000004000415000000150440008a000000050440021000000b26020000412b6a2b420000040f000000ff0110018f000000800010043f00000b2d0100004100002b6b0001042e000000240040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000401100370000000000201043b00000ae40020009c00000e910000213d00000b4901000041000000800010043f0000000001000410000000840010043f0000000001000414000000040020008c000009190000c13d0000000103000031000000200030008c000000200400003900000000040340190000093e0000013d000000800010043f000000000004004b000008d80000613d000000000030043f000000000001004b0000000002000019000008dd0000613d00000b4e030000410000000002000019000000000403041a000000a005200039000000000045043500000001033000390000002002200039000000000012004b000008d00000413d000008dd0000013d00000b7e02200197000000a00020043f000000000001004b00000020020000390000000002006039000000200220003900000080010000392b6a22df0000040f000000400100043d000d00000001001d00000080020000392b6a22f10000040f0000000d02000029000000000121004900000adc0010009c00000adc01008041000000600110021000000adc0020009c00000adc020080410000004002200210000000000121019f00002b6b0001042e00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b00000ae401100197000000c00010043f0000002002000039000000400100043d0000000002210436000000800300043d00000000003204350000004002100039000000000003004b000009100000613d0000000004000019000000a006000039000000006506043400000ae40550019700000000025204360000000104400039000000000034004b0000090a0000413d000000000212004900000adc0020009c00000adc02008041000000600220021000000adc0010009c00000adc010080410000004001100210000000000112019f00002b6b0001042e00000adc0010009c00000adc01008041000000c00110021000000b59011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000092d0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009290000c13d000000000006004b0000093a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000009af0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c00000e910000413d000000800200043d0000000000210435000000400110021000000b2c011001c700002b6b0001042e00000adc0010009c00000adc01008041000000c00110021000000b28011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000000800a0000390000095d0000613d000000000801034f000000008908043c000000000a9a043600000000005a004b000009590000c13d000000000006004b0000096a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000a100000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c00000e910000413d000000800100043d00000ae40010009c00000e910000213d0000000002000411000000000021004b00000e910000c13d2b6a250e0000040f2b6a27c10000040f00000001010000390000000802000039000000000012041b000000000100001900002b6b0001042e000000000021041b0000000d01000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000c030000290000000002320019000000000021041b000000400100043d000000000031043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b300400004100000000050004110000000d060000292b6a2b600000040f000000010020019000000e910000613d000000400100043d0000000102000039000000000021043500000adc0010009c00000adc01008041000000400110021000000b2c011001c700002b6b0001042e0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000009b60000c13d00000bf30000013d00000adc0010009c00000adc01008041000000c00110021000000b28011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000009cf0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009cb0000c13d000000000006004b000009dc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000be80000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c00000e910000413d000000800100043d00000ae40010009c00000e910000213d0000000002000411000000000021004b00000e910000c13d00000b26010000410000000000100443000000000100041200000004001004430000008001000039000b00000001001d0000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400400043d00000b49010000410000000000140435000000000100041000000ae402100197000c00000004001d0000000401400039000900000002001d00000000002104350000000001000414000a00000003001d00000ae402300197000000040020008c00000ccf0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000cf90000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a170000c13d00000bf30000013d00000adc00c0009c00000adc0200004100000000020c4019000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000ae6011001c700000000020b0019000b0000000c001d2b6a2b650000040f0000000b0c000029000000600310027000000adc04300197000000200040008c000000200300003900000000030440190000001f0630018f000000200730019000000000057c001900000a380000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00000a340000c13d000000000006004b00000a450000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000010355000000010020019000000c260000613d0000001f01300039000000600110018f0000000003c10019000000000013004b00000000020000390000000102004039000b00000003001d00000ae20030009c000000640000213d0000000100200190000000640000c13d0000000b02000029000000400020043f000000200040008c00000e910000413d00000000020c0433000a00000002001d00000ae40020009c00000e910000213d0000000a03000029000000e00030043f00000ae7020000410000000b0500002900000000002504350000000002000414000000040030008c00000a910000613d0000000b0100002900000adc0010009c00000adc01008041000000400110021000000adc0020009c00000adc02008041000000c002200210000000000112019f00000ae6011001c70000000a020000292b6a2b650000040f000000600310027000000adc04300197000000200040008c000000200300003900000000030440190000001f0630018f00000020073001900000000b0570002900000a7e0000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b00000a7a0000c13d000000000006004b00000a8b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000010355000000010020019000000d240000613d0000001f01300039000000600110018f0000000b02100029000900000002001d00000ae20020009c000000640000213d0000000902000029000000400020043f000000200040008c00000e910000413d0000000b02000029000000000202043300000ae40020009c00000e910000213d000000a00020043f00000ae8020000410000000903000029000000000023043500000000020004140000000a03000029000000040030008c00000ad20000613d000000090100002900000adc0010009c00000adc01008041000000400110021000000adc0020009c00000adc02008041000000c002200210000000000112019f00000ae6011001c70000000a020000292b6a2b650000040f000000600310027000000adc04300197000000200040008c000000200300003900000000030440190000001f0630018f0000002007300190000000090570002900000abf0000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b00000abb0000c13d000000000006004b00000acc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000010355000000010020019000000e2a0000613d0000001f01300039000000600110018f000000090110002900000ae20010009c000000640000213d000000400010043f000000200040008c00000e910000413d0000000901000029000000000101043300000ae40010009c00000e910000213d000000c00010043f0000000c01000029000001200010043f0000000d01000029000001000010043f2b6a20c30000040f000d00000001001d000b00000002001d0000000c010000292b6a20c30000040f000000400300043d00000000040200190000000d0000006b00000f770000613d000000000001004b00000f770000613d000000200130003900000ae90200004100000000002104350000001301000039000000000013043500000aea0030009c000000640000213d00000060013000390000004002300039000000400020043f0000000b050000290000000005050433000000000005004b00000b040000613d0000000b060000290000002006600039000000000700001900000000081700190000000009760019000000000909043300000000009804350000002007700039000000000057004b00000afd0000413d000000000115001900000000000104350000000001250019000000200510003900000aeb06000041000000000065043500000021061000390000000005040433000000000005004b00000b170000613d0000002004400039000000000700001900000000086700190000000009740019000000000909043300000000009804350000002007700039000000000057004b00000b100000413d000000000465001900000000000404350000000001150019000000210410003900000aec050000410000000000540435000000000121004900000003041000390000000000420435000000420110003900000b7c041001970000000001240019000000000041004b0000000004000039000000010400403900000ae20010009c000000640000213d0000000100400190000000640000c13d000000400010043f00000f880000013d0000000601000039000000000101041a000800000001001d00000b3e010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000700000001001d000000080010006c00000c5b0000c13d0000000701000039000000000101041a000700000001001d0000000d0100002900000ae401100197000800000001001d000000000010043f0000000301000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a000000010320003a0000028f0000613d000000000031041b000000400100043d000000c0031000390000000b040000290000000000430435000000a003100039000000000023043500000080021000390000000a0300002900000000003204350000000c0200002900000ae40220019700000060031000390000000000230435000000400210003900000008030000290000000000320435000000c002000039000000000221043600000b4403000041000000000032043500000b450010009c000000640000213d000000e003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000201043b000000400100043d00000042031000390000000000230435000000200210003900000b460300004100000000003204350000002203100039000000070400002900000000004304350000004203000039000000000031043500000b470010009c000000640000213d0000008003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b0000000202000367000000a403200370000000000303043b000000c402200370000000000202043b000000400400043d00000060054000390000000000250435000000400240003900000000003204350000000902000029000000ff0220018f000000200340003900000000002304350000000000140435000000000000043f00000adc0040009c00000adc040080410000004001400210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b48011001c700000001020000392b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0540018f000000200440019000000bcb0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b00000bc70000c13d000000000005004b00000bd80000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f0003000000010355000000010020019000000f5f0000613d000000080000006b000013dd0000613d000000000100043d00000ae401100197000000080010006c000013dd0000c13d0000000d010000290000000c020000290000000a030000292b6a27e60000040f000000000100001900002b6b0001042e0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000bef0000c13d000000000005004b00000c000000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000adc0020009c00000adc020080410000004002200210000000000112019f00002b6c000104300009000b001000740000028f0000413d0000000d01000029000000000010043f0000000201000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b0000000a02000029000000000020043f000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b0000000902000029000000000021041b000001490000013d0000001f0540018f00000adf06400198000000400200043d000000000362001900000c310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b00000c2d0000c13d000000000005004b00000c3e0000613d000000000161034f0000000305500210000000000603043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000130435000000600140021000000c010000013d00000b2a0210019700000b2b0020009c0000028f0000213d00000b2b032000990000000b013000b90000000b041000fa000000000034004b00000e910000c13d0000000b032000b90000000b033000fa000000000023004b00000e910000c13d0000000a0200002900000b29042001970000008005200270000000090000006b00000da60000c13d00000b2b024000d1000000000021001a0000028f0000413d000000000221001900000000035100a9000000000001004b0000000004000019000000000413c0d9000000000054004b00000daf0000013d0000000405000039000000000405041a000000010640019000000001034002700000007f0330618f0000001f0030008c00000000010000390000000101002039000000000114013f0000000100100190000006fc0000c13d000000400100043d0000000002310436000000000006004b00000d300000613d000000000050043f000000000003004b000000000400001900000d350000613d00000b3f0500004100000000040000190000000006240019000000000705041a000000000076043500000001055000390000002004400039000000000034004b00000c700000413d00000d350000013d0000000a0200002900000adc0020009c00000adc02008041000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b4a011001c70000000c020000292b6a2b650000040f000000000301034f000000600110027000000adc04100197000000200040008c000000200100003900000000010440190000001f0610018f00000020071001900000000a0570002900000c930000613d000000000803034f0000000a09000029000000008a08043c0000000009a90436000000000059004b00000c8f0000c13d000000000006004b00000ca00000613d000000000773034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000030355000000010020019000000d9a0000613d0000001f01100039000000600110018f0000000a02100029000000000012004b0000000001000039000000010100403900000ae20020009c000000640000213d0000000100100190000000640000c13d000000400020043f000000200040008c00000e910000413d0000000b0100002900080b5a001000d50000000a050000290000000005050433000a00000005001d000000000001004b00000cbc0000613d00000008050000290000000b015000fa00000b5a0010009c0000028f0000c13d000000440120003900000024062000390000000a070000290000000b0070006c00000dc70000813d00000b5e0300004100000000003204350000000403200039000000200400003900000000004304350000001f03000039000000000036043500000b6703000041000000000031043500000adc0020009c00000adc02008041000000400120021000000b60011001c700002b6c000104300000000c0300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c0570002900000ce80000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b00000ce40000c13d000000000006004b00000cf50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000dbb0000613d0000001f01400039000000600110018f0000000c02100029000000000012004b0000000001000039000000010100403900000ae20020009c000000640000213d0000000100100190000000640000c13d000000400020043f000000200030008c00000e910000413d0000000c0100002900000000010104330000000904000039000000000404041a00000b2904400197000000000141004b0000028f0000413d00000044042000390000000000140435000000200420003900000b4b01000041000000000014043500000024012000390000000d0500002900000000005104350000004401000039000000000012043500000b470020009c000000640000213d0000008001200039000000400010043f000000000502043300000000020004140000000a06000029000000040060008c00000e360000c13d00000ae20030009c0000000002000019000000640000213d00000eb60000013d0000001f0540018f00000adf06400198000000400200043d000000000362001900000c310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b00000d2b0000c13d00000c310000013d00000b7e044001970000000000420435000000000003004b000000200400003900000000040060390000003f0340003900000b7c043001970000000003140019000000000043004b0000000004000039000000010400403900000ae20030009c000000640000213d0000000100400190000000640000c13d000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000201043b000000000100041000000ae403100197000000400100043d000000a0041000390000000000340435000000800310003900000007040000290000000000430435000000600310003900000b4104000041000000000043043500000040031000390000000000230435000000200210003900000b42030000410000000000320435000000a003000039000000000031043500000b430010009c000000640000213d000000c003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b00000b400000013d0000000405000039000000000405041a000000010640019000000001034002700000007f0330618f0000001f0030008c00000000010000390000000101002039000000000114013f0000000100100190000006fc0000c13d000000400100043d0000000002310436000000000006004b00000ddd0000613d000000000050043f000000000003004b000000000400001900000de20000613d00000b3f0500004100000000040000190000000006240019000000000705041a000000000076043500000001055000390000002004400039000000000034004b00000d920000413d00000de20000013d0000001f0540018f00000adf06400198000000400100043d0000000002610019000000fa0000613d000000000703034f0000000008010019000000007907043c0000000008980436000000000028004b00000da10000c13d000000fa0000013d00000b2b025000d1000000000021001a0000028f0000413d000000000221001900000000034100a9000000000001004b0000000005000019000000000513c0d9000000000045004b00000000040000390000000104006039000000000001004b00000000010000390000000101006039000000000002004b00000e910000613d000000000141019f000000010010019000000e910000613d00000000022300d90000077d0000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000dc20000c13d00000bf30000013d000000200520003900000b4b0700004100000000007504350000000d0700002900000000007604350000000b0600002900000000006104350000004401000039000000000012043500000b470020009c000000640000213d0000008001200039000000400010043f000000000602043300000000020004140000000c07000029000000040070008c00000e4c0000c13d00000ae20040009c0000000002000019000000640000213d00000f040000013d00000b7e044001970000000000420435000000000003004b000000200400003900000000040060390000003f0340003900000b7c043001970000000003140019000000000043004b0000000004000039000000010400403900000ae20030009c000000640000213d0000000100400190000000640000c13d000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000201043b000000000100041000000ae403100197000000400100043d000000a0041000390000000000340435000000800310003900000005040000290000000000430435000000600310003900000b4104000041000000000043043500000040031000390000000000230435000000200210003900000b42030000410000000000320435000000a003000039000000000031043500000b430010009c000000640000213d000000c003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000004bd0000013d0000001f0540018f00000adf06400198000000400200043d000000000362001900000c310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b00000e310000c13d00000c310000013d00000adc0040009c00000adc04008041000000400140021000000adc0050009c00000adc050080410000006003500210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f0000000a020000292b6a2b600000040f0003000000010355000000600110027000010adc0010019d00000adc0310019800000eb40000c13d0000000100200190000000600100003900000edf0000c13d00000f2b0000013d00000adc0050009c00000adc05008041000000400150021000000adc0060009c00000adc060080410000006003600210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f0000000c020000292b6a2b600000040f000000000301034f0003000000010355000000600110027000010adc0010019d00000adc0410019800000f020000c13d000000010020019000000f2b0000613d00000060010000390000008005000039000000000400001900000f2e0000013d00000adc0010009c00000adc01008041000000c00110021000000b4f011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000280057001bf000002800a00003900000e790000613d000000000801034f000000008908043c000000000a9a043600000000005a004b00000e750000c13d000000000006004b00000e860000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000f6b0000613d0000001f01400039000000600110018f00000280021001bf000700000002001d000000400020043f000000200030008c00000e930000813d000000000100001900002b6c00010430000002800200043d000600000002001d00000b49020000410000000703000029000000000023043500000284011001bf0000000802000029000000000021043500000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c0000105b0000c13d0000000103000031000000200030008c00000020040000390000000004034019000010830000013d000000400100043d000000010220015f0000001f0430003900000b4c044001970000003f0440003900000b4d054001970000000004150019000000000054004b0000000005000039000000010500403900000ae20040009c000000640000213d0000000100500190000000640000c13d000000400040043f000000000631043600000b7c043001980000001f0530018f000b00000006001d0000000003460019000000030600036700000ed00000613d000000000706034f0000000b08000029000000007907043c0000000008980436000000000038004b00000ecc0000c13d000000000005004b00000edd0000613d000000000446034f0000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000010020019000000f2b0000c13d0000000001010433000000000001004b00000fa60000c13d00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400200043d00000b49010000410000000000120435000c00000002001d0000000401200039000000090200002900000000002104350000000001000414000b00000003001d00000ae402300197000000040020008c000011b30000c13d0000000104000031000000200040008c0000002004008039000011dd0000013d000000400100043d000000010220015f0000001f0540003900000b4c055001970000003f0550003900000b4d065001970000000005160019000000000065004b0000000006000039000000010600403900000ae20050009c000000640000213d0000000100600190000000640000c13d000000400050043f000000000541043600000b7c074001980000001f0840018f000000000675001900000f1c0000613d000000000903034f000000000a050019000000009b09043c000000000aba043600000000006a004b00000f180000c13d000000000008004b00000f290000613d000000000373034f0000000307800210000000000806043300000000087801cf000000000878022f000000000303043b0000010007700089000000000373022f00000000037301cf000000000383019f0000000000360435000000010020019000000f2e0000613d000000400100043d00000b6f02000041000006a60000013d0000000001010433000000000001004b00000fb40000c13d000000080100002900000b5b0310012a000000400500043d0000008401500039000000a00200003900000000002104350000006401500039000600000003001d000000000031043500000044015000390000000b02000029000000000021043500000024015000390000000c02000029000000000021043500000b5c010000410000000000150435000000000100041100000ae40110019700000004025000390000000000120435000000a402500039000000800100043d0000000000120435000800000005001d000000c402500039000000000001004b00000f550000613d00000000030000190000000005230019000000a006300039000000000606043300000000006504350000002003300039000000000013004b00000f4e0000413d0000000002210019000000000002043500000000020004140000000d03000029000000040030008c000010fb0000c13d000000200040008c000000200300003900000000030440190000112c0000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000f660000c13d00000bf30000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000f720000c13d00000bf30000013d00000aea0030009c000000640000213d0000004001300039000000400010043f000000200230003900000aed01000041000000000012043500000003040000390000000000430435000000400200043d00000aea0020009c000000640000213d0000004005200039000000400050043f00000020052000390000000000150435000000000042043500000000010300192b6a21670000040f000000800100043d00000140000004430000016000100443000000a00100043d00000020020000390000018000200443000001a0001004430000004001000039000000c00300043d000001c000100443000001e0003004430000006001000039000000e00300043d000002000010044300000220003004430000008001000039000001000300043d00000240001004430000026000300443000000a001000039000001200300043d0000028000100443000002a00030044300000100002004430000000601000039000001200010044300000aee0100004100002b6b0001042e00000ae10010009c00000e910000213d000000200010008c00000e910000413d0000000b010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000ee20000c13d00000f2b0000013d00000ae10010009c00000e910000213d000000200010008c00000e910000413d0000000001050433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f310000c13d00000f2b0000013d00000adc0010009c00000adc01008041000000c00110021000000b4f011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000280057001bf000002800a00003900000fd50000613d000000000801034f000000008908043c000000000a9a043600000000005a004b00000fd10000c13d000000000006004b00000fe20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000118f0000613d0000001f01400039000000600110018f00000280021001bf000500000002001d000000400020043f000000200030008c00000e910000413d000002800200043d000400000002001d00000b49020000410000000503000029000000000023043500000284011001bf0000000702000029000000000021043500000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c000012010000c13d0000000103000031000000200030008c00000020040000390000000004034019000012290000013d00000adc0010009c00000adc01008041000000c00110021000000b6c011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000002c0057001bf000002c00a000039000010220000613d000000000801034f000000008908043c000000000a9a043600000000005a004b0000101e0000c13d000000000006004b0000102f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000119b0000613d0000001f01400039000000600110018f000002c002100039000500000002001d000000400020043f000000200030008c00000e910000413d000002c00200043d000400000002001d00000b490200004100000005030000290000000000230435000002c4011000390000000702000029000000000021043500000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c000012a10000c13d0000000103000031000000200030008c00000020040000390000000004034019000012c90000013d00000adc0010009c00000adc01008041000000c00110021000000007030000290000004003300210000000000131019f00000b4a011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000705700029000010720000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b0000106e0000c13d000000000006004b0000107f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000011a70000613d0000001f01400039000000600110018f0000000701100029000000400010043f000000200030008c00000e910000413d00000007010000290000000001010433000001200010043f000000060300002900000000023100a9000001000030043f000000000003004b000010940000613d00000006032000fa000000000013004b0000028f0000c13d00000b320020009c00000000030000390000008003002039000000000432022f00000b330040009c00000040033021bf000000000432022f00000b340040009c00000020033021bf000000000432022f00000b2a0040009c00000010033021bf000000000432022f00000b350440009a0000000103300270000000b50330020f00000000034300a900000012033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000034004b000000010330408a000001c00030043f000000c00200043d000000060220006b0000028f0000413d000001400020043f000000e00200043d000000000121004b0000028f0000413d000001600010043f0000000d010000292b6a25f50000040f000700000001001d000000c00100043d000000000001004b000d00000000001d000013300000613d000000e00300043d000001400400043d00000000024300a9000000000004004b000010de0000613d00000000044200d9000000000034004b00000e910000c13d000d0000001200e1000001600100043d0000000d0010006c000013300000813d00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000600000001001d00000b2601000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000013480000013d0000001f0110003900000b7c01100197000000c40110003900000adc0010009c00000adc010080410000006001100210000000080300002900000adc0030009c00000adc030080410000004003300210000000000131019f00000adc0020009c00000adc02008041000000c002200210000000000112019f0000000d020000292b6a2b600000040f000000600310027000000adc04300197000000200040008c000000200300003900000000030440190000001f0630018f000000200730019000000008057000290000111b0000613d000000000801034f0000000809000029000000008a08043c0000000009a90436000000000059004b000011170000c13d000000000006004b000011280000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f00030000000103550000000100200190000011f50000613d0000001f01300039000000600110018f0000000803100029000000000013004b00000000020000390000000102004039000700000003001d00000ae20030009c000000640000213d0000000100200190000000640000c13d0000000702000029000000400020043f000000200040008c00000e910000413d000000070200002900000004022000390000000803000029000000000303043300000b5d0030009c000013080000c13d00000b4903000041000000070500002900000000003504350000000903000029000000000032043500000000020004140000000c03000029000000040030008c000011770000613d000000070100002900000adc0010009c00000adc01008041000000400110021000000adc0020009c00000adc02008041000000c002200210000000000112019f00000b4a011001c70000000c020000292b6a2b650000040f000000600310027000000adc04300197000000200040008c000000200300003900000000030440190000001f0630018f00000020073001900000000705700029000011640000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b000011600000c13d000000000006004b000011710000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f00030000000103550000000100200190000014f70000613d0000001f01300039000000600110018f0000000701100029000900000001001d00000ae20010009c000000640000213d0000000901000029000000400010043f000000200040008c00000e910000413d000000070100002900000000010104330008000a00100074000015030000813d0000000903000029000000440130003900000b6602000041000000000021043500000024013000390000001902000039000000000021043500000b5e01000041000000000013043500000004013000390000002002000039000013120000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011960000c13d00000bf30000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011a20000c13d00000bf30000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011ae0000c13d00000bf30000013d0000000c0300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c05700029000011cc0000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b000011c80000c13d000000000006004b000011d90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000012fc0000613d0000001f01400039000000600210018f0000000c01200029000000000021004b0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f000000200040008c00000e910000413d0000000c0100002900000000010104330000000902000039000000000202041a0000008002200270000000000321004b0000028f0000413d0000000b010000290000000d020000292b6a2a450000040f0000097c0000013d0000001f0540018f00000adf06400198000000400200043d000000000362001900000c310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b000011fc0000c13d00000c310000013d00000adc0010009c00000adc01008041000000c00110021000000005030000290000004003300210000000000131019f00000b4a011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000505700029000012180000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b000012140000c13d000000000006004b000012250000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013180000613d0000001f01400039000000600110018f0000000501100029000000400010043f000000200030008c00000e910000413d00000005010000290000000001010433000001a00010043f0000000401000029000001800010043f0000000d010000292b6a25f50000040f000001000200043d000d00000002001d00000b260200004100000000002004430000000002000412000000040020044300000080020000390000002400200443000700000001001d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d0000000d0200002900000ae403200197000000000201043b00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000500000002001d00000ae401200197000400000001001d000d00000003001d000000000013004b0000140a0000c13d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400400043d000000200100003900000000011404360000000002000411000000000021043500000aea0040009c000000640000213d0000004001400039000000400010043f00000007010000290000000502000029000d00000003001d2b6a24060000040f00000b2a05100197000002200050043f0000000d0100002900000ae401100197000001200010043f000001400400043d000001800100043d000000000141004b0000028f0000413d000001c00010043f000016df0000c13d000002000000043f000001e00000043f000001a00300043d00000000020000190000000003230049000001a00030043f000000400300043d0000006004300039000000e00500043d0000000000240435000000000113043600000040023000390000000000020435000000000001043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b50011001c700000ae4065001970000800d02000039000000030300003900000b510400004100000000050004112b6a2b600000040f000000010020019000000e910000613d000000400100043d000002000200043d0000000002210436000000000002043500000adc0010009c00000adc0100804100000040011002100000000002000414000014560000013d00000adc0010009c00000adc01008041000000c00110021000000005030000290000004003300210000000000131019f00000b4a011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000505700029000012b80000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b000012b40000c13d000000000006004b000012c50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013240000613d0000001f01400039000000600110018f0000000501100029000000400010043f000000200030008c00000e910000413d00000005010000290000000001010433000001600010043f0000000401000029000001400010043f0000000701000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000101041a000001800010043f000001600200043d000001400100043d2b6a26720000040f000400000001001d000001a00020043f000001800100043d000500000001001d000000000001004b00000e910000613d000001400300043d00000005013000b900000005041000fa000000000034004b00000e910000c13d000001600300043d00000005043000b900000005054000fa000000000002004b0000151a0000c13d000001c00000043f000000000035004b00000000010000190000151f0000613d00000e910000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013030000c13d00000bf30000013d00000b5e010000410000000703000029000000000013043500000020010000390000000000120435000000440130003900000b5f02000041000000000021043500000024013000390000001802000039000000000021043500000adc0030009c00000adc03008041000000400130021000000b60011001c700002b6c000104300000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000131f0000c13d00000bf30000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000132b0000c13d00000bf30000013d00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000600000001001d00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000400400043d0000002001400039000000000300041100000000003104350000002001000039000000000014043500000aea0040009c000000640000213d0000004001400039000000400010043f000000070100002900000006030000292b6a24060000040f00000b2a03100197000002400030043f000000e00100043d000000c00200043d000000000002004b00000000040000190000000005000019000016760000613d000001600600043d0000000d0560006c0000166e0000813d000001400400043d00000000056200a9000000000006004b000013700000613d00000000066500d9000000000026004b00000e910000c13d000000000001004b000013750000613d00000000051500d9000000000454004b0000028f0000413d00000000053400a9000000000003004b0000137b0000613d00000000033500d9000000000043004b00000e910000c13d00000b2b0450012a0000000005000019000016760000013d0000000b020000290000006002200039000000000202043300000005030000290000000003030433000000400400043d0000006005400039000000000015043500000040014000390000000000310435000000f8012002700000002002400039000000000012043500000004010000290000000000140435000000000000043f00000adc0040009c00000adc040080410000004001400210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b48011001c700000001020000392b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0540018f0000002004400190000013a70000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000013a30000c13d000000000005004b000013b40000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f00030000000103550000000100200190000014eb0000613d000000000100043d00000ae401100197000000060010006c0000055e0000c13d000000000001004b00000be20000c13d0000055e0000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f0000000d020000292b6a2b650000040f000000010220018f0003000000010355000000600110027000010adc0010019d00000adc04100197000000000004004b000013e00000c13d00000060010000390000008003000039000000000002004b000013dd0000613d0000000001010433000000200010008c000013dd0000c13d000000000103043300000b690010009c00000be20000613d000000400100043d00000b6a02000041000006a60000013d00000ae20040009c000000640000213d0000001f0140003900000b7c011001970000003f0110003900000b7c03100197000000400100043d0000000003310019000000000013004b0000000005000039000000010500403900000ae20030009c000000640000213d0000000100500190000000640000c13d000000400030043f000000000341043600000b7c054001980000001f0640018f00000000045300190000000307000367000013fc0000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b000013f80000c13d000000000006004b000013d50000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000540435000013d50000013d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b00000ae4012001970000000d0010006b00000e910000c13d000000400400043d000000200100003900000000011404360000000003000411000000000031043500000aea0040009c000000640000213d0000004001400039000000400010043f000000070100002900000005030000292b6a24060000040f00000b2a05100197000002200050043f0000000401000029000001200010043f000001600400043d000001a00100043d000000000141004b0000028f0000413d000001c00010043f000017220000c13d000002000000043f000001e00000043f000001800300043d00000000020000190000000003230049000001800030043f000000400300043d0000004004300039000000e00500043d00000000002404350000002002300039000000000012043500000060013000390000000000010435000000000003043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b50011001c700000ae4065001970000800d02000039000000030300003900000b510400004100000000050004112b6a2b600000040f000000010020019000000e910000613d000000400100043d0000002002100039000002000300043d0000000000320435000000000001043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000010300003900000b52040000412b6a2b600000040f000000010020019000000e910000613d000001c00100043d000000000001004b00000e910000613d000001e00100043d000000000001004b00000e910000613d000001800100043d00000b290010009c00001a0b0000213d000001a00200043d00000b290020009c00001a0b0000213d0000008003200210000000000313019f0000000904000039000000000034041b000000400300043d00000020043000390000000000240435000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d020000390000000103000039000d00000003001d00000b31040000412b6a2b600000040f000000010020019000000e910000613d000001e00100043d000500000001001d000000e00100043d00030ae40010019b000001200100043d000200000001001d00040ae40010019b000002400100043d000000ff0110019000001a260000613d000000010010008c00001a0e0000c13d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000020110014f00000ae40010019800001a0e0000c13d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b00000b3602000041000000000020044300000ae401100197000800000001001d0000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400200043d00000b53010000410000000000120435000600000002001d00000004012000390000000502000029000000000021043500000000010004140000000802000029000000040020008c000014e00000613d000000060200002900000adc0020009c00000adc02008041000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b4a011001c700000008020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001ddb0000613d000000060100002900000ae20010009c000000640000213d0000000601000029000000400010043f00000000010004140000000302000029000000040020008c00001e360000c13d000000010100003100001ed40000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014f20000c13d00000bf30000013d0000001f0540018f00000adf06400198000000400200043d000000000362001900000c310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b000014fe0000c13d00000c310000013d0000000603000029000000080030006b000015a90000813d0000000903000029000000640130003900000b63020000410000000000210435000000440130003900000b6402000041000000000021043500000024013000390000002202000039000000000021043500000b5e01000041000000000013043500000004013000390000002002000039000000000021043500000adc0030009c00000adc03008041000000400130021000000b65011001c700002b6c0001043000000000012100d9000001c00010043f000000000035004b00000e910000c13d00000000012400d9000001e00010043f0000000701000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a000000050220006c0000028f0000413d000000000021041b000000000100041a00000005020000290000000001210049000000000010041b000000400100043d000000000021043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000070500002900000000060000192b6a2b600000040f000000010020019000000e910000613d0000000d010000292b6a25f50000040f000001200200043d000d00000002001d00000b2602000041000000000020044300000000020004120000000400200443000000a0020000390000002400200443000700000001001d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d0000000d0200002900000ae403200197000000000201043b00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000500000002001d00000ae401200197000300000001001d000d00000003001d000000000013004b000017fe0000c13d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400400043d0000002001400039000000000200041100000000002104350000002001000039000000000014043500000aea0040009c000000640000213d0000004001400039000000400010043f00000007010000290000000002030019000d00000003001d00000005030000292b6a24060000040f00000b2a05100197000002600050043f0000000d0100002900000ae401100197000001000010043f000001400100043d000001c00800043d000000000781004b0000028f0000413d000001e00200043d000001600100043d000000000321004b0000028f0000413d000000000008004b0000000006000019000000000400001900001ba90000c13d000002400040043f000002200060043f000000000026001a0000028f0000413d0000000002260019000001e00020043f000002000020043f000001c00000043f000000000121004b0000028f0000413d000001600010043f000000400100043d0000000002410436000000000002043500000adc0010009c00000adc01008041000000400110021000000000020004140000183b0000013d0000000a0010006c000015b00000613d2b6a2abf0000040f000000400200043d000900000002001d00070ae40010019c000017090000c13d00000009030000290000002001300039000000080200002900000000002104350000000b01000029000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000030300003900000b62040000410000000d050000290000000c060000292b6a2b600000040f000000010020019000000e910000613d00000001010000390000000802000039000000000012041b000008620000013d0000000d010000292b6a25f50000040f00000ae401100197000000800010043f0000000a010000290000001f0110003900000b7c011001970000003f0110003900000b7c02100197000000400100043d0000000002210019000000000012004b0000000003000039000000010300403900000ae20020009c000000640000213d0000000100300190000000640000c13d000000400020043f0000000a0200002900000000022104360000000904000029000000000040007c00000e910000213d0000000a0300002900000b7c043001980000001f0530018f000000080300002900000002063003670000000003420019000015f00000613d000000000706034f0000000008020019000000007907043c0000000008980436000000000038004b000015ec0000c13d000000000005004b000015fd0000613d000000000446034f0000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f00000000004304350000000a022000290000000000020435000001a00010043f00000b360100004100000000001004430000000c010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400400043d00000b38010000410000000000140435000000040140003900000020020000390000000000210435000000800100043d00000ae40110019700000024024000390000000000120435000000a00100043d00000ae401100197000000440240003900000000001204350000006401400039000000c00200043d00000000002104350000008401400039000000e00200043d0000000000210435000000a401400039000001000200043d0000000000210435000000c401400039000001200200043d0000000000210435000000e401400039000001400200043d00000000002104350000010401400039000001600200043d0000000000210435000001800100043d000000ff0110018f0000012402400039000000000012043500000144014000390000014002000039000001a00300043d0000000000210435000001640140003900000000320304340000000000210435000d00000004001d0000018401400039000000000002004b000016470000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b000016400000413d0000000003210019000000000003043500000000030004140000000c04000029000000040040008c000016650000613d0000001f0220003900000b7c022001970000000d040000290000000002420049000000000112001900000adc0010009c00000adc01008041000000600110021000000adc0040009c00000adc0200004100000000020440190000004002200210000000000121019f00000adc0030009c00000adc03008041000000c002300210000000000121019f0000000c020000292b6a2b600000040f000000600310027000010adc0030019d000300000001035500000001002001900000194a0000613d0000000d0100002900000ae20010009c000000640000213d0000000d01000029000000400010043f0000000d0100002900000b390010009c000000640000213d000003e00000013d00000000043500a9000000000003004b000016740000613d00000000033400d9000000000053004b00000e910000c13d00000b2b0540012a0000000004000019000001a00050043f000001800040043f000000000024001a0000028f0000413d0000000002240019000000c00020043f000000000015001a0000028f0000413d0000000001150019000000e00010043f000000400100043d00000020021000390000000000520435000000000041043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000010300003900000b52040000412b6a2b600000040f000000010020019000000e910000613d000000e00200043d000000c00300043d00000000013200a9000000000003004b0000169b0000613d00000000033100d9000000000023004b0000028f0000c13d00000b320010009c00000000020000390000008002002039000000000321022f00000b330030009c00000040022021bf000000000321022f00000b340030009c00000020022021bf000000000321022f00000b2a0030009c00000010022021bf000000000321022f00000b350330009a0000000102200270000000b50220020f00000000023200a900000012022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001032002720000000002000019000000000231c0d9000000000032004b000000010330408a000d00000003001d000001e00030043f0000000001000415000500000001001d000000000100041a000600000001001d2b6a2abf0000040f00040ae40010019b0000000a01000039000000000101041a000300000001001d000000000001004b000019590000613d000000040000006b0000174c0000c13d0000000a01000039000000000001041b000019590000013d00000b2b0050009c0000028f0000213d00000b2b0250009900000000032100a900000000061300d9000000000026004b00000e910000c13d00000000025100a900000000061200d9000000000056004b00000e910000c13d00000b2b054000d100000b2b0650012a000000000046004b00000e910000c13d000000000053001a0000028f0000413d000001600600043d000000000453001900000000053600a9000000000003004b0000000007000019000000000735c0d9000000000067004b00000000060000390000000106006039000000000003004b00000000030000390000000103006039000000000004004b00000e910000613d000000000363019f000000010030019000000e910000613d00000b2b0220012a000002000020043f00000000024500d9000001e00020043f000001a00300043d000000000032004b0000028f0000213d0000127d0000013d0000000904000029000000440140003900000008020000290000000000210435000000200140003900000b4b0200004100000000002104350000002402400039000000070300002900000000003204350000004402000039000000000024043500000b470040009c000000640000213d00000009030000290000008002300039000000400020043f000000000303043300000000020004140000000c04000029000000040040008c000017580000c13d000000010400003100000000020000190000176a0000013d00000b2b0050009c0000028f0000213d00000b2b0250009900000000032100a900000000061300d9000000000026004b00000e910000c13d00000000025100a900000000061200d9000000000056004b00000e910000c13d00000b2b054000d100000b2b0650012a000000000046004b00000e910000c13d000000000053001a0000028f0000413d000001400600043d000000000453001900000000053600a9000000000003004b0000000007000019000000000735c0d9000000000067004b00000000060000390000000106006039000000000003004b00000000030000390000000103006039000000000004004b00000e910000613d000000000363019f000000010030019000000e910000613d00000b2b0220012a000002000020043f00000000024500d9000001e00020043f000001800300043d000000000032004b0000028f0000213d000014310000013d00000003020000290002000d00200073000019590000a13d2b6a249d0000040f000000060000006b0000190b0000c13d0000000002000415000000190220008a000000050220021000020b2a0010019b00000000010000190000192c0000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f0000000c020000292b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc04100197000000000004004b000017d40000c13d00000060010000390000008003000039000000010020019000000f2b0000c13d0000000001010433000000000001004b000019180000c13d000000400300043d000000200100003900000000021304360000000201000039000a00000002001d0000000000120435000900000003001d00000aea0030009c000000640000213d00000009010000290000004001100039000000400010043f00000b3601000041000000000010044300000007010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400300043d0000008401300039000000a0020000390000000000210435000000640130003900000b5a0200004100000000002104350000004401300039000000080200002900000000002104350000000c0100002900000ae4011001970000002402300039000000000012043500000b6101000041000000000013043500000004013000390000000a02000039000000000021043500000009010000290000000001010433000000a4023000390000000000120435000900000003001d000000c402300039000000000001004b000017b20000613d000000000300001900000000042300190000000a05300029000000000505043300000000005404350000002003300039000000000013004b000017ab0000413d0000000002210019000000000002043500000000020004140000000703000029000000040030008c000017ce0000613d0000001f0110003900000b7c01100197000000c40110003900000adc0010009c00000adc010080410000006001100210000000090300002900000adc0030009c00000adc030080410000004003300210000000000131019f00000adc0020009c00000adc02008041000000c002200210000000000112019f00000007020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001c690000613d000000090100002900000ae20010009c000000640000213d0000000901000029000000400010043f000015b00000013d00000ae20040009c000000640000213d0000001f0140003900000b7c011001970000003f0110003900000b7c03100197000000400100043d0000000003310019000000000013004b0000000005000039000000010500403900000ae20030009c000000640000213d0000000100500190000000640000c13d000000400030043f000000000341043600000b7c054001980000001f0640018f00000000045300190000000307000367000017f00000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b000017ec0000c13d000000000006004b0000176e0000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f00000000005404350000176e0000013d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b00000ae4013001970000000d0010006b00000e910000c13d000000400400043d0000002001400039000000000200041100000000002104350000002001000039000000000014043500000aea0040009c000000640000213d0000004001400039000000400010043f000000070100002900000005020000292b6a24060000040f00000b2a06100197000002600060043f0000000301000029000001000010043f000001c00200043d000001400100043d000000000321004b0000028f0000413d000001e00800043d000001600400043d000000000784004b0000028f0000413d000000000008004b0000000005000019000000000400001900001c450000c13d000002400040043f000002200050043f000000000025001a0000028f0000413d0000000002250019000001c00020043f000002000020043f000001e00000043f000000000121004b0000028f0000413d000001400010043f000000400100043d00000020021000390000000000420435000000000001043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000010300003900000b52040000412b6a2b600000040f000000010020019000000e910000613d000002000100043d000000000001004b00000e910000613d000001400100043d00000b290010009c00001a0b0000213d000001600200043d00000b290020009c00001a0b0000213d0000008003200210000000000313019f0000000904000039000000000034041b000000400300043d00000020043000390000000000240435000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d020000390000000103000039000d00000003001d00000b31040000412b6a2b600000040f000000010020019000000e910000613d000000040000006b000018a50000613d000001600200043d000001400300043d00000000013200a9000000000003004b000018710000613d00000000033100d9000000000023004b0000028f0000c13d00000b320010009c00000000020000390000008002002039000000000321022f00000b330030009c00000040022021bf000000000321022f00000b340030009c00000020022021bf000000000321022f00000b2a0030009c00000010022021bf000000000321022f00000b350330009a0000000102200270000000b50220020f00000000023200a900000012022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000023004b000000010220408a0000000a01000039000000000021041b000002000100043d000400000001001d000000e00100043d00050ae40010019b000001200100043d000200000001001d00030ae40010019b000002800100043d000000ff0110019000001de80000613d000000010010008c00001e110000c13d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000020110014f00000ae40010019800001e110000c13d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b00000b3602000041000000000020044300000ae401100197000600000001001d0000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400200043d00000b53010000410000000000120435000800000002001d00000004012000390000000402000029000000000021043500000000010004140000000602000029000000040020008c000019000000613d000000080200002900000adc0020009c00000adc02008041000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b4a011001c700000006020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001e3d0000613d000000080100002900000ae20010009c000000640000213d0000000801000029000000400010043f00000000010004140000000502000029000000040020008c00001e4a0000c13d000000010100003100001f0d0000013d000000020400002900000006034000b900000006023000fa000000000042004b0000028f0000c13d0000000002000415000000180220008a000000050220021000020b2a0010019b000000000003004b000019250000c13d00000000010000190000192c0000013d00000ae10010009c00000e910000213d000000200010008c00000e910000413d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f2b0000613d000017730000013d0000000002000415000000180220008a000000050220021000000002013000b900000000033100d9000000020030006c0000028f0000c13d0000000502200270000000000201001f000000020200002900000b2b0020009c0000028f0000213d000000020200002900000b2b032000990000000d023000b90000193b0000613d00000000033200d90000000d0030006c0000028f0000c13d000000020000006b0000000003000019000019400000613d000000030500002900000002035000b900000002043000fa000000000054004b0000028f0000c13d000000000023001a0000028f0000413d000000000223001a000019570000c13d00000b5801000041000000000010043f0000001201000039000000040010043f00000b4a0100004100002b6c0001043000000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019520000c13d00000bf30000013d000000000012004b00001a4f0000a13d0000000001000415000000050110006900000000010000020000000601000029000002000010043f000001c00200043d000000000001004b000019870000c13d000003e80120008c0000028f0000413d000002200010043f000000000100041a00000b7f0010009c0000028f0000213d000003e801100039000000000010041b000000000000043f0000000101000039000000200010043f00000b7201000041000000000201041a000003e802200039000000000021041b000003e801000039000000400200043d000000000012043500000adc0020009c00000adc020080410000004001200210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000000500001900000000060000192b6a2b600000040f000000010020019000000e910000613d000002200100043d000d00000001001d000019930000013d000001e00100043d000000000212004b0000028f0000413d000000000001004b00000e910000613d00000006032000b900000006043000fa000000000024004b00000e910000c13d00000000011300d9000d00000001001d000002200010043f0000000d0000006b000019980000c13d000000400100043d00000b7702000041000006a60000013d000000000100041a0000000d0010002a0000028f0000413d0000000d01100029000000a00200043d00000ae402200197000000000010041b000800000002001d000000000020043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000d030000290000000002320019000000000021041b000000400100043d000000000031043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000000500001900000008060000292b6a2b600000040f000000010020019000000e910000613d000001000100043d00000b290010009c00001a0b0000213d000001200200043d00000b730020009c00001a0b0000813d0000008003200210000000000313019f0000000904000039000000000034041b000000400300043d00000020043000390000000000240435000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000010300003900000b31040000412b6a2b600000040f000000010020019000000e910000613d000000040000006b000019e60000613d000001c00100043d0000000a02000039000000000012041b000000400100043d000d00000001001d0000000c01000029000c0ae40010019c00001af70000c13d000000a00200043d000001600100043d000002200300043d000001400400043d0000000d050000290000000000450435000000400450003900000000003404350000002003500039000000000013043500000adc0050009c00000adc050080410000004001500210000000000300041400000adc0030009c00000adc03008041000000c003300210000000000113019f00000b3a011001c700000ae4062001970000800d020000390000000303000039000000000500041100000b75040000412b6a2b600000040f000000010020019000000e910000613d000002200100043d00000008020000390000000103000039000000000032041b000008620000013d000000400100043d00000b7602000041000006a60000013d000000400200043d000000440120003900000005030000290000000000310435000000200120003900000b4b0300004100000000003104350000002403200039000000030400002900000000004304350000004403000039000000000032043500000b470020009c000000640000213d0000008003200039000000400030043f000000000302043300000000020004140000000404000029000000040040008c00001bcd0000c13d0000000101000031000000000200001900001bdf0000013d00000b260100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400200043d000000440120003900000005040000290000000000410435000000200120003900000b4b0400004100000000004104350000004404000039000000000042043500000ae4043001970000002403200039000d00000004001d000000000043043500000b470020009c000000640000213d0000008003200039000000400030043f000000000302043300000000020004140000000404000029000000040040008c00001c760000c13d0000000103000031000000000200001900001c880000013d00030000002100e1000000000100041a000000030010002a0000028f0000413d0000000301100029000000000010041b0000000401000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a00000003030000290000000002320019000000000021041b000000400100043d000000000031043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000000500001900000004060000292b6a2b600000040f000000010020019000000e910000613d000000400300043d000000200100003900000000021304360000000201000039000d00000002001d0000000000120435000100000003001d00000aea0030009c000000640000213d00000001010000290000004001100039000000400010043f00000b3601000041000000000010044300000004010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400300043d0000008401300039000000a002000039000000000021043500000064013000390000000202000029000000000021043500000044013000390000000302000029000000000021043500000024013000390000000802000029000000000021043500000b6101000041000000000013043500000004013000390000000102000039000000000021043500000001010000290000000001010433000000a4023000390000000000120435000800000003001d000000c402300039000000000001004b00001ab80000613d000000000300001900000000042300190000000d05300029000000000505043300000000005404350000002003300039000000000013004b00001ab10000413d0000000002210019000000000002043500000000020004140000000403000029000000040030008c00001ad40000613d0000001f0110003900000b7c01100197000000c40110003900000adc0010009c00000adc010080410000006001100210000000080300002900000adc0030009c00000adc030080410000004003300210000000000131019f00000adc0020009c00000adc02008041000000c002200210000000000112019f00000004020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001ad90000613d000000080100002900000ae20010009c000000640000213d0000000801000029000000400010043f0000000302000029000000060020002a0000028f0000413d00000003040000290000000603400029000000400100043d0000004002100039000600000003001d0000000000320435000000200210003900000000004204350000000202000029000000000021043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b3a011001c70000800d02000039000000020300003900000b710400004100000004050000292b6a2b600000040f0000000100200190000019590000c13d00000e910000013d000000070100002900000ae401100197000000800010043f0000000b010000290000001f0110003900000b7c011001970000003f0110003900000b7c011001970000000d011000290000000d0010006c0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f0000000b010000290000000d0300002900000000011304360000000903000029000000000030007c00000e910000213d0000000b0200002900000b7c032001980000001f0420018f0000000a020000290000000205200367000000000231001900001b1b0000613d000000000605034f0000000007010019000000006806043c0000000007870436000000000027004b00001b170000c13d000000000004004b00001b280000613d000000000335034f0000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003204350000000b0110002900000000000104350000000d01000029000002600010043f00000b360100004100000000001004430000000c010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400400043d00000b74010000410000000000140435000000040140003900000020020000390000000000210435000000800100043d00000ae40110019700000024024000390000000000120435000000a00100043d00000ae401100197000000440240003900000000001204350000006401400039000000c00200043d00000000002104350000008401400039000000e00200043d0000000000210435000000a401400039000001000200043d0000000000210435000000c401400039000001200200043d0000000000210435000000e401400039000001400200043d00000000002104350000010401400039000001600200043d00000000002104350000012401400039000001800200043d00000000002104350000014401400039000001a00200043d00000000002104350000016401400039000001c00200043d00000000002104350000018401400039000001e00200043d0000000000210435000001a401400039000002000200043d0000000000210435000001c401400039000002200200043d0000000000210435000002400100043d00000b2a01100197000001e402400039000000000012043500000204014000390000020002000039000002600300043d0000000000210435000002240140003900000000320304340000000000210435000d00000004001d0000024401400039000000000002004b00001b850000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b00001b7e0000413d0000000003210019000000000003043500000000030004140000000c04000029000000040040008c00001ba30000613d0000001f0220003900000b7c022001970000000d040000290000000002420049000000000112001900000adc0010009c00000adc01008041000000600110021000000adc0040009c00000adc0200004100000000020440190000004002200210000000000121019f00000adc0030009c00000adc03008041000000c002300210000000000121019f0000000c020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001e290000613d0000000d0100002900000ae20010009c000000640000213d0000000d01000029000000400010043f000019eb0000013d00000b2b0050009c0000028f0000213d00000b2b0450009900000000064800a900000000098600d9000000000049004b00000e910000c13d00000000045800a900000000088400d9000000000058004b00000e910000c13d00000b2b057000d100000b2b0850012a000000000078004b00000e910000c13d000000000065001a0000028f0000413d000000000565001900000000076300a9000000000006004b0000000008000019000000000867c0d9000000000038004b00000000030000390000000103006039000000000006004b00000000060000390000000106006039000000000005004b00000e910000613d000000000336019f000000010030019000000e910000613d00000b2b0440012a00000000065700d9000015960000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000004020000292b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc01100197000000000001004b00001c180000c13d000000010020019000000f2b0000c13d00000008010000290000000001010433000000000001004b00001ccd0000c13d000000400100043d000d00000001001d000000070100002900080ae40010019b0000000c0000006b00001cdb0000c13d000001200100043d00000ae407100197000000800070043f000001e00100043d000000a00010043f000002200200043d000000e00300043d000001c00400043d0000000d05000029000000000045043500000ae4033001970000006004500039000000000034043500000b2a02200197000000400350003900000000002304350000002002500039000000000012043500000adc0050009c00000adc050080410000004001500210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b50011001c70000800d020000390000000403000039000000000500041100000b570400004100000008060000292b6a2b600000040f000000010020019000000e910000613d00000001010000390000000802000039000000000012041b000000400100043d000d00000001001d00000080020000392b6a23060000040f000008e40000013d00000ae20010009c000000640000213d0000001f0410003900000b7c044001970000003f0440003900000b7c04400197000000400500043d0000000004450019000800000005001d000000000054004b0000000005000039000000010500403900000ae20040009c000000640000213d0000000100500190000000640000c13d000000400040043f0000000804000029000000000514043600000b7c031001980000001f0410018f000600000005001d0000000001350019000000030500036700001c370000613d000000000605034f0000000607000029000000006806043c0000000007870436000000000017004b00001c330000c13d000000000004004b00001be10000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500001be10000013d00000b2b0060009c0000028f0000213d00000b2b0460009900000000054800a900000000098500d9000000000049004b00000e910000c13d00000000046800a900000000088400d9000000000068004b00000e910000c13d00000b2b067000d100000b2b0860012a000000000078004b00000e910000c13d000000000056001a0000028f0000413d000000000656001900000000075300a9000000000005004b0000000008000019000000000857c0d9000000000038004b00000000030000390000000103006039000000000005004b00000000050000390000000105006039000000000006004b00000e910000613d000000000335019f000000010030019000000e910000613d00000b2b0440012a00000000056700d9000018280000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001c710000c13d00000bf30000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000004020000292b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc03100197000000000003004b00001ca30000c13d00000060010000390000008004000039000000010020019000000f2b0000c13d0000000001010433000000000001004b00001d890000c13d000000400400043d00000024014000390000000302000029000000000021043500000b54010000410000000000140435000800000004001d00000004014000390000000402000029000000000021043500000000010004140000000d02000029000000040020008c00001d960000c13d000000200030008c0000002004000039000000000403401900001dc10000013d00000ae20030009c000000640000213d0000001f0130003900000b7c011001970000003f0110003900000b7c04100197000000400100043d0000000004410019000000000014004b0000000006000039000000010600403900000ae20040009c000000640000213d0000000100600190000000640000c13d000000400040043f000000000431043600000b7c063001980000001f0730018f0000000005640019000000030800036700001cbf0000613d000000000908034f000000000a040019000000009b09043c000000000aba043600000000005a004b00001cbb0000c13d000000000007004b00001c8c0000613d000000000668034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f000000000065043500001c8c0000013d00000ae10010009c00000e910000213d000000200010008c00000e910000413d00000006010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f2b0000613d00001be70000013d0000000801000029000000c00010043f0000000b010000290000001f0110003900000b7c011001970000003f0110003900000b7c011001970000000d011000290000000d0010006c0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f0000000b010000290000000d0300002900000000011304360000000903000029000000000030007c00000e910000213d0000000b0200002900000b7c032001980000001f0420018f0000000a020000290000000205200367000000000231001900001cfe0000613d000000000605034f0000000007010019000000006806043c0000000007870436000000000027004b00001cfa0000c13d000000000004004b00001d0b0000613d000000000335034f0000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003204350000000b0110002900000000000104350000000d01000029000002600010043f00000b360100004100000000001004430000000c010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400400043d00000b56010000410000000000140435000000040140003900000020020000390000000000210435000000c00100043d00000ae40110019700000024024000390000000000120435000000e00100043d00000ae40110019700000044024000390000000000120435000001000100043d00000ae40110019700000064024000390000000000120435000001200100043d00000ae40110019700000084024000390000000000120435000000a401400039000001400200043d0000000000210435000000c401400039000001600200043d0000000000210435000000e401400039000001800200043d00000000002104350000010401400039000001a00200043d00000000002104350000012401400039000001c00200043d00000000002104350000014401400039000001e00200043d00000000002104350000016401400039000002000200043d0000000000210435000002200100043d00000b2a0110019700000184024000390000000000120435000002400100043d000000ff0110018f000001a4024000390000000000120435000001c401400039000001c002000039000002600300043d0000000000210435000001e40140003900000000320304340000000000210435000d00000004001d0000020401400039000000000002004b00001d650000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b00001d5e0000413d0000000003210019000000000003043500000000030004140000000c04000029000000040040008c00001d830000613d0000001f0220003900000b7c022001970000000d040000290000000002420049000000000112001900000adc0010009c00000adc01008041000000600110021000000adc0040009c00000adc0200004100000000020440190000004002200210000000000121019f00000adc0030009c00000adc03008041000000c002300210000000000121019f0000000c020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001e510000613d0000000d0100002900000ae20010009c000000640000213d0000000d01000029000000400010043f00001bed0000013d00000ae10010009c00000e910000213d000000200010008c00000e910000413d0000000001040433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f2b0000613d00001c910000013d000000080200002900000adc0020009c00000adc02008041000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b55011001c70000000d020000292b6a2b600000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000080570002900001db00000613d000000000801034f0000000809000029000000008a08043c0000000009a90436000000000059004b00001dac0000c13d000000000006004b00001dbd0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001dcf0000613d0000001f01400039000000600210018f0000000801200029000000000021004b0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f000000200030008c00001be70000813d00000e910000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001dd60000c13d00000bf30000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001de30000c13d00000bf30000013d00000b260100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400200043d000000440120003900000004040000290000000000410435000000200120003900000b4b0400004100000000004104350000004404000039000000000042043500000ae4043001970000002403200039000800000004001d000000000043043500000b470020009c000000640000213d0000008003200039000000400030043f000000000302043300000000020004140000000304000029000000040040008c00001e5e0000c13d0000000103000031000000000200001900001e700000013d000000400200043d000000440120003900000004030000290000000000310435000000200120003900000b4b0300004100000000003104350000002403200039000000050400002900000000004304350000004403000039000000000032043500000b470020009c000000640000213d0000008003200039000000400030043f000000000302043300000000020004140000000304000029000000040040008c00001e750000c13d0000000101000031000000000200001900001e870000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e310000c13d00000bf30000013d00000adc0010009c00000adc01008041000000c001100210000000050000006b00001ec90000c13d000000030200002900001ece0000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e450000c13d00000bf30000013d00000adc0010009c00000adc01008041000000c001100210000000040000006b00001f020000c13d000000050200002900001f070000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e590000c13d00000bf30000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000003020000292b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc03100197000000000003004b00001f3d0000c13d0000006001000039000000800400003900001f660000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000003020000292b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc01100197000000000001004b00001eb50000613d00000ae20010009c000000640000213d0000001f0410003900000b7c044001970000003f0440003900000b7c04400197000000400500043d0000000004450019000800000005001d000000000054004b0000000005000039000000010500403900000ae20040009c000000640000213d0000000100500190000000640000c13d000000400040043f0000000804000029000000000514043600000b7c031001980000001f0410018f000600000005001d0000000001350019000000030500036700001ea80000613d000000000605034f0000000607000029000000006806043c0000000007870436000000000017004b00001ea40000c13d000000000004004b00001eb50000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000010020019000000f2b0000c13d00000008010000290000000001010433000000000001004b00001fc10000613d00000ae10010009c00000e910000213d000000200010008c00000e910000413d00000006010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f2b0000613d00001fc10000013d00000b40011001c700008009020000390000000503000029000000030400002900000000050000192b6a2b600000040f000d00000002001d0003000000010355000000600110027000010adc0010019d00000adc01100197000000000001004b00001efe0000613d00000ae20010009c000000640000213d0000001f0310003900000b7c033001970000003f0330003900000b7c04300197000000400300043d0000000004430019000000000034004b0000000005000039000000010500403900000ae20040009c000000640000213d0000000100500190000000640000c13d000000400040043f000000000513043600000b7c021001980000001f0310018f0000000001250019000000030400036700001ef10000613d000000000604034f000000006706043c0000000005750436000000000015004b00001eed0000c13d000000000003004b00001efe0000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f00000000002104350000000d01000029000000010010019000001be70000c13d00001f3a0000013d00000b40011001c700008009020000390000000403000029000000050400002900000000050000192b6a2b600000040f000d00000002001d0003000000010355000000600110027000010adc0010019d00000adc01100197000000000001004b00001f370000613d00000ae20010009c000000640000213d0000001f0310003900000b7c033001970000003f0330003900000b7c04300197000000400300043d0000000004430019000000000034004b0000000005000039000000010500403900000ae20040009c000000640000213d0000000100500190000000640000c13d000000400040043f000000000513043600000b7c021001980000001f0310018f0000000001250019000000030400036700001f2a0000613d000000000604034f000000006706043c0000000005750436000000000015004b00001f260000c13d000000000003004b00001f370000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f00000000002104350000000d01000029000000010010019000001fc10000c13d000000400100043d00000b6d02000041000006a60000013d00000ae20030009c000000640000213d0000001f0130003900000b7c011001970000003f0110003900000b7c04100197000000400100043d0000000004410019000000000014004b0000000006000039000000010600403900000ae20040009c000000640000213d0000000100600190000000640000c13d000000400040043f000000000431043600000b7c063001980000001f0730018f0000000005640019000000030800036700001f590000613d000000000908034f000000000a040019000000009b09043c000000000aba043600000000005a004b00001f550000c13d000000000007004b00001f660000613d000000000668034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000000010020019000000f2b0000c13d0000000001010433000000000001004b00001f770000613d00000ae10010009c00000e910000213d000000200010008c00000e910000413d0000000001040433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f2b0000613d000000400400043d00000024014000390000000502000029000000000021043500000b54010000410000000000140435000d00000004001d00000004014000390000000302000029000000000021043500000000010004140000000802000029000000040020008c00001f890000c13d000000200030008c0000002004000039000000000403401900001fb40000013d0000000d0200002900000adc0020009c00000adc02008041000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b55011001c700000008020000292b6a2b600000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000d0570002900001fa30000613d000000000801034f0000000d09000029000000008a08043c0000000009a90436000000000059004b00001f9f0000c13d000000000006004b00001fb00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000020aa0000613d0000001f01400039000000600210018f0000000d01200029000000000021004b0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f000000200030008c00000e910000413d000000400100043d000d00000001001d0000000c0000006b000020790000613d000000070100002900000ae401100197000000c00010043f0000000b010000290000001f0110003900000b7c011001970000003f0110003900000b7c011001970000000d011000290000000d0010006c0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f0000000b010000290000000d0300002900000000011304360000000903000029000000000030007c00000e910000213d0000000b0200002900000b7c032001980000001f0420018f0000000a020000290000000205200367000000000231001900001fe90000613d000000000605034f0000000007010019000000006806043c0000000007870436000000000027004b00001fe50000c13d000000000004004b00001ff60000613d000000000335034f0000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003204350000000b0110002900000000000104350000000d01000029000002a00010043f00000b360100004100000000001004430000000c010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400400043d00000b6e010000410000000000140435000000040140003900000020020000390000000000210435000000c00100043d00000ae40110019700000024024000390000000000120435000000e00100043d00000ae40110019700000044024000390000000000120435000001000100043d00000ae40110019700000064024000390000000000120435000001200100043d00000ae40110019700000084024000390000000000120435000000a401400039000001400200043d0000000000210435000000c401400039000001600200043d0000000000210435000000e401400039000001800200043d00000000002104350000010401400039000001a00200043d00000000002104350000012401400039000001c00200043d00000000002104350000014401400039000001e00200043d00000000002104350000016401400039000002000200043d00000000002104350000018401400039000002200200043d0000000000210435000001a401400039000002400200043d0000000000210435000002600100043d00000b2a01100197000001c4024000390000000000120435000002800100043d000000ff0110018f000001e402400039000000000012043500000204014000390000020002000039000002a00300043d0000000000210435000002240140003900000000320304340000000000210435000d00000004001d0000024401400039000000000002004b000020560000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b0000204f0000413d0000000003210019000000000003043500000000030004140000000c04000029000000040040008c000020740000613d0000001f0220003900000b7c022001970000000d040000290000000002420049000000000112001900000adc0010009c00000adc01008041000000600110021000000adc0040009c00000adc0200004100000000020440190000004002200210000000000121019f00000adc0030009c00000adc03008041000000c002300210000000000121019f0000000c020000292b6a2b600000040f000000600310027000010adc0030019d00030000000103550000000100200190000020b60000613d0000000d0100002900000ae20010009c000000640000213d0000000d01000029000000400010043f0000000d0100002900000aea0010009c000000640000213d0000000d040000290000004001400039000001200200043d000002000300043d000000400010043f0000002001400039000000000031043500000ae4012001970000000000140435000000400100043d0000004002100039000000e00300043d000001c00400043d000001e00500043d000001800600043d000000000062043500000020021000390000000000520435000000000041043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b3a011001c700000ae4063001970000800d020000390000000303000039000000000500041100000b3b040000412b6a2b600000040f000000010020019000000e910000613d00000001010000390000000802000039000000000012041b000000400100043d000c00000001001d0000000d020000292b6a23060000040f0000000c02000029000008e50000013d000000000001042f0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000020b10000c13d00000bf30000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000020be0000c13d00000bf30000013d0000000002010019000000400300043d0000000401000039000000000113043600000b8004000041000000000041043500000b810030009c0000215f0000813d0000004004300039000000400040043f00000000040304330000000003000414000000040020008c0000213e0000c13d00000001020000390000000105000031000000000005004b000000200100008a000021520000613d00000ae20050009c0000215f0000213d0000001f03500039000000000313016f0000003f03300039000000000413016f000000400300043d0000000004430019000000000034004b0000000006000039000000010600403900000ae20040009c0000215f0000213d00000001006001900000215f0000c13d000000400040043f000000000453043600000000061501700000001f0750018f00000000056400190000000308000367000020f20000613d000000000908034f000000000a040019000000009b09043c000000000aba043600000000005a004b000020ee0000c13d000000000007004b000020ff0000613d000000000668034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000000000002004b000021560000613d000000000203043300000ae10020009c000021650000213d0000001f0020008c000021650000a13d000000000504043300000ae20050009c000021650000213d000000000424001900000000053500190000003f02500039000000000042004b000000000300001900000ae30300804100000ae30220019700000ae306400197000000000762013f000000000062004b000000000200001900000ae30200404100000ae30070009c000000000203c019000000000002004b000021650000c13d0000002002500039000000000302043300000ae20030009c0000215f0000213d0000001f02300039000000000212016f0000003f02200039000000000112016f000000400200043d0000000006120019000000000026004b0000000001000039000000010100403900000ae20060009c0000215f0000213d00000001001001900000215f0000c13d0000004001500039000000400060043f00000000053204360000000006130019000000000046004b000021650000213d000000000003004b0000213a0000613d000000000400001900000000065400190000000007140019000000000707043300000000007604350000002004400039000000000034004b000021330000413d000000010100003900000000033500190000000000030435000000000001042d00000adc0010009c00000adc01008041000000400110021000000adc0040009c00000adc040080410000006004400210000000000114019f00000adc0030009c00000adc03008041000000c003300210000000000131019f2b6a2b650000040f000000010220018f0003000000010355000000600110027000010adc0010019d00000adc05100197000000000005004b000000200100008a000020d60000c13d00000060030000390000008004000039000000000002004b000021010000c13d000000400300043d00000b820030009c0000215f0000213d0000002001300039000000400010043f000000000100001900000000020300190000000000030435000000000001042d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c000104300005000000000002000000007401043400000b830040009c000022d20000813d00000000060200190000000402000039000000000302041a000000010230019000000001053002700000007f0550618f0000001f0050008c00000000030000390000000103002039000000000032004b000022d80000c13d000000200050008c000500000006001d000400000004001d000300000001001d0000219b0000413d000100000005001d000200000007001d0000000401000039000000000010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2f011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d00000004040000290000001f024000390000000502200270000000200040008c0000000002004019000000000301043b00000001010000290000001f01100039000000050110027000000000051300190000000002230019000000000052004b000000050600002900000002070000290000219b0000813d000000000002041b0000000102200039000000000052004b000021970000413d0000001f0040008c000021c70000a13d0000000401000039000000000010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2f011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d000000040700002900000b7c02700198000000000101043b00000005060000290000000308000029000022330000613d000000010320008a000000050330027000000000043100190000002003000039000000010440003900000000058300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000021b30000c13d000000000072004b000021c40000813d0000000302700210000000f80220018f00000b7d0220027f00000b7d0220016700000000038300190000000003030433000000000223016f000000000021041b000000010170021000000001011001bf000021d20000013d000000000004004b000021cb0000613d0000000001070433000021cc0000013d0000000001000019000000030240021000000b7d0220027f00000b7d02200167000000000121016f0000000102400210000000000121019f0000000402000039000000000012041b000000003506043400000ae20050009c000022d20000213d0000000504000039000000000104041a000000010010019000000001061002700000007f0660618f0000001f0060008c00000000020000390000000102002039000000000121013f0000000100100190000022d80000c13d000000200060008c000400000005001d000022040000413d000200000006001d000300000003001d000000000040043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2f011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d00000004050000290000001f025000390000000502200270000000200050008c0000000002004019000000000301043b00000002010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b00000005040000390000000303000029000022040000813d000000000002041b0000000102200039000000000012004b000022000000413d0000001f0050008c0000222f0000a13d000000000040043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2f011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d000000040700002900000b7c02700198000000000101043b0000000506000029000022800000613d000000010320008a000000050330027000000000043100190000002003000039000000010440003900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b0000221a0000c13d000000000072004b0000222b0000813d0000000302700210000000f80220018f00000b7d0220027f00000b7d0220016700000000036300190000000003030433000000000223016f000000000021041b000000010170021000000001011001bf00000005040000390000223e0000013d000000000005004b000022370000613d0000000001030433000022380000013d0000002003000039000000000072004b000021bc0000413d000021c40000013d0000000001000019000000030250021000000b7d0220027f00000b7d02200167000000000121016f0000000102500210000000000121019f000000000014041b00000b3e010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000022de0000613d000000000401043b0000000601000039000000000041041b0000000401000039000000000101041a000000010210019000000001071002700000007f0770618f0000001f0070008c00000000030000390000000103002039000000000331013f0000000100300190000022d80000c13d000500000004001d000000400500043d0000000006750436000000000002004b0000227a0000613d000400000007001d000200000006001d000300000005001d0000000401000039000000000010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2f011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d0000000407000029000000000007004b000022840000613d000000000201043b0000000001000019000000030500002900000002060000290000000003160019000000000402041a000000000043043500000001022000390000002001100039000000000071004b000022720000413d000022870000013d00000b7e011001970000000000160435000000000007004b00000020010000390000000001006039000022870000013d0000002003000039000000000072004b000022230000413d0000222b0000013d0000000001000019000000030500002900000002060000290000003f0110003900000b7c021001970000000001520019000000000021004b0000000002000039000000010200403900000ae20010009c000022d20000213d0000000100200190000022d20000c13d000000400010043f00000adc0060009c00000adc060080410000004001600210000000000205043300000adc0020009c00000adc020080410000006002200210000000000112019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d000000000201043b000000400100043d000000a00310003900000000040004100000000000430435000000800310003900000005040000290000000000430435000000600310003900000b4104000041000000000043043500000040031000390000000000230435000000200210003900000b42030000410000000000320435000000a003000039000000000031043500000b430010009c000022d20000213d000000c003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d000000000101043b0000000702000039000000000012041b000000000001042d000000000100001900002b6c0001043000000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c0001043000000b5801000041000000000010043f0000002201000039000000040010043f00000b4a0100004100002b6c00010430000000000001042f0000001f0220003900000b7c022001970000000001120019000000000021004b0000000002000039000000010200403900000ae20010009c000022eb0000213d0000000100200190000022eb0000c13d000000400010043f000000000001042d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c0001043000000020030000390000000004310436000000003202043400000000002404350000004001100039000000000002004b000023000000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b000022f90000413d000000000321001900000000000304350000001f0220003900000b7c022001970000000001210019000000000001042d000000003202043400000ae4022001970000000002210436000000000303043300000000003204350000004001100039000000000001042d00000000030100190000001f01100039000000000021004b000000000400001900000ae30400404100000ae30520019700000ae301100197000000000651013f000000000051004b000000000100001900000ae30100204100000ae30060009c000000000104c019000000000001004b000023550000613d0000000205000367000000000135034f000000000401043b00000b830040009c0000234f0000813d0000001f0140003900000b7c011001970000003f0110003900000b7c07100197000000400100043d0000000007710019000000000017004b0000000008000039000000010800403900000ae20070009c0000234f0000213d00000001008001900000234f0000c13d0000002008300039000000400070043f00000000034104360000000007840019000000000027004b000023550000213d000000000585034f00000b7c064001980000001f0740018f00000000026300190000233f0000613d000000000805034f0000000009030019000000008a08043c0000000009a90436000000000029004b0000233b0000c13d000000000007004b0000234c0000613d000000000565034f0000000306700210000000000702043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f000000000052043500000000024300190000000000020435000000000001042d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c0001043000000ae402200197000000000020043f000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f0000000100200190000023650000613d000000000101043b000000000001042d000000000100001900002b6c0001043000000ae10010009c000023750000213d000000630010008c000023750000a13d00000002010003670000000402100370000000000202043b00000ae40020009c000023750000213d0000004401100370000000000101043b00000ae40010009c000023750000213d000000000001042d000000000100001900002b6c0001043000020000000000020000000601000039000000000101041a000200000001001d00000b3e010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000023f70000613d000000000701043b000000020070006c0000238c0000c13d0000000701000039000000000101041a000000000001042d0000000405000039000000000405041a000000010640019000000001034002700000007f0330618f0000001f0030008c00000000010000390000000101002039000000000016004b000024000000c13d000000400100043d0000000002310436000000000006004b000100000007001d000023a80000613d000000000050043f000000000003004b000023ae0000613d00000b3f0500004100000000040000190000000006420019000000000705041a000000000076043500000001055000390000002004400039000000000034004b000023a00000413d000023af0000013d00000b7e044001970000000000420435000000000003004b00000020040000390000000004006039000023af0000013d00000000040000190000003f0340003900000b7c043001970000000003140019000000000043004b0000000004000039000000010400403900000ae20030009c000023f80000213d0000000100400190000023f80000c13d000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f0000000100200190000023fe0000613d000000000201043b000000000100041000000ae403100197000000400100043d000000a0041000390000000000340435000000800310003900000001040000290000000000430435000000600310003900000b4104000041000000000043043500000040031000390000000000230435000000200210003900000b42030000410000000000320435000000a003000039000000000031043500000b430010009c000023f80000213d000000c003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f0000000100200190000023fe0000613d000000000101043b000000000001042d000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c0001043000000b5801000041000000000010043f0000002201000039000000040010043f00000b4a0100004100002b6c000104300005000000000002000000400700043d0000008405700039000000a006000039000000000065043500000ae4033001970000006405700039000000000035043500000ae4022001970000004403700039000000000023043500000ae4011001970000002402700039000000000012043500000b840100004100000000001704350000000401700039000000000200041000000000002104350000000016040434000000a4027000390000000000620435000300000007001d000000c405700039000000000006004b000024280000613d000000000200001900000000035200190000000004210019000000000404043300000000004304350000002002200039000000000062004b000024210000413d000200000005001d000100000006001d0000000001650019000000000001043500000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000024960000613d000000000201043b000000000100041400000ae402200197000000040020008c000000030b000029000024490000c13d0000000005000415000000050550008a00000005055002100000000103000031000000200030008c000000200400003900000000040340190000247f0000013d00000001030000290000001f0330003900000b7c033001970000000003b30049000000020330002900000adc0030009c00000adc03008041000000600330021000000adc00b0009c00000adc0400004100000000040b40190000004004400210000000000343019f00000adc0010009c00000adc01008041000000c001100210000000000131019f2b6a2b650000040f000000030b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000246b0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000024670000c13d000000000006004b000024780000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000005000415000000040550008a00000005055002100000000100200190000024920000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000ae20010009c000024970000213d0000000100200190000024970000c13d000000400010043f0000001f0030008c000024940000a13d00000000010b043300000b2a0010009c000024940000213d0000000502500270000000000201001f000000000001042d0000012201000039000000000001042d000000000100001900002b6c00010430000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c000104300003000000000002000000400200043d00000b85010000410000000000120435000100000002001d00000004012000390000000002000410000000000021043500000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000025070000613d000000000201043b000000000100041400000ae402200197000000040020008c000024c20000c13d0000000005000415000000030550008a00000005055002100000000103000031000000200030008c00000020040000390000000004034019000000010b000029000024f00000013d000000010300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000010b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000024dc0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000024d80000c13d000000000006004b000024e90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000005000415000000020550008a00000005055002100000000100200190000025030000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000ae20010009c000025080000213d0000000100200190000025080000c13d000000400010043f0000001f0030008c000025050000a13d00000000010b043300000b2a0010009c000025050000213d0000000502500270000000000201001f000000000001042d0000753001000039000000000001042d000000000100001900002b6c00010430000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c000104300003000000000002000000400200043d00000b49010000410000000000120435000000000100041000000ae403100197000300000002001d0000000401200039000100000003001d000000000031043500000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000025c20000613d000000000201043b000000000100041400000ae402200197000000040020008c000025320000c13d0000000103000031000000200030008c00000020040000390000000004034019000000030b0000290000255d0000013d000000030300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000030b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000254c0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000025480000c13d000000000006004b000025590000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000025cb0000613d0000001f01400039000000600110018f0000000002b10019000000000012004b0000000001000039000000010100403900000ae20020009c000025c30000213d0000000100100190000025c30000c13d000000400020043f0000001f0030008c000025c90000a13d00000000010b0433000300000001001d00000b49010000410000000000120435000200000002001d00000004012000390000000102000029000000000021043500000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000025c20000613d000000000201043b000000000100041400000ae402200197000000040020008c0000258c0000c13d0000000103000031000000200030008c00000020040000390000000004034019000000020b000029000025b70000013d000000020300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000020b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000025a60000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000025a20000c13d000000000006004b000025b30000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000025d70000613d0000001f01400039000000600110018f0000000001b1001900000ae20010009c000025c30000213d000000400010043f000000200030008c000025c90000413d00000000020b04330000000301000029000000000001042d000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c000104300000001f0530018f00000adf06300198000000400200043d0000000004620019000025e20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000025d20000c13d000025e20000013d0000001f0530018f00000adf06300198000000400200043d0000000004620019000025e20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000025de0000c13d000000000005004b000025ef0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000adc0020009c00000adc020080410000004002200210000000000112019f00002b6c000104300004000000000002000000000301001900000ae4021001970000000001000411000000000012004b000026660000613d000100000003001d000000400300043d00000b8602000041000000000023043500000ae401100197000200000003001d0000000402300039000000000012043500000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f00000001002001900000266b0000613d000000000201043b000000000100041400000ae402200197000000040020008c000026200000c13d0000000001000415000000040110008a00000005011002100000000103000031000000200030008c00000020040000390000000004034019000000020b0000290000264e0000013d000000020300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000020b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000263a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000026360000c13d000000000006004b000026470000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000001000415000000030110008a00000005011002100000000100200190000026670000613d0000001f02400039000000600420018f0000000002b40019000000000042004b0000000004000039000000010400403900000ae20020009c0000266c0000213d00000001004001900000266c0000c13d000000400020043f0000001f0030008c000026690000a13d00000000020b0433000000000002004b0000000003000039000000010300c039000000000032004b000026690000c13d0000000501100270000000000102001f000000000002004b0000000001000411000000010100c029000000000001042d0000000001000411000000000001042d000000000100001900002b6c00010430000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c000104300008000000000002000500000002001d000400000001001d000000000100041a000600000001001d2b6a2abf0000040f00000ae4051001970000000a01000039000000000401041a000000000004004b000027a30000613d000000000005004b000026d80000613d0000000503000029000000040200002900000000012300a9000000000002004b000026870000613d00000000022100d9000000000032004b000027ac0000c13d00000b320010009c00000000020000390000008002002039000000000321022f00000b330030009c00000040022021bf000000000321022f00000b340030009c00000020022021bf000000000321022f00000b2a0030009c00000010022021bf000000000321022f00000b350330009a0000000102200270000000b50220020f00000000023200a90000001202200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000121c0d90000000001006019000000000021004b000000010220408a000000000142004b000027a30000a13d000200000001001d000300000002001d000400000004001d000500000005001d2b6a249d0000040f0000000602000029000000000002004b000026da0000613d00000002032000b900000000022300d9000000020020006c000000050500002900000004070000290000000304000029000027ac0000c13d0000000002000415000000070220008a000000050220021000000b2a06100197000000000003004b000026e30000613d0000000002000415000000070220008a000000050220021000000000013600a900000000033100d9000000000063004b000026e40000613d000027ac0000013d000000000001041b000027a30000013d0000000002000415000000080220008a000000050220021000000b2a061001970000000001000019000000050500002900000004070000290000000304000029000026e40000013d00000000010000190000000502200270000000000201001f00000b2b0060009c000027ac0000213d00000b2b0360009900000000024300a9000026f00000613d00000000033200d9000000000043004b000027ac0000c13d000000000006004b000027a80000613d00000000037600a900000000046300d9000000000074004b000027ac0000c13d000000000032001a000027ac0000413d000000000232001a000027b40000613d000000000012004b000027a30000213d00000000022100d9000000000100041a000000000021001a000027ac0000413d000300000006001d000400000002001d0000000001210019000000000010041b000000000050043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f0000000100200190000027b20000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d000000000031043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000000500001900000005060000292b6a2b600000040f00000005030000290000000100200190000027b20000613d000000400400043d000000200100003900000000021404360000000201000039000200000002001d000000000012043500000b810040009c000027ba0000813d000100000004001d0000004001400039000000400010043f00000b360100004100000000001004430000000400300443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000027c00000613d000000000101043b000000000001004b0000000505000029000027b20000613d000000400700043d0000008401700039000000a0020000390000000000210435000000640170003900000003020000290000000000210435000000440170003900000004020000290000000000210435000000000100041000000ae4011001970000002402700039000000000012043500000b6101000041000000000017043500000004017000390000000102000039000000000021043500000001010000290000000001010433000000a4027000390000000000120435000000c402700039000000000001004b0000000208000029000027650000613d000000000300001900000000042300190000000006830019000000000606043300000000006404350000002003300039000000000013004b0000275e0000413d000000000212001900000000000204350000000002000414000000040050008c000027830000613d0000001f0110003900000b7c01100197000000c40110003900000adc0010009c00000adc01008041000000600110021000000adc0070009c00000adc0300004100000000030740190000004003300210000000000131019f00000adc0020009c00000adc02008041000000c002200210000000000121019f0000000002050019000200000007001d2b6a2b600000040f00000002070000290000000505000029000000600310027000010adc0030019d00030000000103550000000100200190000027860000613d00000ae20070009c000027ba0000213d000000400070043f0000000402000029000000060020002a0000000304000029000027ac0000413d0000000603200029000000400100043d00000000060200190000004002100039000600000003001d000000000032043500000020021000390000000000620435000000000041043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b3a011001c70000800d02000039000000020300003900000b71040000412b6a2b600000040f00000005050000290000000100200190000027b20000613d000000000005004b0000000001000039000000010100c0390000000602000029000000000001042d0000000003000019000000000002001a000027ac0000413d000026f60000013d00000b5801000041000000000010043f0000001101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c0001043000000b5801000041000000000010043f0000001201000039000000040010043f00000b4a0100004100002b6c0001043000000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000001042f000000400300043d00000b290010009c000027dd0000213d00000b730020009c000027dd0000813d0000008004200210000000000414019f0000000905000039000000000045041b00000020043000390000000000240435000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000010300003900000b31040000412b6a2b600000040f0000000100200190000027e40000613d000000000001042d00000b7601000041000000000013043500000adc0030009c00000adc03008041000000400130021000000ae6011001c700002b6c00010430000000000100001900002b6c000104300003000000000002000100000003001d000300000002001d00000ae401100197000200000001001d000000000010043f0000000201000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f00000001002001900000281d0000613d000000000101043b000000030200002900000ae402200197000300000002001d000000000020043f000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f00000001002001900000281d0000613d000000000101043b0000000102000029000000000021041b000000400100043d000000000021043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b8704000041000000020500002900000003060000292b6a2b600000040f00000001002001900000281d0000613d000000000001042d000000000100001900002b6c0001043000030000000000020000000006010019000000ff014001900000287f0000613d000000010010008c0000283e0000c13d000300000003001d000200000006001d000100000002001d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f000000010020019000002a080000613d000000000101043b0000000206000029000000000161013f00000ae40010019800000001020000290000000303000029000029730000613d000000400500043d00000044015000390000000000310435000000200150003900000b4b03000041000000000031043500000ae403200197000000240450003900000000003404350000004403000039000000000035043500000b880050009c000029f80000813d0000008003500039000000400030043f00000000030504330000000002000414000000040060008c000028d50000c13d00000001040000310000000002000019000000000004004b000028e90000613d00000ae20040009c000029f80000213d0000001f0140003900000b7c011001970000003f0110003900000b7c03100197000000400100043d0000000003310019000000000013004b0000000006000039000000010600403900000ae20030009c000029f80000213d0000000100600190000029f80000c13d000000400030043f000000000341043600000b7c054001980000001f0640018f00000000045300190000000307000367000028710000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b0000286d0000c13d000000000006004b000028eb0000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000540435000028eb0000013d000300000003001d000200000006001d000100000002001d00000b260100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f000000010020019000002a080000613d000000000301043b000000400200043d000000440120003900000003040000290000000000410435000000200120003900000b4b0400004100000000004104350000004404000039000000000042043500000ae40d30019700000024032000390000000000d3043500000b470020009c000000020c000029000029f80000213d0000008003200039000000400030043f000000000302043300000000020004140000000400c0008c000028fd0000c13d00000001030000310000000002000019000000000003004b000029140000613d00000ae20030009c000029f80000213d0000001f0130003900000b7c011001970000003f0110003900000b7c04100197000000400100043d0000000004410019000000000014004b0000000006000039000000010600403900000ae20040009c000029f80000213d0000000100600190000029f80000c13d000000400040043f000000000431043600000b7c063001980000001f0730018f00000000056400190000000308000367000028c70000613d000000000908034f000000000a040019000000009b09043c000000000aba043600000000005a004b000028c30000c13d000000000007004b000029160000613d000000000668034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000029160000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000000020600192b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc04100197000000000004004b000028550000c13d00000060010000390000008003000039000000010020019000002a000000c13d0000000001010433000000000001004b000029f70000613d00000ae10010009c000029fe0000213d0000001f0010008c000029fe0000a13d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b000029fe0000c13d000000000001004b000029f70000c13d00002a000000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000000020c001900030000000d001d2b6a2b600000040f000000030d000029000000020c000029000000010220015f0003000000010355000000600110027000010adc0010019d00000adc03100197000000000003004b000028ab0000c13d000000600100003900000080040000390000000105000029000000010020019000002a000000c13d0000000001010433000000000001004b000029280000613d00000ae10010009c000029fe0000213d000000200010008c000029fe0000413d0000000001040433000000000001004b0000000002000039000000010200c039000000000021004b000029fe0000c13d000000000001004b00002a000000613d00000ae401500197000000400b00043d0000002402b00039000000000012043500000b540100004100000000001b043500000ae401c001970000000402b00039000000000012043500000000010004140000000400d0008c000029380000c13d000000200030008c00000020040000390000000004034019000029650000013d00000adc00b0009c00000adc0200004100000000020b4019000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b55011001c700000000020d001900030000000b001d2b6a2b600000040f000000030b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000029540000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000029500000c13d000000000006004b000029610000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002a090000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000ae20010009c000029f80000213d0000000100200190000029f80000c13d000000400010043f000000200030008c000029f70000813d000029fe0000013d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f000000010020019000002a080000613d000000000101043b00000b3602000041000000000020044300000ae401100197000200000001001d0000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f000000010020019000002a080000613d000000000101043b000000000001004b000029fe0000613d000000400500043d00000b5301000041000000000015043500000004015000390000000303000029000000000031043500000000010004140000000202000029000000040020008c000029b00000613d00000adc0050009c00000adc030000410000000003054019000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c7000200000005001d2b6a2b600000040f00000002050000290000000303000029000000600410027000010adc0040019d0003000000010355000000010020019000002a180000613d00000ae20050009c000029f80000213d000000400050043f00000000010004140000000104000029000000040040008c000029bc0000c13d00000001020000390000000101000031000000000001004b000029cd0000c13d000029f50000013d00000adc0010009c00000adc01008041000000c001100210000000000003004b000029c50000613d00000b40011001c700008009020000390000000005000019000029c60000013d00000000020400192b6a2b600000040f0003000000010355000000600110027000010adc0010019d00000adc01100197000000000001004b000029f50000613d00000ae20010009c000029f80000213d0000001f0410003900000b7c044001970000003f0440003900000b7c05400197000000400400043d0000000005540019000000000045004b0000000006000039000000010600403900000ae20050009c000029f80000213d0000000100600190000029f80000c13d000000400050043f000000000614043600000b7c031001980000001f0410018f00000000013600190000000305000367000029e80000613d000000000705034f000000007807043c0000000006860436000000000016004b000029e40000c13d000000000004004b000029f50000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000010020019000002a150000613d000000000001042d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c00010430000000400100043d00000b6f02000041000000000021043500000adc0010009c00000adc01008041000000400110021000000ae6011001c700002b6c00010430000000000001042f0000001f0530018f00000adf06300198000000400200043d000000000462001900002a240000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002a100000c13d00002a240000013d000000400100043d00000b6d0200004100002a020000013d00000adc034001970000001f0530018f00000adf06300198000000400200043d000000000462001900002a240000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002a200000c13d000000000005004b00002a310000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000adc0020009c00000adc020080410000004002200210000000000112019f00002b6c0001043000000b5a021000d1000000000001004b00002a3d0000613d00000000011200d900000b5a0010009c00002a3f0000c13d00000b5b0120012a000000000001042d00000b5801000041000000000010043f0000001101000039000000040010043f00000b4a0100004100002b6c000104300000000004010019000000400500043d00000044015000390000000000310435000000200150003900000b4b03000041000000000031043500000ae402200197000000240350003900000000002304350000004402000039000000000025043500000b880050009c00002aaf0000813d0000008002500039000000400020043f00000000030504330000000002000414000000040040008c00002a870000c13d00000001040000310000000002000019000000000004004b00002a9b0000613d00000ae20040009c00002aaf0000213d0000001f0140003900000b7c011001970000003f0110003900000b7c03100197000000400100043d0000000003310019000000000013004b0000000006000039000000010600403900000ae20030009c00002aaf0000213d000000010060019000002aaf0000c13d000000400030043f000000000341043600000b7c054001980000001f0640018f0000000004530019000000030700036700002a790000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b00002a750000c13d000000000006004b00002a9d0000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f000000000054043500002a9d0000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000000020400192b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc04100197000000000004004b00002a5d0000c13d00000060010000390000008003000039000000010020019000002ab50000c13d0000000001010433000000000001004b00002aae0000613d00000ae10010009c00002abd0000213d0000001f0010008c00002abd0000a13d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b00002abd0000c13d000000000001004b00002ab50000613d000000000001042d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000400100043d00000b6f02000041000000000021043500000adc0010009c00000adc01008041000000400110021000000ae6011001c700002b6c00010430000000000100001900002b6c000104300003000000000002000000400200043d00000b8901000041000100000002001d000000000012043500000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f000000010020019000002b250000613d000000000201043b000000000100041400000ae402200197000000040020008c00002ae10000c13d0000000005000415000000030550008a00000005055002100000000103000031000000200030008c00000020040000390000000004034019000000010b00002900002b100000013d000000010300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000ae6011001c72b6a2b650000040f000000010b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002afb0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002af70000c13d000000000006004b00002b080000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000005000415000000020550008a00000005055002100000000100200190000000000100001900002b220000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000ae20010009c00002b260000213d000000010020019000002b260000c13d000000400010043f0000001f0030008c00002b230000a13d00000000010b043300000ae40010009c00002b230000213d0000000502500270000000000201001f000000000001042d000000000100001900002b6c00010430000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000001042f00000adc0010009c00000adc01008041000000400110021000000adc0020009c00000adc020080410000006002200210000000000112019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000002b400000613d000000000101043b000000000001042d000000000100001900002b6c0001043000000000050100190000000000200443000000050030008c00002b500000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b00002b480000413d00000adc0030009c00000adc030080410000006001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b8a011001c700000000020500192b6a2b650000040f000000010020019000002b5f0000613d000000000101043b000000000001042d000000000001042f00002b63002104210000000102000039000000000001042d0000000002000019000000000001042d00002b68002104230000000102000039000000000001042d0000000002000019000000000001042d00002b6a0000043200002b6b0001042e00002b6c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffd039f62200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000140000000000000000000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000000000000000000000000000fffffffffffffec07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffee97f7f3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f242862100000000000000000000000000000000000000000000000000000000fbfa77cf0000000000000000000000000000000000000000000000000000000053796e635377617020436c6173736963204c5000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf2f000000000000000000000000000000000000000000000000000000000000002d43000000000000000000000000000000000000000000000000000000000000534c50000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000001c0000001000000000000000000000000000000000000000000000000000000000000000000000000007132bb7e00000000000000000000000000000000000000000000000000000000d505acce00000000000000000000000000000000000000000000000000000000ee97f7f200000000000000000000000000000000000000000000000000000000fbfa77ce00000000000000000000000000000000000000000000000000000000fbfa77cf00000000000000000000000000000000000000000000000000000000ff9c8ac600000000000000000000000000000000000000000000000000000000fff6cae900000000000000000000000000000000000000000000000000000000ee97f7f300000000000000000000000000000000000000000000000000000000f66eab5b00000000000000000000000000000000000000000000000000000000d9d98ce300000000000000000000000000000000000000000000000000000000d9d98ce400000000000000000000000000000000000000000000000000000000da81573100000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000d505accf00000000000000000000000000000000000000000000000000000000d6ea073d00000000000000000000000000000000000000000000000000000000a5a4103000000000000000000000000000000000000000000000000000000000b1dd61b500000000000000000000000000000000000000000000000000000000b1dd61b600000000000000000000000000000000000000000000000000000000bc25cf7700000000000000000000000000000000000000000000000000000000d21220a700000000000000000000000000000000000000000000000000000000a5a4103100000000000000000000000000000000000000000000000000000000a9059cbb000000000000000000000000000000000000000000000000000000008b4c546f000000000000000000000000000000000000000000000000000000008b4c54700000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a287c795000000000000000000000000000000000000000000000000000000007132bb7f000000000000000000000000000000000000000000000000000000007ecebe000000000000000000000000000000000000000000000000000000000027b0bce9000000000000000000000000000000000000000000000000000000005a76f25d00000000000000000000000000000000000000000000000000000000613255aa00000000000000000000000000000000000000000000000000000000613255ab0000000000000000000000000000000000000000000000000000000067e4ac2c0000000000000000000000000000000000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000005a76f25e000000000000000000000000000000000000000000000000000000005cffe9de00000000000000000000000000000000000000000000000000000000313ce56600000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000003644e51500000000000000000000000000000000000000000000000000000000443cb4bc0000000000000000000000000000000000000000000000000000000027b0bcea000000000000000000000000000000000000000000000000000000002c0198cc000000000000000000000000000000000000000000000000000000000902f1ab000000000000000000000000000000000000000000000000000000000dfe1680000000000000000000000000000000000000000000000000000000000dfe16810000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000023b872dd000000000000000000000000000000000000000000000000000000000902f1ac00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000006fdde020000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000007f293f70000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000003e7286a8da5cb5b00000000000000000000000000000000000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000400000080000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000080000000000000000002000000000000000000000000000000000000400000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a000000000000000000000000000000ffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000ffffffffffffffffff000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000084f513e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f0200000000000000000000000000000000000060000000000000000000000000d175a80c109434bb89948928ab2475a6647c94244cb70002197896423c883363796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0200000000000000000000000000000000000000000000000000000000000000c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc68b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f000000000000000000000000000000000000000000000000ffffffffffffff3f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9000000000000000000000000000000000000000000000000ffffffffffffff1f1901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000008000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffffffffffe0000000000000000000000000000000000000000000000003ffffffffffffffe0036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db000000000000000000000000000000000000000240000028000000000000000000200000000000000000000000000000000000080000000000000000000000000d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a6205f24a082c01e6c705e20c1a026c246eedf9800b87b84440f05e8271aaf272e1a7d4d00000000000000000000000000000000000000000000000000000000f9609f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000608dbcbb00000000000000000000000000000000000000000000000000000000aa077b6dc26efdfd606d4340c04a5a222ff968ec199f0b184f4c0f7a5c8e8d714e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000008000000000000000000000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000000de0b6b3a764000023e30c8b00000000000000000000000000000000000000000000000000000000439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd908c379a00000000000000000000000000000000000000000000000000000000049455243333135365f43414c4c4241434b5f4641494c454400000000000000000000000000000000000000000000000000000064000000000000000000000000843e8218000000000000000000000000000000000000000000000000000000000d7d75e01ab95780d3cd1c8ec0dd6c2ce19e3a20427eec8bf53283b6fb8e95f04e54000000000000000000000000000000000000000000000000000000000000494e53554646494349454e545f464c4153485f4c4f414e5f4645455f414d4f550000000000000000000000000000000000000084000000000000000000000000494e56414c49445f504f53545f4c4f414e5f42414c414e434500000000000000494e53554646494349454e545f464c4153485f4c4f414e5f42414c414e4345007fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a01626ba7e000000000000000000000000000000000000000000000000000000008baa579f00000000000000000000000000000000000000000000000000000000203d82d8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000002c00000000000000000b12d13eb000000000000000000000000000000000000000000000000000000001d59ca820000000000000000000000000000000000000000000000000000000090b8ec18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000800000000000000000422815a3c1bfb8dd07ed3e682f42d4d640425d52f0b08da06718c8a2932e2802a6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4900000000000000000000000000000001000000000000000000000000000000002049973000000000000000000000000000000000000000000000000000000000a8137fff86647d8a402117b9c5dbda627f721d3773338fb9678c83e54ed3908035278d1200000000000000000000000000000000000000000000000000000000d226f9d40000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a7000000000000000000000000000000000000000000000000000000002c0198cc00000000000000000000000000000000000000000000000000000000d505accf00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1795d89b4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc0000000000000000000000000000000000000000000000000ffffffffffffffdf00000000000000000000000000000000000000000000000100000000000000004625a94d000000000000000000000000000000000000000000000000000000000a992e0c00000000000000000000000000000000000000000000000000000000abcef554000000000000000000000000000000000000000000000000000000008c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925000000000000000000000000000000000000000000000000ffffffffffffff804ccb20c00000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c03decba0c0ee764cd65b60d582689995e65b36f16c2a95754a88aed4b942503
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.