Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 11317800 | 1434 days ago | IN | 0 ETH | 0.38199611 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
COREForkMigrator
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-24 */ // Sources flattened with hardhat v2.0.1 https://hardhat.org // File @uniswap/v2-core/contracts/interfaces/[email protected] pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); 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 value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // File @uniswap/lib/contracts/libraries/[email protected] pragma solidity >=0.5.0; library AddressStringUtil { // converts an address to the uppercase hex string, extracting only len bytes (up to 20, multiple of 2) function toAsciiString(address addr, uint len) pure internal returns (string memory) { require(len % 2 == 0 && len > 0 && len <= 40, "AddressStringUtil: INVALID_LEN"); bytes memory s = new bytes(len); uint addrNum = uint(addr); for (uint i = 0; i < len / 2; i++) { // shift right and truncate all but the least significant byte to extract the byte at position 19-i uint8 b = uint8(addrNum >> (8 * (19 - i))); // first hex character is the most significant 4 bits uint8 hi = b >> 4; // second hex character is the least significant 4 bits uint8 lo = b - (hi << 4); s[2 * i] = char(hi); s[2 * i + 1] = char(lo); } return string(s); } // hi and lo are only 4 bits and between 0 and 16 // this method converts those values to the unicode/ascii code point for the hex representation // uses upper case for the characters function char(uint8 b) pure private returns (byte c) { if (b < 10) { return byte(b + 0x30); } else { return byte(b + 0x37); } } } // File @uniswap/lib/contracts/libraries/[email protected] // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.5.0; // produces token descriptors from inconsistent or absent ERC20 symbol implementations that can return string or bytes32 // this library will always produce a string symbol to represent the token library SafeERC20Namer { function bytes32ToString(bytes32 x) pure private returns (string memory) { bytes memory bytesString = new bytes(32); uint charCount = 0; for (uint j = 0; j < 32; j++) { byte char = x[j]; if (char != 0) { bytesString[charCount] = char; charCount++; } } bytes memory bytesStringTrimmed = new bytes(charCount); for (uint j = 0; j < charCount; j++) { bytesStringTrimmed[j] = bytesString[j]; } return string(bytesStringTrimmed); } // assumes the data is in position 2 function parseStringData(bytes memory b) pure private returns (string memory) { uint charCount = 0; // first parse the charCount out of the data for (uint i = 32; i < 64; i++) { charCount <<= 8; charCount += uint8(b[i]); } bytes memory bytesStringTrimmed = new bytes(charCount); for (uint i = 0; i < charCount; i++) { bytesStringTrimmed[i] = b[i + 64]; } return string(bytesStringTrimmed); } // uses a heuristic to produce a token name from the address // the heuristic returns the full hex of the address string in upper case function addressToName(address token) pure private returns (string memory) { return AddressStringUtil.toAsciiString(token, 40); } // uses a heuristic to produce a token symbol from the address // the heuristic returns the first 6 hex of the address string in upper case function addressToSymbol(address token) pure private returns (string memory) { return AddressStringUtil.toAsciiString(token, 6); } // calls an external view token contract method that returns a symbol or name, and parses the output into a string function callAndParseStringReturn(address token, bytes4 selector) view private returns (string memory) { (bool success, bytes memory data) = token.staticcall(abi.encodeWithSelector(selector)); // if not implemented, or returns empty data, return empty string if (!success || data.length == 0) { return ""; } // bytes32 data always has length 32 if (data.length == 32) { bytes32 decoded = abi.decode(data, (bytes32)); return bytes32ToString(decoded); } else if (data.length > 64) { return abi.decode(data, (string)); } return ""; } // attempts to extract the token symbol. if it does not implement symbol, returns a symbol derived from the address function tokenSymbol(address token) internal view returns (string memory) { // 0x95d89b41 = bytes4(keccak256("symbol()")) string memory symbol = callAndParseStringReturn(token, 0x95d89b41); if (bytes(symbol).length == 0) { // fallback to 6 uppercase hex of address return addressToSymbol(token); } return symbol; } // attempts to extract the token name. if it does not implement name, returns a name derived from the address function tokenName(address token) internal view returns (string memory) { // 0x06fdde03 = bytes4(keccak256("name()")) string memory name = callAndParseStringReturn(token, 0x06fdde03); if (bytes(name).length == 0) { // fallback to full hex of address return addressToName(token); } return name; } } // File @uniswap/v2-core/contracts/interfaces/[email protected] pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // File contracts/v612/ICOREGlobals.sol // COPYRIGHT cVault.finance TEAM // NO COPY // COPY = BAD // This code is provided with no assurances or guarantees of any kind. Use at your own responsibility. interface ICOREGlobals { function CORETokenAddress() external view returns (address); function COREGlobalsAddress() external view returns (address); function COREDelegatorAddress() external view returns (address); function COREVaultAddress() external returns (address); function COREWETHUniPair() external view returns (address); function UniswapFactory() external view returns (address); function TransferHandler() external view returns (address); function addDelegatorStateChangePermission(address that, bool status) external; function isStateChangeApprovedContract(address that) external view returns (bool); } // File @openzeppelin/contracts-ethereum-package/contracts/token/ERC20/[email protected] pragma solidity ^0.6.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File @openzeppelin/contracts-ethereum-package/contracts/math/[email protected] pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File @openzeppelin/contracts-ethereum-package/contracts/[email protected] pragma solidity >=0.4.24 <0.7.0; /** * @title Initializable * * @dev Helper contract to support initializer functions. To use it, replace * the constructor with a function that has the `initializer` modifier. * WARNING: Unlike constructors, initializer functions must be manually * invoked. This applies both to deploying an Initializable contract, as well * as extending an Initializable contract via inheritance. * WARNING: When used with inheritance, manual care must be taken to not invoke * a parent initializer twice, or ensure that all initializers are idempotent, * because this is not dealt with automatically as with constructors. */ contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private initializing; /** * @dev Modifier to use in the initializer function of a contract. */ modifier initializer() { require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized"); bool isTopLevelCall = !initializing; if (isTopLevelCall) { initializing = true; initialized = true; } _; if (isTopLevelCall) { initializing = false; } } /// @dev Returns true if and only if the function is running in the constructor function isConstructor() private view returns (bool) { // extcodesize checks the size of the code stored in an address, and // address returns the current address. Since the code is still not // deployed when running a constructor, any checks on its code size will // yield zero, making it an effective way to detect if a contract is // under construction or not. address self = address(this); uint256 cs; assembly { cs := extcodesize(self) } return cs == 0; } // Reserved storage space to allow for layout changes in the future. uint256[50] private ______gap; } // File @openzeppelin/contracts-ethereum-package/contracts/GSN/[email protected] pragma solidity ^0.6.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract ContextUpgradeSafe is Initializable { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. function __Context_init() internal initializer { __Context_init_unchained(); } function __Context_init_unchained() internal initializer { } function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } uint256[50] private __gap; } // File @openzeppelin/contracts-ethereum-package/contracts/access/[email protected] pragma solidity ^0.6.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract OwnableUpgradeSafe is Initializable, ContextUpgradeSafe { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ function __Ownable_init() internal initializer { __Context_init_unchained(); __Ownable_init_unchained(); } function __Ownable_init_unchained() internal initializer { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } uint256[49] private __gap; } // File contracts/v612/COREForkMigrator.sol pragma solidity 0.6.12; // import "hardhat/console.sol"; // import "@openzeppelin/contracts/access/Ownable.sol"; interface ICOREVault { function addPendingRewards(uint256 _) external; } interface IUNICORE { function viewGovernanceLevel(address) external returns (uint8); function setVault(address) external; function burnFromUni(uint256) external; function viewUNIv2() external returns (address); function viewUniBurnRatio() external returns (uint256); function setGovernanceLevel(address, uint8) external; function balanceOf(address) external returns (uint256); function setUniBurnRatio(uint256) external; function viewwWrappedUNIv2() external returns (address); function burnToken(uint256) external; function totalSupply() external returns (uint256); } interface IUNICOREVault { function userInfo(uint,address) external view returns (uint256, uint256); } interface IProxyAdmin { function owner() external returns (address); function transferOwnership(address) external; function upgrade(address, address) external; } interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; } interface ILGE { function claimLP() external; } interface ITransferContract { function run(address) external; } interface ICORE { function setShouldTransferChecker(address) external; } interface IFIX { function unwrapAndSendToMigrator() external; } interface ITimelockVault { function LPContributed(address) external view returns (uint256); } contract TENSFeeApproverPermanent { address public tokenETHPair; constructor() public { tokenETHPair = 0xB1b537B7272BA1EDa0086e2f480AdCA72c0B511C; } function calculateAmountsAfterFee( address sender, address recipient, uint256 amount ) public returns (uint256 transferToAmount, uint256 transferToFeeDistributorAmount, uint256 burn) { // Will block all buys and liquidity removals if(sender == tokenETHPair || recipient == tokenETHPair) { // This is how a legend dies require(false, "TENS is deprecated."); } // No fees // school is out transferToAmount = amount; } } contract COREForkMigrator is OwnableUpgradeSafe { using SafeMath for uint256; /// EVENTS event ETHSendToLGE(uint256); ///Variables bool public LPClaimedFromLGE; bool private locked; IERC20 public CORE; ICOREVault public coreVault; IUniswapV2Factory public uniswapFactory; IWETH wETH; address public CORExWETHPair; address payable public CORE_MULTISIG; address public postLGELPTokenAddress; address public Fee_Approver_Permanent; address public Vault_Permanent; uint256 public totalLPClaimed; uint256 public totalETHSent; uint256 contractStartTimestamp; mapping (address => bool) LPClaimed; //// UNICORE Specific Variables bool public UNICORE_Migrated; bool public UNICORE_Liquidity_Transfered; address public UNICORE_Vault; address public UNICORE_Token; address public UNICORE_Reactor_Token; // Slit token for liquidity uint256 public UNICORE_Snapshot_Block; uint256 public Ether_Total_For_UNICORE_LP; uint256 public UNICORE_Total_LP_Supply; mapping (address => uint256) balanceUNICOREReactor; mapping (address => uint256) balanceUNICOREReactorInVaultOnSnapshot; // ENCORE Specific variables bool public ENCORE_Liquidity_Transfered; bool public ENCORE_Transfers_Closed; address public ENCORE_Vault; address public ENCORE_Vault_Timelock; address public ENCORE_Fee_Approver; address public ENCORE_Token; address public ENCORE_Timelock_Vault; address public ENCORE_Proxy_Admin; address public ENCORE_LP_Token; address public ENCORE_Migrator; uint256 public Ether_Credit_Per_ENCORE_LP; uint256 public Ether_Total_For_Encore_LP; uint256 public ENCORE_Total_LP_Supply; mapping (address => uint256) balanceENCORELP; // No need for snapshot /// TENS Specific functions and variables bool public TENS_Liquidity_Transfered; address public TENS_Vault; address public TENS_Token; address public TENS_Proxy_Admin; address public TENS_LP_Token; address public TENS_Fee_Approver_Permanent; uint256 public Ether_Total_For_TENS_LP; uint256 public TENS_Total_LP_Supply; mapping (address => uint256) balanceTENSLP; // No need for snapshot /// Reentrancy modifier modifier lock() { require(locked == false, 'CORE Migrator: Execution Locked'); locked = true; _; locked = false; } // Constructor function initialize() initializer public{ require(tx.origin == 0x5A16552f59ea34E44ec81E58b3817833E9fD5436); require(msg.sender == 0x5A16552f59ea34E44ec81E58b3817833E9fD5436); OwnableUpgradeSafe.__Ownable_init(); CORE_MULTISIG = 0x5A16552f59ea34E44ec81E58b3817833E9fD5436; contractStartTimestamp = block.timestamp; // Permanent vault and fee approver Vault_Permanent = 0xfeD4Ec1348a4068d4934E09492428FD92E399e5c; Fee_Approver_Permanent = 0x43Dd7026284Ac8f95Eb02bB1bd68D0699B0Ae9cA; //UNICORE UNICORE_Vault = 0x6F31ECD8110bcBc679AEfb74c7608241D1B78949; UNICORE_Token = 0x5506861bbb104Baa8d8575e88E22084627B192D8; //TENS TENS_Vault = 0xf983EcF91195bD63DE8445997082680E688749BC; TENS_Token = 0x776CA7dEd9474829ea20AD4a5Ab7a6fFdB64C796; TENS_Proxy_Admin = 0x2d0C48C5BF930A09F8CD6fae5aC5A16b24e1723a; TENS_LP_Token = 0xB1b537B7272BA1EDa0086e2f480AdCA72c0B511C; TENS_Fee_Approver_Permanent = 0x22C91cDd1E00cD4d7D029f0dB94020Fce3C486e3; ENCORE_Proxy_Admin = 0x1964784ba40c9fD5EED1070c1C38cd5D1d5F9f55; ENCORE_Token = 0xe0E4839E0c7b2773c58764F9Ec3B9622d01A0428; ENCORE_LP_Token = 0x2e0721E6C951710725997928DcAAa05DaaFa031B; ENCORE_Fee_Approver = 0xF3c3ff0ea59d15e82b9620Ed7406fa3f6A261f98; ENCORE_Vault = 0xdeF7BdF8eCb450c1D93C5dB7C8DBcE5894CCDaa9; ENCORE_Vault_Timelock = 0xC2Cb86437355f36d42Fb8D979ab28b9816ac0545; Ether_Credit_Per_ENCORE_LP = uint256(1 ether).div(2).mul(10724).div(10000); // Account for 7.24% fee on LGE ICOREGlobals globals = ICOREGlobals(0x255CA4596A963883Afe0eF9c85EA071Cc050128B); CORE = IERC20(globals.CORETokenAddress()); uniswapFactory = IUniswapV2Factory(globals.UniswapFactory()); coreVault = ICOREVault(globals.COREVaultAddress()); CORExWETHPair = globals.COREWETHUniPair(); wETH = IWETH(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); } //Enables recieving eth receive() external payable{ } function setLPTokenAddress(address _token) onlyOwner public { postLGELPTokenAddress = _token; } function claimLP() lock public { require(LPClaimedFromLGE == true, "Nothing to claim yet"); require(getOwedLP(msg.sender) > 0, "nothing to claim"); require(IERC20(postLGELPTokenAddress).transfer(msg.sender, getOwedLP(msg.sender))); LPClaimed[msg.sender] = true; } function getOwedLP(address user) public view returns (uint256 LPDebtForUser) { if(postLGELPTokenAddress == address (0)) return 0; if(LPClaimedFromLGE == false) return 0; if(LPClaimed[msg.sender] == true) return 0; uint256 balanceUNICORE = viewCreditedUNICOREReactors(user); uint256 balanceENCORE = viewCreditedENCORETokens(user); uint256 balanceTENS = viewCreditedTENSTokens(user); if(balanceUNICORE == 0 && balanceENCORE == 0 && balanceTENS == 0) return 0; uint256 totalETH = Ether_Total_For_TENS_LP.add(Ether_Total_For_UNICORE_LP).add(Ether_Total_For_Encore_LP); uint256 totalETHEquivalent; if(balanceUNICORE > 0){ totalETHEquivalent = Ether_Total_For_UNICORE_LP.div(UNICORE_Total_LP_Supply).mul(balanceUNICORE); } if(balanceENCORE > 0){ totalETHEquivalent = totalETHEquivalent.add(Ether_Total_For_Encore_LP).div(ENCORE_Total_LP_Supply).mul(balanceENCORE); } if(balanceTENS > 0){ totalETHEquivalent = totalETHEquivalent.add(Ether_Total_For_TENS_LP).div(TENS_Total_LP_Supply).mul(balanceTENS); } LPDebtForUser = totalETHEquivalent.mul(totalLPClaimed).div(totalETH).div(1e18); } //////////// /// Unicore specific functions ////////// function snapshotUNICORE(address[] memory _addresses, uint256[] memory balances) onlyOwner public { require(UNICORE_Migrated == true, "UNICORE Deposits are still not closed"); uint256 length = _addresses.length; require(length == balances.length, "Wrong input"); for (uint256 i = 0; i < length; i++) { balanceUNICOREReactorInVaultOnSnapshot[_addresses[i]] = balances[i]; } } function setUnicoreReactorToken ( address _token ) onlyOwner public { UNICORE_Reactor_Token = _token; } function viewCreditedUNICOREReactors(address person) public view returns (uint256) { if(UNICORE_Migrated) { return balanceUNICOREReactorInVaultOnSnapshot[person].add(balanceUNICOREReactor[person]); } else { (uint256 userAmount, ) = IUNICOREVault(UNICORE_Vault).userInfo(0, person); return balanceUNICOREReactor[person].add(userAmount); } } function addUNICOREReactors() lock public { require(UNICORE_Migrated == false, "UNICORE Deposits closed"); uint256 amtAdded = transferTokenHereSupportingFeeOnTransferTokens(UNICORE_Reactor_Token, IERC20(UNICORE_Reactor_Token).balanceOf(msg.sender)); balanceUNICOREReactor[msg.sender] = balanceUNICOREReactor[msg.sender].add(amtAdded); } // Unicore migraiton is special and a-typical // Because of the extensive changes to the code-base. function transferUNICORELiquidity() onlyOwner public { require(ENCORE_Liquidity_Transfered == true, "ENCORE has to go first"); require(UNICORE_Liquidity_Transfered == false, "UNICORE already transfered"); // Make sure we have the proper permissions. require(IUNICORE(UNICORE_Token).viewGovernanceLevel(address(this)) == 2, "Incorrectly set governance level, can't proceed"); require(IUNICORE(UNICORE_Token).viewGovernanceLevel(0x5A16552f59ea34E44ec81E58b3817833E9fD5436) == 2, "Incorrectly set governance level, can't proceed"); require(IUNICORE(UNICORE_Token).viewGovernanceLevel(0x05957F3344255fDC9fE172E30016ee148D684313) == 0, "Incorrectly set governance level, can't proceed"); require(IUNICORE(UNICORE_Token).viewGovernanceLevel(0xE6f32f17BE3Bf031B4B6150689C1f17cEcA375C8) == 0, "Incorrectly set governance level, can't proceed"); require(IUNICORE(UNICORE_Token).viewGovernanceLevel(0xF4D7a0E8a68345442172F45cAbD272c25320AA96) == 0, "Incorrectly set governance level, can't proceed"); require(address(this).balance >= 1e18, " Feed me eth"); IUNICORE unicore = IUNICORE(UNICORE_Token); wETH.deposit{value: 1e18}(); IUniswapV2Pair pair = IUniswapV2Pair(unicore.viewUNIv2()); bool token0IsWETH = pair.token0() == address(wETH); (uint256 reserve0, uint256 reserve1, ) = pair.getReserves(); wETH.transfer(address(pair), 1e18); uint256 amtUnicore; if(token0IsWETH){ amtUnicore = getAmountOut(1e18, reserve0, reserve1); pair.swap(0, amtUnicore, address(this), ""); } else{ amtUnicore = getAmountOut(1e18, reserve1, reserve0); pair.swap(amtUnicore, 0, address(this), ""); } unicore.setVault(address(this)); unicore.setUniBurnRatio(100); uint256 balUnicoreOfUniPair = unicore.balanceOf(unicore.viewUNIv2()); uint256 totalSupplywraps = IERC20(unicore.viewwWrappedUNIv2()).totalSupply(); UNICORE_Total_LP_Supply = totalSupplywraps; uint256 input = (balUnicoreOfUniPair-1).mul(totalSupplywraps).div(balUnicoreOfUniPair); unicore.burnFromUni(input); { (uint256 reserve0, uint256 reserve1, ) = pair.getReserves(); uint256 amtWETH; uint256 previousPairBalance = unicore.balanceOf(address(pair)); IERC20(address(unicore)).transfer(address(pair), unicore.balanceOf(address(this))); uint256 nowPairBalance = unicore.balanceOf(address(pair)); if(token0IsWETH){ amtWETH = getAmountOut(nowPairBalance- previousPairBalance, reserve1, reserve0); pair.swap(amtWETH, 0, address(this), ""); ( reserve0, reserve1, ) = pair.getReserves(); require(reserve0 < 1e18, " Burn not sufficient"); } else{ amtWETH = getAmountOut(nowPairBalance- previousPairBalance, reserve0, reserve1); pair.swap(0, amtWETH, address(this), ""); ( reserve0, reserve1, ) = pair.getReserves(); require(reserve1 < 1e18, " Burn not sufficient"); } uint256 UNICORETotalSupply = unicore.totalSupply(); // 0.6 eth per is the floor we should get more here require(amtWETH > UNICORETotalSupply.mul(60).div(100), " Didn't get enough ETH "); require(amtWETH > 500 ether, " Didn't get enough ETH"); // sanity Ether_Total_For_UNICORE_LP = amtWETH .mul(Ether_Credit_Per_ENCORE_LP) .div(1e18); address wethFixed = address(new fixWETH()); wETH.transfer(wethFixed, amtWETH); { uint256 ethBalBefore = address(this).balance; IFIX(wethFixed).unwrapAndSendToMigrator(); uint256 newETH = address(this).balance.sub(ethBalBefore); require(newETH == amtWETH, "Fix unsucessful"); } unicore.setGovernanceLevel(address(this), 1); UNICORE_Liquidity_Transfered = true; } } //////////// /// ENCORE specific functions ////////// function viewCreditedENCORETokens(address person) public view returns (uint256) { (uint256 userAmount, ) = IUNICOREVault(ENCORE_Vault).userInfo(0, person); uint256 userAmountTimelock = ITimelockVault(ENCORE_Vault_Timelock).LPContributed(person); return balanceENCORELP[person].add(userAmount).add(userAmountTimelock); } // Add LP to balance here function addENCORELPTokens() lock public { require(ENCORE_Transfers_Closed == false, "ENCORE LP transfers closed"); uint256 amtAdded = transferTokenHereSupportingFeeOnTransferTokens(ENCORE_LP_Token, IERC20(ENCORE_LP_Token).balanceOf(msg.sender)); balanceENCORELP[msg.sender] = balanceENCORELP[msg.sender].add(amtAdded); } function closeENCORETransfers() onlyOwner public { require(block.timestamp >= contractStartTimestamp.add(2 days), "2 day grace ongoing"); ENCORE_Transfers_Closed = true; } function transferENCORELiquidity(address privateTransferContract) onlyOwner public { require(ENCORE_Transfers_Closed == true, "ENCORE LP transfers still ongoing"); require(ENCORE_Liquidity_Transfered == false, "Already transfered liquidity"); require(IProxyAdmin(ENCORE_Proxy_Admin).owner() == address(this), "Set me as the proxy owner for ENCORE"); require(privateTransferContract != address(0)); IProxyAdmin(ENCORE_Proxy_Admin).transferOwnership(privateTransferContract); // We check 2 contracts with burned LP uint256 burnedLPTokens = IERC20(ENCORE_LP_Token).balanceOf(ENCORE_Token) .add(IERC20(ENCORE_LP_Token).balanceOf(0x2a997EaD7478885a66e6961ac0837800A07492Fc)); ENCORE_Total_LP_Supply = IERC20(ENCORE_LP_Token).totalSupply() - burnedLPTokens; // We calculate total owed to ENCORE LPs Ether_Total_For_Encore_LP = ENCORE_Total_LP_Supply // burned ~100 .mul(Ether_Credit_Per_ENCORE_LP) .div(1e18); // We send out all LP tokens we have IERC20(ENCORE_LP_Token) .transfer(ENCORE_LP_Token, IERC20(ENCORE_LP_Token).balanceOf(address(this))); uint256 ethBalBefore = address(this).balance; ITransferContract(privateTransferContract).run(ENCORE_LP_Token); uint256 newETH = address(this).balance.sub(ethBalBefore); // Make sure we got eth require(newETH > 9200 ether, "Did not recieve enough ether"); //60% max require(newETH.mul(60).div(100) > Ether_Total_For_Encore_LP, "Too much for encore LP"); require(ENCORE_Proxy_Admin != address(0) && Fee_Approver_Permanent != address(0) && Vault_Permanent != address(0), "Sanity check failue"); IProxyAdmin(ENCORE_Proxy_Admin).upgrade(ENCORE_Fee_Approver, Fee_Approver_Permanent); IProxyAdmin(ENCORE_Proxy_Admin).upgrade(ENCORE_Vault, Vault_Permanent); _sendENCOREProxyAdminBackToMultisig(); ENCORE_Liquidity_Transfered = true; } function sendENCOREProxyAdminBackToMultisig() onlyOwner public { return _sendENCOREProxyAdminBackToMultisig(); } function _sendENCOREProxyAdminBackToMultisig() internal { IProxyAdmin(ENCORE_Proxy_Admin).transferOwnership(CORE_MULTISIG); require(IProxyAdmin(ENCORE_Proxy_Admin).owner() == CORE_MULTISIG, "Proxy Ownership Transfer Not Successfull"); } //////////// /// TENS specific functions ////////// function addTENSLPTokens() lock public { require(ENCORE_Transfers_Closed == false, "TENS LP transfers still ongoing"); uint256 amtAdded = transferTokenHereSupportingFeeOnTransferTokens(TENS_LP_Token, IERC20(TENS_LP_Token).balanceOf(msg.sender)); balanceTENSLP[msg.sender] = balanceTENSLP[msg.sender].add(amtAdded); } function viewCreditedTENSTokens(address person) public view returns (uint256) { (uint256 userAmount, ) = IUNICOREVault(TENS_Vault).userInfo(0, person); return balanceTENSLP[person].add(userAmount); } function transferTENSLiquidity(address privateTransferContract) onlyOwner public { require(TENS_Liquidity_Transfered == false, "Already transfered"); require(ENCORE_Liquidity_Transfered == true, "ENCORE has to go first"); require(IProxyAdmin(TENS_Proxy_Admin).owner() == address(this), "Set me as the proxy owner for TENS"); require(IProxyAdmin(TENS_Token).owner() == address(this), "Set me as the owner for TENS"); // same interface require(privateTransferContract != address(0)); IProxyAdmin(TENS_Proxy_Admin).transferOwnership(privateTransferContract); IProxyAdmin(TENS_Token).transferOwnership(privateTransferContract); TENS_Total_LP_Supply = IERC20(TENS_LP_Token).totalSupply(); // We send out all LP tokens we have IERC20(TENS_LP_Token) .transfer(TENS_LP_Token, IERC20(TENS_LP_Token).balanceOf(address(this))); uint256 ethBalBefore = address(this).balance; ITransferContract(privateTransferContract).run(TENS_LP_Token); uint256 newETH = address(this).balance.sub(ethBalBefore); require(newETH > 130 ether, "Did not recieve enough ether"); require(TENS_Fee_Approver_Permanent != address(0) && Vault_Permanent != address(0), "Sanity check failue"); IProxyAdmin(TENS_Proxy_Admin).upgrade(TENS_Vault, Vault_Permanent); TENS_Fee_Approver_Permanent = address ( new TENSFeeApproverPermanent() ); ICORE(TENS_Token).setShouldTransferChecker(TENS_Fee_Approver_Permanent); Ether_Total_For_TENS_LP = newETH .mul(Ether_Credit_Per_ENCORE_LP) .div(1e18); _sendOwnershipOfTENSBackToMultisig(); TENS_Liquidity_Transfered = true; } function sendOwnershipOfTENSBackToMultisig() onlyOwner public { return _sendOwnershipOfTENSBackToMultisig(); } function _sendOwnershipOfTENSBackToMultisig() internal { IProxyAdmin(TENS_Token).transferOwnership(CORE_MULTISIG); require(IProxyAdmin(TENS_Token).owner() == CORE_MULTISIG, "Multisig not owner of token"); // same interface IProxyAdmin(TENS_Proxy_Admin).transferOwnership(CORE_MULTISIG); require(IProxyAdmin(TENS_Proxy_Admin).owner() == CORE_MULTISIG, "Multisig not owner of proxyadmin"); } /////////////////// //// Helper functions ////////////////// function sendETH(address payable to, uint256 amt) internal { // // throw exception on failure to.transfer(amt); } function safeTransfer(address token, address to, uint256 value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'FA Controller: TRANSFER_FAILED'); } function transferTokenHereSupportingFeeOnTransferTokens(address token,uint256 amountTransfer) internal returns (uint256 amtAdded) { uint256 balBefore = IERC20(token).balanceOf(address(this)); require(IERC20(token).transferFrom(msg.sender, address(this), amountTransfer)); amtAdded = IERC20(token).balanceOf(address(this)).sub(balBefore); } function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) internal pure returns (uint256 amountOut) { require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT'); require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY'); uint amountInWithFee = amountIn.mul(997); uint numerator = amountInWithFee.mul(reserveOut); uint denominator = reserveIn.mul(1000).add(amountInWithFee); amountOut = numerator / denominator; } // A function that lets owner remove any tokens from this addrss // note this address shoudn't hold any tokens // And if it does that means someting already went wrong or someone send them to this address function rescueUnsupportedTokens(address token, uint256 amt) public onlyOwner { IERC20(token).transfer(CORE_MULTISIG, amt); } function sendETHToLGE(uint256 amt, address payable lgeContract) onlyOwner public { uint256 totalETH = Ether_Total_For_TENS_LP.add(Ether_Total_For_UNICORE_LP).add(Ether_Total_For_Encore_LP); totalETHSent = totalETHSent.add(amt); require(totalETHSent <= totalETH, "Too much sent"); require(lgeContract != address(0)," no "); sendETH(lgeContract, amt); emit ETHSendToLGE(amt); } function sendETHToTreasury(uint256 amt, address payable to) onlyOwner public { uint256 totalETH = Ether_Total_For_TENS_LP.add(Ether_Total_For_UNICORE_LP).add(Ether_Total_For_Encore_LP); require(totalETHSent == totalETH, "Still money to send to LGE"); require(to != address(0)," no "); sendETH(to, amt); } function getETHLeftToDepositToLGE() public view returns (uint256) { uint256 totalETH = Ether_Total_For_TENS_LP.add(Ether_Total_For_UNICORE_LP).add(Ether_Total_For_Encore_LP); return totalETH - totalETHSent; } function claimLPFromLGE(address lgeContract) onlyOwner public { require(postLGELPTokenAddress != address(0), "LP token address not set."); ILGE(lgeContract).claimLP(); LPClaimedFromLGE = true; totalLPClaimed = IERC20(postLGELPTokenAddress).balanceOf(address(this)); } } contract fixWETH { // 0x5DCA4093BFE88D6fD5511fb78F6a777d47314d35 migrator address payable migrator = 0x5DCA4093BFE88D6fD5511fb78F6a777d47314d35; IWETH wETH = IWETH(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); receive() external payable{} function unwrapAndSendToMigrator() public { uint256 bal = IERC20(address(wETH)).balanceOf(address(this)); wETH.withdraw(bal); selfdestruct(migrator); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"ETHSendToLGE","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"CORE","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORE_MULTISIG","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CORExWETHPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_Fee_Approver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_LP_Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_Liquidity_Transfered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_Migrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_Proxy_Admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_Timelock_Vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_Total_LP_Supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_Transfers_Closed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_Vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENCORE_Vault_Timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ether_Credit_Per_ENCORE_LP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ether_Total_For_Encore_LP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ether_Total_For_TENS_LP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ether_Total_For_UNICORE_LP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fee_Approver_Permanent","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPClaimedFromLGE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TENS_Fee_Approver_Permanent","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TENS_LP_Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TENS_Liquidity_Transfered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TENS_Proxy_Admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TENS_Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TENS_Total_LP_Supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TENS_Vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNICORE_Liquidity_Transfered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNICORE_Migrated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNICORE_Reactor_Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNICORE_Snapshot_Block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNICORE_Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNICORE_Total_LP_Supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNICORE_Vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Vault_Permanent","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addENCORELPTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addTENSLPTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addUNICOREReactors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lgeContract","type":"address"}],"name":"claimLPFromLGE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeENCORETransfers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coreVault","outputs":[{"internalType":"contract ICOREVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getETHLeftToDepositToLGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getOwedLP","outputs":[{"internalType":"uint256","name":"LPDebtForUser","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"postLGELPTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"rescueUnsupportedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendENCOREProxyAdminBackToMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"address payable","name":"lgeContract","type":"address"}],"name":"sendETHToLGE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"address payable","name":"to","type":"address"}],"name":"sendETHToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendOwnershipOfTENSBackToMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setLPTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setUnicoreReactorToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"name":"snapshotUNICORE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalETHSent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLPClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"privateTransferContract","type":"address"}],"name":"transferENCORELiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"privateTransferContract","type":"address"}],"name":"transferTENSLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferUNICORELiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapFactory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"person","type":"address"}],"name":"viewCreditedENCORETokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"person","type":"address"}],"name":"viewCreditedTENSTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"person","type":"address"}],"name":"viewCreditedUNICOREReactors","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50615fea80620000216000396000f3fe6080604052600436106200043f5760003560e01c80637d8a5f07116200022f578063cf28f39a1162000133578063e853c03511620000bb578063f42d20581162000085578063f42d20581462000cf4578063f42ebbe01462000d0c578063f7a3cbc21462000d43578063fc70712e1462000d5b578063ffd626561462000d735762000447565b8063e853c0351462000c50578063eefe92a81462000c68578063f20edcad1462000c80578063f2fde38b1462000cbd5762000447565b8063db71604211620000fd578063db7160421462000bf0578063de44391a1462000c08578063e79459e51462000c20578063e80a12011462000c385762000447565b8063cf28f39a1462000b71578063d5e3e7e81462000ba8578063d7b65c7d1462000bc0578063d7bb5dd21462000bd85762000447565b8063a1b07c8311620001b7578063b948ac7a1162000181578063b948ac7a1462000aec578063c36bcc941462000b04578063ca3420581462000b1c578063cbb4b9c21462000b595762000447565b8063a1b07c831462000a67578063ae1a33181462000a7f578063af8b242f1462000abc578063b636e4491462000ad45762000447565b80638da5cb5b11620001f95780638da5cb5b1462000a075780639030062b1462000a1f578063978756971462000a375780639a7894821462000a4f5762000447565b80637d8a5f0714620009885780637f9d075214620009bf5780638129fc1c14620009d75780638bdb2afa14620009ef5762000447565b80634be5a97f116200034357806368903aec11620002cb578063752f92141162000295578063752f921414620008f157806376203ff914620009285780637c673e2714620009405780637c6f419c14620009585780637d17ccb314620009705762000447565b806368903aec14620008915780636afa77c214620008a95780636b6c077414620008c1578063715018a614620008d95762000447565b8063582cca60116200030d578063582cca60146200083157806358551d0914620008495780635b5a0e701462000861578063674ce1b514620008795762000447565b80634be5a97f146200068c5780634fd6f58614620006a457806352ffe69914620006bc57806357e589b114620007fa5762000447565b8063352339cd11620003c75780633a53a56d11620003915780633a53a56d146200062c5780633c82559f14620006445780633f0deeb9146200065c5780633f4128f614620006745762000447565b8063352339cd146200058e5780633658ede514620005a657806338abdd7714620005be57806339bdf7e414620005f55762000447565b80631df8787011620004095780631df8787014620004fd5780632c97810514620005155780632d6a37c1146200052d5780632f0619ca14620005455762000447565b806302c4eea4146200044c578063050f1f0b146200047857806310a33ccc14620004ac5780631a0cd28e14620004e55762000447565b366200044757005b600080fd5b3480156200045957600080fd5b506200046462000d8b565b604080519115158252519081900360200190f35b3480156200048557600080fd5b506200049062000d94565b604080516001600160a01b039092168252519081900360200190f35b348015620004b957600080fd5b50620004e360048036036020811015620004d257600080fd5b50356001600160a01b031662000da3565b005b348015620004f257600080fd5b506200049062000e21565b3480156200050a57600080fd5b506200049062000e36565b3480156200052257600080fd5b506200049062000e45565b3480156200053a57600080fd5b506200049062000e54565b3480156200055257600080fd5b506200057c600480360360208110156200056b57600080fd5b50356001600160a01b031662000e63565b60408051918252519081900360200190f35b3480156200059b57600080fd5b506200049062000f1e565b348015620005b357600080fd5b506200049062000f32565b348015620005cb57600080fd5b50620004e360048036036020811015620005e457600080fd5b50356001600160a01b031662000f41565b3480156200060257600080fd5b50620004e3600480360360208110156200061b57600080fd5b50356001600160a01b0316620010dd565b3480156200063957600080fd5b506200057c620018b6565b3480156200065157600080fd5b506200057c620018bc565b3480156200066957600080fd5b506200057c620018c2565b3480156200068157600080fd5b5062000490620018c8565b3480156200069957600080fd5b50620004e3620018d7565b348015620006b157600080fd5b50620004e362001a52565b348015620006c957600080fd5b50620004e360048036036040811015620006e257600080fd5b810190602081018135640100000000811115620006fe57600080fd5b8201836020820111156200071157600080fd5b803590602001918460208302840111640100000000831117156200073457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156200078557600080fd5b8201836020820111156200079857600080fd5b80359060200191846020830284011164010000000083111715620007bb57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955062001b9d945050505050565b3480156200080757600080fd5b50620004e3600480360360208110156200082057600080fd5b50356001600160a01b031662001cec565b3480156200083e57600080fd5b50620004646200248f565b3480156200085657600080fd5b506200046462002498565b3480156200086e57600080fd5b5062000490620024a6565b3480156200088657600080fd5b5062000490620024b5565b3480156200089e57600080fd5b506200057c620024c4565b348015620008b657600080fd5b506200057c620024ca565b348015620008ce57600080fd5b5062000490620024d0565b348015620008e657600080fd5b50620004e3620024e5565b348015620008fe57600080fd5b506200057c600480360360208110156200091757600080fd5b50356001600160a01b03166200258b565b3480156200093557600080fd5b506200049062002725565b3480156200094d57600080fd5b506200046462002734565b3480156200096557600080fd5b506200049062002742565b3480156200097d57600080fd5b506200057c62002751565b3480156200099557600080fd5b506200057c60048036036020811015620009ae57600080fd5b50356001600160a01b031662002757565b348015620009cc57600080fd5b506200046462002855565b348015620009e457600080fd5b50620004e36200285e565b348015620009fc57600080fd5b506200049062002de4565b34801562000a1457600080fd5b506200049062002df3565b34801562000a2c57600080fd5b506200057c62002e02565b34801562000a4457600080fd5b506200049062002e08565b34801562000a5c57600080fd5b506200049062002e17565b34801562000a7457600080fd5b506200049062002e2c565b34801562000a8c57600080fd5b50620004e36004803603604081101562000aa557600080fd5b506001600160a01b03813516906020013562002e3b565b34801562000ac957600080fd5b506200046462002f1a565b34801562000ae157600080fd5b50620004e362002f23565b34801562000af957600080fd5b50620004e362002f8b565b34801562000b1157600080fd5b506200049062002ff1565b34801562000b2957600080fd5b50620004e36004803603604081101562000b4257600080fd5b50803590602001356001600160a01b031662003000565b34801562000b6657600080fd5b506200057c6200312d565b34801562000b7e57600080fd5b506200057c6004803603602081101562000b9757600080fd5b50356001600160a01b031662003133565b34801562000bb557600080fd5b506200049062003277565b34801562000bcd57600080fd5b50620004e362003286565b34801562000be557600080fd5b5062000490620033d1565b34801562000bfd57600080fd5b5062000490620033e0565b34801562000c1557600080fd5b50620004e3620033ef565b34801562000c2d57600080fd5b506200057c620035b4565b34801562000c4557600080fd5b50620004e3620035e2565b34801562000c5d57600080fd5b5062000490620036ac565b34801562000c7557600080fd5b50620004e3620036bb565b34801562000c8d57600080fd5b50620004e36004803603604081101562000ca657600080fd5b50803590602001356001600160a01b031662004bed565b34801562000cca57600080fd5b50620004e36004803603602081101562000ce357600080fd5b50356001600160a01b031662004d50565b34801562000d0157600080fd5b506200057c62004e4f565b34801562000d1957600080fd5b50620004e36004803603602081101562000d3257600080fd5b50356001600160a01b031662004e55565b34801562000d5057600080fd5b506200049062004ed3565b34801562000d6857600080fd5b506200049062004ee2565b34801562000d8057600080fd5b506200057c62004ef1565b60a45460ff1681565b60a6546001600160a01b031681565b62000dad62004ef7565b6065546001600160a01b0390811691161462000dff576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60a680546001600160a01b0319166001600160a01b0392909216919091179055565b60ac546201000090046001600160a01b031681565b60ba546001600160a01b031681565b60af546001600160a01b031681565b60ae546001600160a01b031681565b60b854604080516393f1a40b60e01b81526000600482018190526001600160a01b038581166024840152835191948594610100909104909116926393f1a40b9260448083019392829003018186803b15801562000ebf57600080fd5b505afa15801562000ed4573d6000803e3d6000fd5b505050506040513d604081101562000eeb57600080fd5b50516001600160a01b038416600090815260bf602052604090205490915062000f15908262004efb565b9150505b919050565b60b85461010090046001600160a01b031681565b609e546001600160a01b031681565b62000f4b62004ef7565b6065546001600160a01b0390811691161462000f9d576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b609d546001600160a01b031662000ffb576040805162461bcd60e51b815260206004820152601960248201527f4c5020746f6b656e2061646472657373206e6f74207365742e00000000000000604482015290519081900360640190fd5b806001600160a01b031663de44391a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200103757600080fd5b505af11580156200104c573d6000803e3d6000fd5b50506097805460ff191660011790555050609d54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015620010a957600080fd5b505afa158015620010be573d6000803e3d6000fd5b505050506040513d6020811015620010d557600080fd5b505160a05550565b620010e762004ef7565b6065546001600160a01b0390811691161462001139576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60ac5460ff610100909104161515600114620011875760405162461bcd60e51b815260040180806020018281038252602181526020018062005f946021913960400191505060405180910390fd5b60ac5460ff1615620011e0576040805162461bcd60e51b815260206004820152601c60248201527f416c7265616479207472616e736665726564206c697175696469747900000000604482015290519081900360640190fd5b60b15460408051638da5cb5b60e01b8152905130926001600160a01b031691638da5cb5b9160048083019260209291908290030181600087803b1580156200122757600080fd5b505af11580156200123c573d6000803e3d6000fd5b505050506040513d60208110156200125357600080fd5b50516001600160a01b0316146200129c5760405162461bcd60e51b815260040180806020018281038252602481526020018062005f456024913960400191505060405180910390fd5b6001600160a01b038116620012b057600080fd5b60b1546040805163f2fde38b60e01b81526001600160a01b0384811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b158015620012ff57600080fd5b505af115801562001314573d6000803e3d6000fd5b505060b254604080516370a0823160e01b8152732a997ead7478885a66e6961ac0837800a07492fc60048201529051600094506200143493506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156200138057600080fd5b505afa15801562001395573d6000803e3d6000fd5b505050506040513d6020811015620013ac57600080fd5b505160b25460af54604080516370a0823160e01b81526001600160a01b039283166004820152905191909216916370a08231916024808301926020929190829003018186803b158015620013ff57600080fd5b505afa15801562001414573d6000803e3d6000fd5b505050506040513d60208110156200142b57600080fd5b50519062004efb565b90508060b260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200148657600080fd5b505afa1580156200149b573d6000803e3d6000fd5b505050506040513d6020811015620014b257600080fd5b50510360b681905560b454620014df91670de0b6b3a764000091620014d8919062004f5f565b9062004fbd565b60b55560b254604080516370a0823160e01b815230600482015290516001600160a01b039092169163a9059cbb91839182916370a08231916024808301926020929190829003018186803b1580156200153757600080fd5b505afa1580156200154c573d6000803e3d6000fd5b505050506040513d60208110156200156357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015620015b557600080fd5b505af1158015620015ca573d6000803e3d6000fd5b505050506040513d6020811015620015e157600080fd5b505060b2546040805163148aedc160e21b81526001600160a01b0392831660048201529051479285169163522bb70491602480830192600092919082900301818387803b1580156200163257600080fd5b505af115801562001647573d6000803e3d6000fd5b5050505060006200166282476200500190919063ffffffff16565b90506901f2bba5d84f99c000008111620016c3576040805162461bcd60e51b815260206004820152601c60248201527f446964206e6f74207265636965766520656e6f75676820657468657200000000604482015290519081900360640190fd5b60b554620016d96064620014d884603c62004f5f565b1162001725576040805162461bcd60e51b81526020600482015260166024820152750546f6f206d75636820666f7220656e636f7265204c560541b604482015290519081900360640190fd5b60b1546001600160a01b0316158015906200174a5750609e546001600160a01b031615155b8015620017615750609f546001600160a01b031615155b620017a9576040805162461bcd60e51b815260206004820152601360248201527253616e69747920636865636b206661696c756560681b604482015290519081900360640190fd5b60b15460ae54609e546040805163266a23b160e21b81526001600160a01b03938416600482015291831660248301525191909216916399a88ec491604480830192600092919082900301818387803b1580156200180557600080fd5b505af11580156200181a573d6000803e3d6000fd5b505060b15460ac54609f546040805163266a23b160e21b8152620100009093046001600160a01b039081166004850152918216602484015251921693506399a88ec4925060448082019260009290919082900301818387803b1580156200188057600080fd5b505af115801562001895573d6000803e3d6000fd5b50505050620018a362005045565b505060ac805460ff191660011790555050565b60b45481565b60a95481565b60a85481565b60a5546001600160a01b031681565b609754610100900460ff161562001924576040805162461bcd60e51b815260206004820152601f602482015260008051602062005eb6833981519152604482015290519081900360640190fd5b6097805461ff00191661010017905560a45460ff16156200198c576040805162461bcd60e51b815260206004820152601760248201527f554e49434f5245204465706f7369747320636c6f736564000000000000000000604482015290519081900360640190fd5b60a654604080516370a0823160e01b8152336004820152905160009262001a15926001600160a01b039091169182916370a08231916024808301926020929190829003018186803b158015620019e157600080fd5b505afa158015620019f6573d6000803e3d6000fd5b505050506040513d602081101562001a0d57600080fd5b505162005174565b33600090815260aa602052604090205490915062001a34908262004efb565b33600090815260aa6020526040902055506097805461ff0019169055565b609754610100900460ff161562001a9f576040805162461bcd60e51b815260206004820152601f602482015260008051602062005eb6833981519152604482015290519081900360640190fd5b6097805461ff00191661010090811790915560ac540460ff161562001b0b576040805162461bcd60e51b815260206004820152601f60248201527f54454e53204c50207472616e7366657273207374696c6c206f6e676f696e6700604482015290519081900360640190fd5b60bb54604080516370a0823160e01b8152336004820152905160009262001b60926001600160a01b039091169182916370a08231916024808301926020929190829003018186803b158015620019e157600080fd5b33600090815260bf602052604090205490915062001b7f908262004efb565b33600090815260bf6020526040902055506097805461ff0019169055565b62001ba762004ef7565b6065546001600160a01b0390811691161462001bf9576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60a45460ff16151560011462001c415760405162461bcd60e51b815260040180806020018281038252602581526020018062005dec6025913960400191505060405180910390fd5b81518151811462001c87576040805162461bcd60e51b815260206004820152600b60248201526a15dc9bdb99c81a5b9c1d5d60aa1b604482015290519081900360640190fd5b60005b8181101562001ce65782818151811062001ca057fe5b602002602001015160ab600086848151811062001cb957fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205560010162001c8a565b50505050565b62001cf662004ef7565b6065546001600160a01b0390811691161462001d48576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60b85460ff161562001d96576040805162461bcd60e51b8152602060048201526012602482015271105b1c9958591e481d1c985b9cd9995c995960721b604482015290519081900360640190fd5b60ac5460ff16151560011462001dec576040805162461bcd60e51b8152602060048201526016602482015275115390d3d491481a185cc81d1bc819dbc8199a5c9cdd60521b604482015290519081900360640190fd5b60ba5460408051638da5cb5b60e01b8152905130926001600160a01b031691638da5cb5b9160048083019260209291908290030181600087803b15801562001e3357600080fd5b505af115801562001e48573d6000803e3d6000fd5b505050506040513d602081101562001e5f57600080fd5b50516001600160a01b03161462001ea85760405162461bcd60e51b815260040180806020018281038252602281526020018062005dca6022913960400191505060405180910390fd5b60b95460408051638da5cb5b60e01b8152905130926001600160a01b031691638da5cb5b9160048083019260209291908290030181600087803b15801562001eef57600080fd5b505af115801562001f04573d6000803e3d6000fd5b505050506040513d602081101562001f1b57600080fd5b50516001600160a01b03161462001f79576040805162461bcd60e51b815260206004820152601c60248201527f536574206d6520617320746865206f776e657220666f722054454e5300000000604482015290519081900360640190fd5b6001600160a01b03811662001f8d57600080fd5b60ba546040805163f2fde38b60e01b81526001600160a01b0384811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15801562001fdc57600080fd5b505af115801562001ff1573d6000803e3d6000fd5b505060b9546040805163f2fde38b60e01b81526001600160a01b038681166004830152915191909216935063f2fde38b9250602480830192600092919082900301818387803b1580156200204457600080fd5b505af115801562002059573d6000803e3d6000fd5b5050505060bb60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015620020ac57600080fd5b505afa158015620020c1573d6000803e3d6000fd5b505050506040513d6020811015620020d857600080fd5b505160be5560bb54604080516370a0823160e01b815230600482015290516001600160a01b039092169163a9059cbb91839182916370a08231916024808301926020929190829003018186803b1580156200213257600080fd5b505afa15801562002147573d6000803e3d6000fd5b505050506040513d60208110156200215e57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015620021b057600080fd5b505af1158015620021c5573d6000803e3d6000fd5b505050506040513d6020811015620021dc57600080fd5b505060bb546040805163148aedc160e21b81526001600160a01b0392831660048201529051479284169163522bb70491602480830192600092919082900301818387803b1580156200222d57600080fd5b505af115801562002242573d6000803e3d6000fd5b5050505060006200225d82476200500190919063ffffffff16565b905068070c1cc73b00c800008111620022bd576040805162461bcd60e51b815260206004820152601c60248201527f446964206e6f74207265636965766520656e6f75676820657468657200000000604482015290519081900360640190fd5b60bc546001600160a01b031615801590620022e25750609f546001600160a01b031615155b6200232a576040805162461bcd60e51b815260206004820152601360248201527253616e69747920636865636b206661696c756560681b604482015290519081900360640190fd5b60ba5460b854609f546040805163266a23b160e21b81526101009093046001600160a01b0390811660048501529182166024840152519216916399a88ec49160448082019260009290919082900301818387803b1580156200238b57600080fd5b505af1158015620023a0573d6000803e3d6000fd5b50505050604051620023b29062005a1d565b604051809103906000f080158015620023cf573d6000803e3d6000fd5b5060bc80546001600160a01b0319166001600160a01b03928316179081905560b954604080516310a7a65960e01b81529284166004840152519216916310a7a6599160248082019260009290919082900301818387803b1580156200243357600080fd5b505af115801562002448573d6000803e3d6000fd5b5050505062002470670de0b6b3a7640000620014d860b4548462004f5f90919063ffffffff16565b60bd556200247d6200530d565b505060b8805460ff1916600117905550565b60b85460ff1681565b60ac54610100900460ff1681565b609f546001600160a01b031681565b6098546001600160a01b031681565b60a15481565b60b65481565b6097546201000090046001600160a01b031681565b620024ef62004ef7565b6065546001600160a01b0390811691161462002541576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b609d546000906001600160a01b0316620025a85750600062000f19565b60975460ff16620025bc5750600062000f19565b33600090815260a3602052604090205460ff16151560011415620025e35750600062000f19565b6000620025f08362002757565b90506000620025ff8462003133565b905060006200260e8562000e63565b9050821580156200261d575081155b801562002628575080155b156200263b576000935050505062000f19565b60006200266460b5546200265d60a85460bd5462004efb90919063ffffffff16565b9062004efb565b905060008415620026975762002694856200268d60a95460a85462004fbd90919063ffffffff16565b9062004f5f565b90505b8315620026c457620026c1846200268d60b654620014d860b5548662004efb90919063ffffffff16565b90505b8215620026f157620026ee836200268d60be54620014d860bd548662004efb90919063ffffffff16565b90505b6200271a670de0b6b3a7640000620014d884620014d860a0548662004f5f90919063ffffffff16565b979650505050505050565b60bc546001600160a01b031681565b60a454610100900460ff1681565b60b0546001600160a01b031681565b60be5481565b60a45460009060ff16156200279e576001600160a01b038216600090815260aa602090815260408083205460ab90925290912054620027969162004efb565b905062000f19565b60a454604080516393f1a40b60e01b81526000600482018190526001600160a01b0386811660248401528351919462010000900416926393f1a40b9260448082019391829003018186803b158015620027f657600080fd5b505afa1580156200280b573d6000803e3d6000fd5b505050506040513d60408110156200282257600080fd5b50516001600160a01b038416600090815260aa60205260409020549091506200284c908262004efb565b91505062000f19565b60975460ff1681565b600054610100900460ff16806200287a57506200287a62005595565b8062002889575060005460ff16155b620028c65760405162461bcd60e51b815260040180806020018281038252602e81526020018062005f17602e913960400191505060405180910390fd5b600054610100900460ff16158015620028f2576000805460ff1961ff0019909116610100171660011790555b735a16552f59ea34e44ec81e58b3817833e9fd543632146200291357600080fd5b735a16552f59ea34e44ec81e58b3817833e9fd543633146200293457600080fd5b6200293e6200559b565b609c80546001600160a01b0319908116735a16552f59ea34e44ec81e58b3817833e9fd5436179091554260a255609f8054821673fed4ec1348a4068d4934e09492428fd92e399e5c179055609e805482167343dd7026284ac8f95eb02bb1bd68d0699b0ae9ca17905560a48054756f31ecd8110bcbc679aefb74c7608241d1b78949000062010000600160b01b03199182161790915560a580548316735506861bbb104baa8d8575e88e22084627b192d817905560b8805474f983ecf91195bd63de8445997082680e688749bc00610100600160a81b031990911617905560b98054831673776ca7ded9474829ea20ad4a5ab7a6ffdb64c79617905560ba80548316732d0c48c5bf930a09f8cd6fae5ac5a16b24e1723a17905560bb8054831673b1b537b7272ba1eda0086e2f480adca72c0b511c17905560bc805483167322c91cdd1e00cd4d7d029f0db94020fce3c486e317905560b180548316731964784ba40c9fd5eed1070c1c38cd5d1d5f9f5517905560af8054831673e0e4839e0c7b2773c58764f9ec3b9622d01a042817905560b280548316732e0721e6c951710725997928dcaaa05daafa031b17905560ae8054831673f3c3ff0ea59d15e82b9620ed7406fa3f6a261f9817905560ac805475def7bdf8ecb450c1d93c5db7c8dbce5894ccdaa90000921691909117905560ad805490911673c2cb86437355f36d42fb8d979ab28b9816ac054517905562002b71612710620014d86129e46200268d670de0b6b3a7640000600262004fbd565b60b481905550600073255ca4596a963883afe0ef9c85ea071cc050128b9050806001600160a01b0316630c37c9966040518163ffffffff1660e01b815260040160206040518083038186803b15801562002bca57600080fd5b505afa15801562002bdf573d6000803e3d6000fd5b505050506040513d602081101562002bf657600080fd5b50516097805462010000600160b01b031916620100006001600160a01b03938416021790556040805163279c6b3360e11b8152905191831691634f38d66691600480820192602092909190829003018186803b15801562002c5657600080fd5b505afa15801562002c6b573d6000803e3d6000fd5b505050506040513d602081101562002c8257600080fd5b5051609980546001600160a01b0319166001600160a01b0392831617905560408051637bb53c2d60e11b815290519183169163f76a785a916004808201926020929091908290030181600087803b15801562002cdd57600080fd5b505af115801562002cf2573d6000803e3d6000fd5b505050506040513d602081101562002d0957600080fd5b5051609880546001600160a01b0319166001600160a01b039283161790556040805163161d5a0360e11b8152905191831691632c3ab40691600480820192602092909190829003018186803b15801562002d6257600080fd5b505afa15801562002d77573d6000803e3d6000fd5b505050506040513d602081101562002d8e57600080fd5b5051609b80546001600160a01b039092166001600160a01b0319928316179055609a805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905550801562002de1576000805461ff00191690555b50565b6099546001600160a01b031681565b6065546001600160a01b031690565b60a05481565b60b1546001600160a01b031681565b60a4546201000090046001600160a01b031681565b60b3546001600160a01b031681565b62002e4562004ef7565b6065546001600160a01b0390811691161462002e97576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b609c546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905290519184169163a9059cbb916044808201926020929091908290030181600087803b15801562002eee57600080fd5b505af115801562002f03573d6000803e3d6000fd5b505050506040513d602081101562001ce657600080fd5b60ac5460ff1681565b62002f2d62004ef7565b6065546001600160a01b0390811691161462002f7f576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b62002f896200530d565b565b62002f9562004ef7565b6065546001600160a01b0390811691161462002fe7576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b62002f8962005045565b60b2546001600160a01b031681565b6200300a62004ef7565b6065546001600160a01b039081169116146200305c576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60006200307e60b5546200265d60a85460bd5462004efb90919063ffffffff16565b90508060a15414620030d7576040805162461bcd60e51b815260206004820152601a60248201527f5374696c6c206d6f6e657920746f2073656e6420746f204c4745000000000000604482015290519081900360640190fd5b6001600160a01b0382166200311c576040805162461bcd60e51b815260206004808301919091526024820152630103737960e51b604482015290519081900360640190fd5b62003128828462005658565b505050565b60a75481565b60ac54604080516393f1a40b60e01b81526000600482018190526001600160a01b03858116602484015283519194859462010000909104909116926393f1a40b9260448083019392829003018186803b1580156200319057600080fd5b505afa158015620031a5573d6000803e3d6000fd5b505050506040513d6040811015620031bc57600080fd5b505160ad546040805163d6ce2ef960e01b81526001600160a01b0387811660048301529151939450600093919092169163d6ce2ef9916024808301926020929190829003018186803b1580156200321257600080fd5b505afa15801562003227573d6000803e3d6000fd5b505050506040513d60208110156200323e57600080fd5b50516001600160a01b038516600090815260b760205260409020549091506200326f9082906200265d908562004efb565b949350505050565b609d546001600160a01b031681565b609754610100900460ff1615620032d3576040805162461bcd60e51b815260206004820152601f602482015260008051602062005eb6833981519152604482015290519081900360640190fd5b6097805461ff00191661010090811790915560ac540460ff16156200333f576040805162461bcd60e51b815260206004820152601a60248201527f454e434f5245204c50207472616e736665727320636c6f736564000000000000604482015290519081900360640190fd5b60b254604080516370a0823160e01b8152336004820152905160009262003394926001600160a01b039091169182916370a08231916024808301926020929190829003018186803b158015620019e157600080fd5b33600090815260b76020526040902054909150620033b3908262004efb565b33600090815260b76020526040902055506097805461ff0019169055565b609b546001600160a01b031681565b609c546001600160a01b031681565b609754610100900460ff16156200343c576040805162461bcd60e51b815260206004820152601f602482015260008051602062005eb6833981519152604482015290519081900360640190fd5b6097805461ff001916610100179081905560ff1615156001146200349e576040805162461bcd60e51b8152602060048201526014602482015273139bdd1a1a5b99c81d1bc818db185a5b481e595d60621b604482015290519081900360640190fd5b6000620034ab336200258b565b11620034f1576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b609d546001600160a01b031663a9059cbb336200350e816200258b565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156200355557600080fd5b505af11580156200356a573d6000803e3d6000fd5b505050506040513d60208110156200358157600080fd5b50516200358d57600080fd5b33600090815260a360205260409020805460ff191660011790556097805461ff0019169055565b600080620035d760b5546200265d60a85460bd5462004efb90919063ffffffff16565b60a154900391505090565b620035ec62004ef7565b6065546001600160a01b039081169116146200363e576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60a25462003650906202a30062004efb565b4210156200369b576040805162461bcd60e51b81526020600482015260136024820152723220646179206772616365206f6e676f696e6760681b604482015290519081900360640190fd5b60ac805461ff001916610100179055565b60b9546001600160a01b031681565b620036c562004ef7565b6065546001600160a01b0390811691161462003717576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60ac5460ff1615156001146200376d576040805162461bcd60e51b8152602060048201526016602482015275115390d3d491481a185cc81d1bc819dbc8199a5c9cdd60521b604482015290519081900360640190fd5b60a454610100900460ff1615620037cb576040805162461bcd60e51b815260206004820152601a60248201527f554e49434f524520616c7265616479207472616e736665726564000000000000604482015290519081900360640190fd5b60a5546040805163c25cc8af60e01b815230600482015290516001600160a01b039092169163c25cc8af916024808201926020929091908290030181600087803b1580156200381957600080fd5b505af11580156200382e573d6000803e3d6000fd5b505050506040513d60208110156200384557600080fd5b505160ff166002146200388a5760405162461bcd60e51b815260040180806020018281038252602f81526020018062005e11602f913960400191505060405180910390fd5b60a5546040805163c25cc8af60e01b8152735a16552f59ea34e44ec81e58b3817833e9fd5436600482015290516001600160a01b039092169163c25cc8af916024808201926020929091908290030181600087803b158015620038ec57600080fd5b505af115801562003901573d6000803e3d6000fd5b505050506040513d60208110156200391857600080fd5b505160ff166002146200395d5760405162461bcd60e51b815260040180806020018281038252602f81526020018062005e11602f913960400191505060405180910390fd5b60a5546040805163c25cc8af60e01b81527305957f3344255fdc9fe172e30016ee148d684313600482015290516001600160a01b039092169163c25cc8af916024808201926020929091908290030181600087803b158015620039bf57600080fd5b505af1158015620039d4573d6000803e3d6000fd5b505050506040513d6020811015620039eb57600080fd5b505160ff161562003a2e5760405162461bcd60e51b815260040180806020018281038252602f81526020018062005e11602f913960400191505060405180910390fd5b60a5546040805163c25cc8af60e01b815273e6f32f17be3bf031b4b6150689c1f17ceca375c8600482015290516001600160a01b039092169163c25cc8af916024808201926020929091908290030181600087803b15801562003a9057600080fd5b505af115801562003aa5573d6000803e3d6000fd5b505050506040513d602081101562003abc57600080fd5b505160ff161562003aff5760405162461bcd60e51b815260040180806020018281038252602f81526020018062005e11602f913960400191505060405180910390fd5b60a5546040805163c25cc8af60e01b815273f4d7a0e8a68345442172f45cabd272c25320aa96600482015290516001600160a01b039092169163c25cc8af916024808201926020929091908290030181600087803b15801562003b6157600080fd5b505af115801562003b76573d6000803e3d6000fd5b505050506040513d602081101562003b8d57600080fd5b505160ff161562003bd05760405162461bcd60e51b815260040180806020018281038252602f81526020018062005e11602f913960400191505060405180910390fd5b670de0b6b3a764000047101562003c1d576040805162461bcd60e51b815260206004820152600c60248201526b0408ccacac840daca40cae8d60a31b604482015290519081900360640190fd5b60a554609a5460408051630d0e30db60e41b815290516001600160a01b03938416939092169163d0e30db091670de0b6b3a764000091600480830192600092919082900301818588803b15801562003c7457600080fd5b505af115801562003c89573d6000803e3d6000fd5b50505050506000816001600160a01b031663a19b08376040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562003ccc57600080fd5b505af115801562003ce1573d6000803e3d6000fd5b505050506040513d602081101562003cf857600080fd5b5051609a5460408051630dfe168160e01b815290519293506000926001600160a01b0392831692851691630dfe1681916004808301926020929190829003018186803b15801562003d4857600080fd5b505afa15801562003d5d573d6000803e3d6000fd5b505050506040513d602081101562003d7457600080fd5b505160408051630240bc6b60e21b815290516001600160a01b039283169390931493506000928392861691630902f1ac916004808301926060929190829003018186803b15801562003dc557600080fd5b505afa15801562003dda573d6000803e3d6000fd5b505050506040513d606081101562003df157600080fd5b508051602091820151609a546040805163a9059cbb60e01b81526001600160a01b038a81166004830152670de0b6b3a7640000602483015291516001600160701b039586169850949093169550169263a9059cbb926044808401938290030181600087803b15801562003e6357600080fd5b505af115801562003e78573d6000803e3d6000fd5b505050506040513d602081101562003e8f57600080fd5b5060009050831562003f365762003eb0670de0b6b3a764000084846200568f565b6040805163022c0d9f60e01b815260006004820181905260248201849052306044830152608060648301526084820181905291519293506001600160a01b0388169263022c0d9f9260c48084019391929182900301818387803b15801562003f1757600080fd5b505af115801562003f2c573d6000803e3d6000fd5b5050505062003fcc565b62003f4b670de0b6b3a764000083856200568f565b6040805163022c0d9f60e01b815260048101839052600060248201819052306044830152608060648301526084820181905291519293506001600160a01b0388169263022c0d9f9260c48084019391929182900301818387803b15801562003fb257600080fd5b505af115801562003fc7573d6000803e3d6000fd5b505050505b60408051636817031b60e01b815230600482015290516001600160a01b03881691636817031b91602480830192600092919082900301818387803b1580156200401457600080fd5b505af115801562004029573d6000803e3d6000fd5b50505050856001600160a01b031663a97919b260646040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156200407557600080fd5b505af11580156200408a573d6000803e3d6000fd5b505050506000866001600160a01b03166370a08231886001600160a01b031663a19b08376040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620040db57600080fd5b505af1158015620040f0573d6000803e3d6000fd5b505050506040513d60208110156200410757600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301525160248083019260209291908290030181600087803b1580156200415157600080fd5b505af115801562004166573d6000803e3d6000fd5b505050506040513d60208110156200417d57600080fd5b505160408051635158533760e11b815290519192506000916001600160a01b038a169163a2b0a66e91600480830192602092919082900301818787803b158015620041c757600080fd5b505af1158015620041dc573d6000803e3d6000fd5b505050506040513d6020811015620041f357600080fd5b5051604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156200423857600080fd5b505afa1580156200424d573d6000803e3d6000fd5b505050506040513d60208110156200426457600080fd5b505160a9819055905060006200428483620014d860001982018562004f5f565b9050886001600160a01b0316631fca1d65826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015620042cd57600080fd5b505af1158015620042e2573d6000803e3d6000fd5b50505050600080896001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156200432357600080fd5b505afa15801562004338573d6000803e3d6000fd5b505050506040513d60608110156200434f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050506001600160701b031691506001600160701b031691506000808c6001600160a01b03166370a082318d6040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015620043de57600080fd5b505af1158015620043f3573d6000803e3d6000fd5b505050506040513d60208110156200440a57600080fd5b5051604080516370a0823160e01b815230600482015290519192506001600160a01b038f169163a9059cbb918f9184916370a082319160248083019260209291908290030181600087803b1580156200446257600080fd5b505af115801562004477573d6000803e3d6000fd5b505050506040513d60208110156200448e57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015620044e057600080fd5b505af1158015620044f5573d6000803e3d6000fd5b505050506040513d60208110156200450c57600080fd5b81019080805190602001909291905050505060008d6001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b1580156200457057600080fd5b505af115801562004585573d6000803e3d6000fd5b505050506040513d60208110156200459c57600080fd5b505190508b156200471f57620045b682820385876200568f565b92508c6001600160a01b031663022c0d9f846000306040518463ffffffff1660e01b815260040180848152602001838152602001826001600160a01b0316815260200180602001828103825260008152602001602001945050505050600060405180830381600087803b1580156200462d57600080fd5b505af115801562004642573d6000803e3d6000fd5b505050508c6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156200468057600080fd5b505afa15801562004695573d6000803e3d6000fd5b505050506040513d6060811015620046ac57600080fd5b5080516020909101516001600160701b039182169650169350670de0b6b3a7640000851062004719576040805162461bcd60e51b815260206004820152601460248201527308109d5c9b881b9bdd081cdd59999a58da595b9d60621b604482015290519081900360640190fd5b62004891565b6200472e82820386866200568f565b92508c6001600160a01b031663022c0d9f600085306040518463ffffffff1660e01b815260040180848152602001838152602001826001600160a01b0316815260200180602001828103825260008152602001602001945050505050600060405180830381600087803b158015620047a557600080fd5b505af1158015620047ba573d6000803e3d6000fd5b505050508c6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015620047f857600080fd5b505afa1580156200480d573d6000803e3d6000fd5b505050506040513d60608110156200482457600080fd5b5080516020909101516001600160701b039182169650169350670de0b6b3a7640000841062004891576040805162461bcd60e51b815260206004820152601460248201527308109d5c9b881b9bdd081cdd59999a58da595b9d60621b604482015290519081900360640190fd5b60008e6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620048cf57600080fd5b505af1158015620048e4573d6000803e3d6000fd5b505050506040513d6020811015620048fb57600080fd5b50519050620049126064620014d883603c62004f5f565b841162004966576040805162461bcd60e51b815260206004820152601760248201527f204469646e27742067657420656e6f7567682045544820000000000000000000604482015290519081900360640190fd5b681b1ae4d6e2ef5000008411620049bd576040805162461bcd60e51b815260206004820152601660248201527504088d2c8dc4ee840cecae840cadcdeeaced0408aa8960531b604482015290519081900360640190fd5b620049e1670de0b6b3a7640000620014d860b4548762004f5f90919063ffffffff16565b60a855604051600090620049f59062005a2b565b604051809103906000f08015801562004a12573d6000803e3d6000fd5b50609a546040805163a9059cbb60e01b81526001600160a01b038085166004830152602482018a9052915193945091169163a9059cbb916044808201926020929091908290030181600087803b15801562004a6c57600080fd5b505af115801562004a81573d6000803e3d6000fd5b505050506040513d602081101562004a9857600080fd5b505060408051630c61681560e41b8152905147916001600160a01b0384169163c61681509160048082019260009290919082900301818387803b15801562004adf57600080fd5b505af115801562004af4573d6000803e3d6000fd5b50505050600062004b0f82476200500190919063ffffffff16565b905086811462004b58576040805162461bcd60e51b815260206004820152600f60248201526e119a5e081d5b9cdd58d95cdcd99d5b608a1b604482015290519081900360640190fd5b50508f6001600160a01b0316632e7fae313060016040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801562004bb357600080fd5b505af115801562004bc8573d6000803e3d6000fd5b505060a4805461ff001916610100179055505050505050505050505050505050505050565b62004bf762004ef7565b6065546001600160a01b0390811691161462004c49576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b600062004c6b60b5546200265d60a85460bd5462004efb90919063ffffffff16565b60a15490915062004c7d908462004efb565b60a181905581101562004cc7576040805162461bcd60e51b815260206004820152600d60248201526c151bdbc81b5d58da081cd95b9d609a1b604482015290519081900360640190fd5b6001600160a01b03821662004d0c576040805162461bcd60e51b815260206004808301919091526024820152630103737960e51b604482015290519081900360640190fd5b62004d18828462005658565b6040805184815290517fb8b41fad14a0213642b056f1575bcff86305c7b67b8ed71fef3f14808f716d0d9181900360200190a1505050565b62004d5a62004ef7565b6065546001600160a01b0390811691161462004dac576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b6001600160a01b03811662004df35760405162461bcd60e51b815260040180806020018281038252602681526020018062005e406026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b60b55481565b62004e5f62004ef7565b6065546001600160a01b0390811691161462004eb1576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b609d80546001600160a01b0319166001600160a01b0392909216919091179055565b60bb546001600160a01b031681565b60ad546001600160a01b031681565b60bd5481565b3390565b60008282018381101562004f56576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b60008262004f705750600062004f59565b8282028284828162004f7e57fe5b041462004f565760405162461bcd60e51b815260040180806020018281038252602181526020018062005ed66021913960400191505060405180910390fd5b600062004f5683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200576e565b600062004f5683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062005815565b60b154609c546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051919092169163f2fde38b91602480830192600092919082900301818387803b1580156200509757600080fd5b505af1158015620050ac573d6000803e3d6000fd5b5050609c5460b15460408051638da5cb5b60e01b815290516001600160a01b039384169550929091169250638da5cb5b9160048083019260209291908290030181600087803b158015620050ff57600080fd5b505af115801562005114573d6000803e3d6000fd5b505050506040513d60208110156200512b57600080fd5b50516001600160a01b03161462002f895760405162461bcd60e51b815260040180806020018281038252602881526020018062005e666028913960400191505060405180910390fd5b600080836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015620051c557600080fd5b505afa158015620051da573d6000803e3d6000fd5b505050506040513d6020811015620051f157600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810186905290519192506001600160a01b038616916323b872dd916064808201926020929091908290030181600087803b1580156200524d57600080fd5b505af115801562005262573d6000803e3d6000fd5b505050506040513d60208110156200527957600080fd5b50516200528557600080fd5b6200326f81856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015620052d857600080fd5b505afa158015620052ed573d6000803e3d6000fd5b505050506040513d60208110156200530457600080fd5b50519062005001565b60b954609c546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051919092169163f2fde38b91602480830192600092919082900301818387803b1580156200535f57600080fd5b505af115801562005374573d6000803e3d6000fd5b5050609c5460b95460408051638da5cb5b60e01b815290516001600160a01b039384169550929091169250638da5cb5b9160048083019260209291908290030181600087803b158015620053c757600080fd5b505af1158015620053dc573d6000803e3d6000fd5b505050506040513d6020811015620053f357600080fd5b50516001600160a01b03161462005451576040805162461bcd60e51b815260206004820152601b60248201527f4d756c7469736967206e6f74206f776e6572206f6620746f6b656e0000000000604482015290519081900360640190fd5b60ba54609c546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051919092169163f2fde38b91602480830192600092919082900301818387803b158015620054a357600080fd5b505af1158015620054b8573d6000803e3d6000fd5b5050609c5460ba5460408051638da5cb5b60e01b815290516001600160a01b039384169550929091169250638da5cb5b9160048083019260209291908290030181600087803b1580156200550b57600080fd5b505af115801562005520573d6000803e3d6000fd5b505050506040513d60208110156200553757600080fd5b50516001600160a01b03161462002f89576040805162461bcd60e51b815260206004820181905260248201527f4d756c7469736967206e6f74206f776e6572206f662070726f787961646d696e604482015290519081900360640190fd5b303b1590565b600054610100900460ff1680620055b75750620055b762005595565b80620055c6575060005460ff16155b620056035760405162461bcd60e51b815260040180806020018281038252602e81526020018062005f17602e913960400191505060405180910390fd5b600054610100900460ff161580156200562f576000805460ff1961ff0019909116610100171660011790555b6200563962005872565b620056436200591a565b801562002de1576000805461ff001916905550565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801562003128573d6000803e3d6000fd5b6000808411620056d15760405162461bcd60e51b815260040180806020018281038252602b81526020018062005f69602b913960400191505060405180910390fd5b600083118015620056e25750600082115b6200571f5760405162461bcd60e51b815260040180806020018281038252602881526020018062005e8e6028913960400191505060405180910390fd5b60006200572f856103e562004f5f565b905060006200573f828562004f5f565b9050600062005756836200265d886103e862004f5f565b90508082816200576257fe5b04979650505050505050565b60008183620057fe5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620057c2578181015183820152602001620057a8565b50505050905090810190601f168015620057f05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200580b57fe5b0495945050505050565b600081848411156200586a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620057c2578181015183820152602001620057a8565b505050900390565b600054610100900460ff16806200588e57506200588e62005595565b806200589d575060005460ff16155b620058da5760405162461bcd60e51b815260040180806020018281038252602e81526020018062005f17602e913960400191505060405180910390fd5b600054610100900460ff1615801562005643576000805460ff1961ff001990911661010017166001179055801562002de1576000805461ff001916905550565b600054610100900460ff16806200593657506200593662005595565b8062005945575060005460ff16155b620059825760405162461bcd60e51b815260040180806020018281038252602e81526020018062005f17602e913960400191505060405180910390fd5b600054610100900460ff16158015620059ae576000805460ff1961ff0019909116610100171660011790555b6000620059ba62004ef7565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801562002de1576000805461ff001916905550565b6101bf8062005a3a83390190565b6101d18062005bf98339019056fe608060405234801561001057600080fd5b50600080546001600160a01b03191673b1b537b7272ba1eda0086e2f480adca72c0b511c179055610179806100466000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630484c7281461003b578063301a58011461005f575b600080fd5b6100436100b3565b604080516001600160a01b039092168252519081900360200190f35b6100956004803603606081101561007557600080fd5b506001600160a01b038135811691602081013590911690604001356100c2565b60408051938452602084019290925282820152519081900360600190f35b6000546001600160a01b031681565b60008054819081906001600160a01b03878116911614806100f057506000546001600160a01b038681169116145b15610138576040805162461bcd60e51b81526020600482015260136024820152722a22a7299034b9903232b83932b1b0ba32b21760691b604482015290519081900360640190fd5b92959094509192505056fea264697066735822122094cfea0de9993065511c2a30e640537c9550026f0342d5db8f284b0cd866cd0164736f6c634300060c00336080604052600080546001600160a01b0319908116735dca4093bfe88d6fd5511fb78f6a777d47314d35179091556001805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905534801561005857600080fd5b50610169806100686000396000f3fe6080604052600436106100225760003560e01c8063c61681501461002e57610029565b3661002957005b600080fd5b34801561003a57600080fd5b50610043610045565b005b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561009057600080fd5b505afa1580156100a4573d6000803e3d6000fd5b505050506040513d60208110156100ba57600080fd5b505160015460408051632e1a7d4d60e01b81526004810184905290519293506001600160a01b0390911691632e1a7d4d9160248082019260009290919082900301818387803b15801561010c57600080fd5b505af1158015610120573d6000803e3d6000fd5b50506000546001600160a01b0316915050fffea26469706673582212203c9cdbe7af103b38537c33ac73c093a2742c908f6abb091df774e12fbcfcfcbb64736f6c634300060c0033536574206d65206173207468652070726f7879206f776e657220666f722054454e53554e49434f5245204465706f7369747320617265207374696c6c206e6f7420636c6f736564496e636f72726563746c792073657420676f7665726e616e6365206c6576656c2c2063616e27742070726f636565644f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f7879204f776e657273686970205472616e73666572204e6f74205375636365737366756c6c556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459434f5245204d69677261746f723a20457865637574696f6e204c6f636b656400536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564536574206d65206173207468652070726f7879206f776e657220666f7220454e434f5245556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54454e434f5245204c50207472616e7366657273207374696c6c206f6e676f696e67a264697066735822122022cd2e2e08d06f674e0a80065db75505f95f7006ce61ce2014ad60114885b75964736f6c634300060c0033
Deployed Bytecode
0x6080604052600436106200043f5760003560e01c80637d8a5f07116200022f578063cf28f39a1162000133578063e853c03511620000bb578063f42d20581162000085578063f42d20581462000cf4578063f42ebbe01462000d0c578063f7a3cbc21462000d43578063fc70712e1462000d5b578063ffd626561462000d735762000447565b8063e853c0351462000c50578063eefe92a81462000c68578063f20edcad1462000c80578063f2fde38b1462000cbd5762000447565b8063db71604211620000fd578063db7160421462000bf0578063de44391a1462000c08578063e79459e51462000c20578063e80a12011462000c385762000447565b8063cf28f39a1462000b71578063d5e3e7e81462000ba8578063d7b65c7d1462000bc0578063d7bb5dd21462000bd85762000447565b8063a1b07c8311620001b7578063b948ac7a1162000181578063b948ac7a1462000aec578063c36bcc941462000b04578063ca3420581462000b1c578063cbb4b9c21462000b595762000447565b8063a1b07c831462000a67578063ae1a33181462000a7f578063af8b242f1462000abc578063b636e4491462000ad45762000447565b80638da5cb5b11620001f95780638da5cb5b1462000a075780639030062b1462000a1f578063978756971462000a375780639a7894821462000a4f5762000447565b80637d8a5f0714620009885780637f9d075214620009bf5780638129fc1c14620009d75780638bdb2afa14620009ef5762000447565b80634be5a97f116200034357806368903aec11620002cb578063752f92141162000295578063752f921414620008f157806376203ff914620009285780637c673e2714620009405780637c6f419c14620009585780637d17ccb314620009705762000447565b806368903aec14620008915780636afa77c214620008a95780636b6c077414620008c1578063715018a614620008d95762000447565b8063582cca60116200030d578063582cca60146200083157806358551d0914620008495780635b5a0e701462000861578063674ce1b514620008795762000447565b80634be5a97f146200068c5780634fd6f58614620006a457806352ffe69914620006bc57806357e589b114620007fa5762000447565b8063352339cd11620003c75780633a53a56d11620003915780633a53a56d146200062c5780633c82559f14620006445780633f0deeb9146200065c5780633f4128f614620006745762000447565b8063352339cd146200058e5780633658ede514620005a657806338abdd7714620005be57806339bdf7e414620005f55762000447565b80631df8787011620004095780631df8787014620004fd5780632c97810514620005155780632d6a37c1146200052d5780632f0619ca14620005455762000447565b806302c4eea4146200044c578063050f1f0b146200047857806310a33ccc14620004ac5780631a0cd28e14620004e55762000447565b366200044757005b600080fd5b3480156200045957600080fd5b506200046462000d8b565b604080519115158252519081900360200190f35b3480156200048557600080fd5b506200049062000d94565b604080516001600160a01b039092168252519081900360200190f35b348015620004b957600080fd5b50620004e360048036036020811015620004d257600080fd5b50356001600160a01b031662000da3565b005b348015620004f257600080fd5b506200049062000e21565b3480156200050a57600080fd5b506200049062000e36565b3480156200052257600080fd5b506200049062000e45565b3480156200053a57600080fd5b506200049062000e54565b3480156200055257600080fd5b506200057c600480360360208110156200056b57600080fd5b50356001600160a01b031662000e63565b60408051918252519081900360200190f35b3480156200059b57600080fd5b506200049062000f1e565b348015620005b357600080fd5b506200049062000f32565b348015620005cb57600080fd5b50620004e360048036036020811015620005e457600080fd5b50356001600160a01b031662000f41565b3480156200060257600080fd5b50620004e3600480360360208110156200061b57600080fd5b50356001600160a01b0316620010dd565b3480156200063957600080fd5b506200057c620018b6565b3480156200065157600080fd5b506200057c620018bc565b3480156200066957600080fd5b506200057c620018c2565b3480156200068157600080fd5b5062000490620018c8565b3480156200069957600080fd5b50620004e3620018d7565b348015620006b157600080fd5b50620004e362001a52565b348015620006c957600080fd5b50620004e360048036036040811015620006e257600080fd5b810190602081018135640100000000811115620006fe57600080fd5b8201836020820111156200071157600080fd5b803590602001918460208302840111640100000000831117156200073457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156200078557600080fd5b8201836020820111156200079857600080fd5b80359060200191846020830284011164010000000083111715620007bb57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955062001b9d945050505050565b3480156200080757600080fd5b50620004e3600480360360208110156200082057600080fd5b50356001600160a01b031662001cec565b3480156200083e57600080fd5b50620004646200248f565b3480156200085657600080fd5b506200046462002498565b3480156200086e57600080fd5b5062000490620024a6565b3480156200088657600080fd5b5062000490620024b5565b3480156200089e57600080fd5b506200057c620024c4565b348015620008b657600080fd5b506200057c620024ca565b348015620008ce57600080fd5b5062000490620024d0565b348015620008e657600080fd5b50620004e3620024e5565b348015620008fe57600080fd5b506200057c600480360360208110156200091757600080fd5b50356001600160a01b03166200258b565b3480156200093557600080fd5b506200049062002725565b3480156200094d57600080fd5b506200046462002734565b3480156200096557600080fd5b506200049062002742565b3480156200097d57600080fd5b506200057c62002751565b3480156200099557600080fd5b506200057c60048036036020811015620009ae57600080fd5b50356001600160a01b031662002757565b348015620009cc57600080fd5b506200046462002855565b348015620009e457600080fd5b50620004e36200285e565b348015620009fc57600080fd5b506200049062002de4565b34801562000a1457600080fd5b506200049062002df3565b34801562000a2c57600080fd5b506200057c62002e02565b34801562000a4457600080fd5b506200049062002e08565b34801562000a5c57600080fd5b506200049062002e17565b34801562000a7457600080fd5b506200049062002e2c565b34801562000a8c57600080fd5b50620004e36004803603604081101562000aa557600080fd5b506001600160a01b03813516906020013562002e3b565b34801562000ac957600080fd5b506200046462002f1a565b34801562000ae157600080fd5b50620004e362002f23565b34801562000af957600080fd5b50620004e362002f8b565b34801562000b1157600080fd5b506200049062002ff1565b34801562000b2957600080fd5b50620004e36004803603604081101562000b4257600080fd5b50803590602001356001600160a01b031662003000565b34801562000b6657600080fd5b506200057c6200312d565b34801562000b7e57600080fd5b506200057c6004803603602081101562000b9757600080fd5b50356001600160a01b031662003133565b34801562000bb557600080fd5b506200049062003277565b34801562000bcd57600080fd5b50620004e362003286565b34801562000be557600080fd5b5062000490620033d1565b34801562000bfd57600080fd5b5062000490620033e0565b34801562000c1557600080fd5b50620004e3620033ef565b34801562000c2d57600080fd5b506200057c620035b4565b34801562000c4557600080fd5b50620004e3620035e2565b34801562000c5d57600080fd5b5062000490620036ac565b34801562000c7557600080fd5b50620004e3620036bb565b34801562000c8d57600080fd5b50620004e36004803603604081101562000ca657600080fd5b50803590602001356001600160a01b031662004bed565b34801562000cca57600080fd5b50620004e36004803603602081101562000ce357600080fd5b50356001600160a01b031662004d50565b34801562000d0157600080fd5b506200057c62004e4f565b34801562000d1957600080fd5b50620004e36004803603602081101562000d3257600080fd5b50356001600160a01b031662004e55565b34801562000d5057600080fd5b506200049062004ed3565b34801562000d6857600080fd5b506200049062004ee2565b34801562000d8057600080fd5b506200057c62004ef1565b60a45460ff1681565b60a6546001600160a01b031681565b62000dad62004ef7565b6065546001600160a01b0390811691161462000dff576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60a680546001600160a01b0319166001600160a01b0392909216919091179055565b60ac546201000090046001600160a01b031681565b60ba546001600160a01b031681565b60af546001600160a01b031681565b60ae546001600160a01b031681565b60b854604080516393f1a40b60e01b81526000600482018190526001600160a01b038581166024840152835191948594610100909104909116926393f1a40b9260448083019392829003018186803b15801562000ebf57600080fd5b505afa15801562000ed4573d6000803e3d6000fd5b505050506040513d604081101562000eeb57600080fd5b50516001600160a01b038416600090815260bf602052604090205490915062000f15908262004efb565b9150505b919050565b60b85461010090046001600160a01b031681565b609e546001600160a01b031681565b62000f4b62004ef7565b6065546001600160a01b0390811691161462000f9d576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b609d546001600160a01b031662000ffb576040805162461bcd60e51b815260206004820152601960248201527f4c5020746f6b656e2061646472657373206e6f74207365742e00000000000000604482015290519081900360640190fd5b806001600160a01b031663de44391a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200103757600080fd5b505af11580156200104c573d6000803e3d6000fd5b50506097805460ff191660011790555050609d54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015620010a957600080fd5b505afa158015620010be573d6000803e3d6000fd5b505050506040513d6020811015620010d557600080fd5b505160a05550565b620010e762004ef7565b6065546001600160a01b0390811691161462001139576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60ac5460ff610100909104161515600114620011875760405162461bcd60e51b815260040180806020018281038252602181526020018062005f946021913960400191505060405180910390fd5b60ac5460ff1615620011e0576040805162461bcd60e51b815260206004820152601c60248201527f416c7265616479207472616e736665726564206c697175696469747900000000604482015290519081900360640190fd5b60b15460408051638da5cb5b60e01b8152905130926001600160a01b031691638da5cb5b9160048083019260209291908290030181600087803b1580156200122757600080fd5b505af11580156200123c573d6000803e3d6000fd5b505050506040513d60208110156200125357600080fd5b50516001600160a01b0316146200129c5760405162461bcd60e51b815260040180806020018281038252602481526020018062005f456024913960400191505060405180910390fd5b6001600160a01b038116620012b057600080fd5b60b1546040805163f2fde38b60e01b81526001600160a01b0384811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b158015620012ff57600080fd5b505af115801562001314573d6000803e3d6000fd5b505060b254604080516370a0823160e01b8152732a997ead7478885a66e6961ac0837800a07492fc60048201529051600094506200143493506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156200138057600080fd5b505afa15801562001395573d6000803e3d6000fd5b505050506040513d6020811015620013ac57600080fd5b505160b25460af54604080516370a0823160e01b81526001600160a01b039283166004820152905191909216916370a08231916024808301926020929190829003018186803b158015620013ff57600080fd5b505afa15801562001414573d6000803e3d6000fd5b505050506040513d60208110156200142b57600080fd5b50519062004efb565b90508060b260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200148657600080fd5b505afa1580156200149b573d6000803e3d6000fd5b505050506040513d6020811015620014b257600080fd5b50510360b681905560b454620014df91670de0b6b3a764000091620014d8919062004f5f565b9062004fbd565b60b55560b254604080516370a0823160e01b815230600482015290516001600160a01b039092169163a9059cbb91839182916370a08231916024808301926020929190829003018186803b1580156200153757600080fd5b505afa1580156200154c573d6000803e3d6000fd5b505050506040513d60208110156200156357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015620015b557600080fd5b505af1158015620015ca573d6000803e3d6000fd5b505050506040513d6020811015620015e157600080fd5b505060b2546040805163148aedc160e21b81526001600160a01b0392831660048201529051479285169163522bb70491602480830192600092919082900301818387803b1580156200163257600080fd5b505af115801562001647573d6000803e3d6000fd5b5050505060006200166282476200500190919063ffffffff16565b90506901f2bba5d84f99c000008111620016c3576040805162461bcd60e51b815260206004820152601c60248201527f446964206e6f74207265636965766520656e6f75676820657468657200000000604482015290519081900360640190fd5b60b554620016d96064620014d884603c62004f5f565b1162001725576040805162461bcd60e51b81526020600482015260166024820152750546f6f206d75636820666f7220656e636f7265204c560541b604482015290519081900360640190fd5b60b1546001600160a01b0316158015906200174a5750609e546001600160a01b031615155b8015620017615750609f546001600160a01b031615155b620017a9576040805162461bcd60e51b815260206004820152601360248201527253616e69747920636865636b206661696c756560681b604482015290519081900360640190fd5b60b15460ae54609e546040805163266a23b160e21b81526001600160a01b03938416600482015291831660248301525191909216916399a88ec491604480830192600092919082900301818387803b1580156200180557600080fd5b505af11580156200181a573d6000803e3d6000fd5b505060b15460ac54609f546040805163266a23b160e21b8152620100009093046001600160a01b039081166004850152918216602484015251921693506399a88ec4925060448082019260009290919082900301818387803b1580156200188057600080fd5b505af115801562001895573d6000803e3d6000fd5b50505050620018a362005045565b505060ac805460ff191660011790555050565b60b45481565b60a95481565b60a85481565b60a5546001600160a01b031681565b609754610100900460ff161562001924576040805162461bcd60e51b815260206004820152601f602482015260008051602062005eb6833981519152604482015290519081900360640190fd5b6097805461ff00191661010017905560a45460ff16156200198c576040805162461bcd60e51b815260206004820152601760248201527f554e49434f5245204465706f7369747320636c6f736564000000000000000000604482015290519081900360640190fd5b60a654604080516370a0823160e01b8152336004820152905160009262001a15926001600160a01b039091169182916370a08231916024808301926020929190829003018186803b158015620019e157600080fd5b505afa158015620019f6573d6000803e3d6000fd5b505050506040513d602081101562001a0d57600080fd5b505162005174565b33600090815260aa602052604090205490915062001a34908262004efb565b33600090815260aa6020526040902055506097805461ff0019169055565b609754610100900460ff161562001a9f576040805162461bcd60e51b815260206004820152601f602482015260008051602062005eb6833981519152604482015290519081900360640190fd5b6097805461ff00191661010090811790915560ac540460ff161562001b0b576040805162461bcd60e51b815260206004820152601f60248201527f54454e53204c50207472616e7366657273207374696c6c206f6e676f696e6700604482015290519081900360640190fd5b60bb54604080516370a0823160e01b8152336004820152905160009262001b60926001600160a01b039091169182916370a08231916024808301926020929190829003018186803b158015620019e157600080fd5b33600090815260bf602052604090205490915062001b7f908262004efb565b33600090815260bf6020526040902055506097805461ff0019169055565b62001ba762004ef7565b6065546001600160a01b0390811691161462001bf9576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60a45460ff16151560011462001c415760405162461bcd60e51b815260040180806020018281038252602581526020018062005dec6025913960400191505060405180910390fd5b81518151811462001c87576040805162461bcd60e51b815260206004820152600b60248201526a15dc9bdb99c81a5b9c1d5d60aa1b604482015290519081900360640190fd5b60005b8181101562001ce65782818151811062001ca057fe5b602002602001015160ab600086848151811062001cb957fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205560010162001c8a565b50505050565b62001cf662004ef7565b6065546001600160a01b0390811691161462001d48576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60b85460ff161562001d96576040805162461bcd60e51b8152602060048201526012602482015271105b1c9958591e481d1c985b9cd9995c995960721b604482015290519081900360640190fd5b60ac5460ff16151560011462001dec576040805162461bcd60e51b8152602060048201526016602482015275115390d3d491481a185cc81d1bc819dbc8199a5c9cdd60521b604482015290519081900360640190fd5b60ba5460408051638da5cb5b60e01b8152905130926001600160a01b031691638da5cb5b9160048083019260209291908290030181600087803b15801562001e3357600080fd5b505af115801562001e48573d6000803e3d6000fd5b505050506040513d602081101562001e5f57600080fd5b50516001600160a01b03161462001ea85760405162461bcd60e51b815260040180806020018281038252602281526020018062005dca6022913960400191505060405180910390fd5b60b95460408051638da5cb5b60e01b8152905130926001600160a01b031691638da5cb5b9160048083019260209291908290030181600087803b15801562001eef57600080fd5b505af115801562001f04573d6000803e3d6000fd5b505050506040513d602081101562001f1b57600080fd5b50516001600160a01b03161462001f79576040805162461bcd60e51b815260206004820152601c60248201527f536574206d6520617320746865206f776e657220666f722054454e5300000000604482015290519081900360640190fd5b6001600160a01b03811662001f8d57600080fd5b60ba546040805163f2fde38b60e01b81526001600160a01b0384811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15801562001fdc57600080fd5b505af115801562001ff1573d6000803e3d6000fd5b505060b9546040805163f2fde38b60e01b81526001600160a01b038681166004830152915191909216935063f2fde38b9250602480830192600092919082900301818387803b1580156200204457600080fd5b505af115801562002059573d6000803e3d6000fd5b5050505060bb60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015620020ac57600080fd5b505afa158015620020c1573d6000803e3d6000fd5b505050506040513d6020811015620020d857600080fd5b505160be5560bb54604080516370a0823160e01b815230600482015290516001600160a01b039092169163a9059cbb91839182916370a08231916024808301926020929190829003018186803b1580156200213257600080fd5b505afa15801562002147573d6000803e3d6000fd5b505050506040513d60208110156200215e57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015620021b057600080fd5b505af1158015620021c5573d6000803e3d6000fd5b505050506040513d6020811015620021dc57600080fd5b505060bb546040805163148aedc160e21b81526001600160a01b0392831660048201529051479284169163522bb70491602480830192600092919082900301818387803b1580156200222d57600080fd5b505af115801562002242573d6000803e3d6000fd5b5050505060006200225d82476200500190919063ffffffff16565b905068070c1cc73b00c800008111620022bd576040805162461bcd60e51b815260206004820152601c60248201527f446964206e6f74207265636965766520656e6f75676820657468657200000000604482015290519081900360640190fd5b60bc546001600160a01b031615801590620022e25750609f546001600160a01b031615155b6200232a576040805162461bcd60e51b815260206004820152601360248201527253616e69747920636865636b206661696c756560681b604482015290519081900360640190fd5b60ba5460b854609f546040805163266a23b160e21b81526101009093046001600160a01b0390811660048501529182166024840152519216916399a88ec49160448082019260009290919082900301818387803b1580156200238b57600080fd5b505af1158015620023a0573d6000803e3d6000fd5b50505050604051620023b29062005a1d565b604051809103906000f080158015620023cf573d6000803e3d6000fd5b5060bc80546001600160a01b0319166001600160a01b03928316179081905560b954604080516310a7a65960e01b81529284166004840152519216916310a7a6599160248082019260009290919082900301818387803b1580156200243357600080fd5b505af115801562002448573d6000803e3d6000fd5b5050505062002470670de0b6b3a7640000620014d860b4548462004f5f90919063ffffffff16565b60bd556200247d6200530d565b505060b8805460ff1916600117905550565b60b85460ff1681565b60ac54610100900460ff1681565b609f546001600160a01b031681565b6098546001600160a01b031681565b60a15481565b60b65481565b6097546201000090046001600160a01b031681565b620024ef62004ef7565b6065546001600160a01b0390811691161462002541576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b609d546000906001600160a01b0316620025a85750600062000f19565b60975460ff16620025bc5750600062000f19565b33600090815260a3602052604090205460ff16151560011415620025e35750600062000f19565b6000620025f08362002757565b90506000620025ff8462003133565b905060006200260e8562000e63565b9050821580156200261d575081155b801562002628575080155b156200263b576000935050505062000f19565b60006200266460b5546200265d60a85460bd5462004efb90919063ffffffff16565b9062004efb565b905060008415620026975762002694856200268d60a95460a85462004fbd90919063ffffffff16565b9062004f5f565b90505b8315620026c457620026c1846200268d60b654620014d860b5548662004efb90919063ffffffff16565b90505b8215620026f157620026ee836200268d60be54620014d860bd548662004efb90919063ffffffff16565b90505b6200271a670de0b6b3a7640000620014d884620014d860a0548662004f5f90919063ffffffff16565b979650505050505050565b60bc546001600160a01b031681565b60a454610100900460ff1681565b60b0546001600160a01b031681565b60be5481565b60a45460009060ff16156200279e576001600160a01b038216600090815260aa602090815260408083205460ab90925290912054620027969162004efb565b905062000f19565b60a454604080516393f1a40b60e01b81526000600482018190526001600160a01b0386811660248401528351919462010000900416926393f1a40b9260448082019391829003018186803b158015620027f657600080fd5b505afa1580156200280b573d6000803e3d6000fd5b505050506040513d60408110156200282257600080fd5b50516001600160a01b038416600090815260aa60205260409020549091506200284c908262004efb565b91505062000f19565b60975460ff1681565b600054610100900460ff16806200287a57506200287a62005595565b8062002889575060005460ff16155b620028c65760405162461bcd60e51b815260040180806020018281038252602e81526020018062005f17602e913960400191505060405180910390fd5b600054610100900460ff16158015620028f2576000805460ff1961ff0019909116610100171660011790555b735a16552f59ea34e44ec81e58b3817833e9fd543632146200291357600080fd5b735a16552f59ea34e44ec81e58b3817833e9fd543633146200293457600080fd5b6200293e6200559b565b609c80546001600160a01b0319908116735a16552f59ea34e44ec81e58b3817833e9fd5436179091554260a255609f8054821673fed4ec1348a4068d4934e09492428fd92e399e5c179055609e805482167343dd7026284ac8f95eb02bb1bd68d0699b0ae9ca17905560a48054756f31ecd8110bcbc679aefb74c7608241d1b78949000062010000600160b01b03199182161790915560a580548316735506861bbb104baa8d8575e88e22084627b192d817905560b8805474f983ecf91195bd63de8445997082680e688749bc00610100600160a81b031990911617905560b98054831673776ca7ded9474829ea20ad4a5ab7a6ffdb64c79617905560ba80548316732d0c48c5bf930a09f8cd6fae5ac5a16b24e1723a17905560bb8054831673b1b537b7272ba1eda0086e2f480adca72c0b511c17905560bc805483167322c91cdd1e00cd4d7d029f0db94020fce3c486e317905560b180548316731964784ba40c9fd5eed1070c1c38cd5d1d5f9f5517905560af8054831673e0e4839e0c7b2773c58764f9ec3b9622d01a042817905560b280548316732e0721e6c951710725997928dcaaa05daafa031b17905560ae8054831673f3c3ff0ea59d15e82b9620ed7406fa3f6a261f9817905560ac805475def7bdf8ecb450c1d93c5db7c8dbce5894ccdaa90000921691909117905560ad805490911673c2cb86437355f36d42fb8d979ab28b9816ac054517905562002b71612710620014d86129e46200268d670de0b6b3a7640000600262004fbd565b60b481905550600073255ca4596a963883afe0ef9c85ea071cc050128b9050806001600160a01b0316630c37c9966040518163ffffffff1660e01b815260040160206040518083038186803b15801562002bca57600080fd5b505afa15801562002bdf573d6000803e3d6000fd5b505050506040513d602081101562002bf657600080fd5b50516097805462010000600160b01b031916620100006001600160a01b03938416021790556040805163279c6b3360e11b8152905191831691634f38d66691600480820192602092909190829003018186803b15801562002c5657600080fd5b505afa15801562002c6b573d6000803e3d6000fd5b505050506040513d602081101562002c8257600080fd5b5051609980546001600160a01b0319166001600160a01b0392831617905560408051637bb53c2d60e11b815290519183169163f76a785a916004808201926020929091908290030181600087803b15801562002cdd57600080fd5b505af115801562002cf2573d6000803e3d6000fd5b505050506040513d602081101562002d0957600080fd5b5051609880546001600160a01b0319166001600160a01b039283161790556040805163161d5a0360e11b8152905191831691632c3ab40691600480820192602092909190829003018186803b15801562002d6257600080fd5b505afa15801562002d77573d6000803e3d6000fd5b505050506040513d602081101562002d8e57600080fd5b5051609b80546001600160a01b039092166001600160a01b0319928316179055609a805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905550801562002de1576000805461ff00191690555b50565b6099546001600160a01b031681565b6065546001600160a01b031690565b60a05481565b60b1546001600160a01b031681565b60a4546201000090046001600160a01b031681565b60b3546001600160a01b031681565b62002e4562004ef7565b6065546001600160a01b0390811691161462002e97576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b609c546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905290519184169163a9059cbb916044808201926020929091908290030181600087803b15801562002eee57600080fd5b505af115801562002f03573d6000803e3d6000fd5b505050506040513d602081101562001ce657600080fd5b60ac5460ff1681565b62002f2d62004ef7565b6065546001600160a01b0390811691161462002f7f576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b62002f896200530d565b565b62002f9562004ef7565b6065546001600160a01b0390811691161462002fe7576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b62002f8962005045565b60b2546001600160a01b031681565b6200300a62004ef7565b6065546001600160a01b039081169116146200305c576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60006200307e60b5546200265d60a85460bd5462004efb90919063ffffffff16565b90508060a15414620030d7576040805162461bcd60e51b815260206004820152601a60248201527f5374696c6c206d6f6e657920746f2073656e6420746f204c4745000000000000604482015290519081900360640190fd5b6001600160a01b0382166200311c576040805162461bcd60e51b815260206004808301919091526024820152630103737960e51b604482015290519081900360640190fd5b62003128828462005658565b505050565b60a75481565b60ac54604080516393f1a40b60e01b81526000600482018190526001600160a01b03858116602484015283519194859462010000909104909116926393f1a40b9260448083019392829003018186803b1580156200319057600080fd5b505afa158015620031a5573d6000803e3d6000fd5b505050506040513d6040811015620031bc57600080fd5b505160ad546040805163d6ce2ef960e01b81526001600160a01b0387811660048301529151939450600093919092169163d6ce2ef9916024808301926020929190829003018186803b1580156200321257600080fd5b505afa15801562003227573d6000803e3d6000fd5b505050506040513d60208110156200323e57600080fd5b50516001600160a01b038516600090815260b760205260409020549091506200326f9082906200265d908562004efb565b949350505050565b609d546001600160a01b031681565b609754610100900460ff1615620032d3576040805162461bcd60e51b815260206004820152601f602482015260008051602062005eb6833981519152604482015290519081900360640190fd5b6097805461ff00191661010090811790915560ac540460ff16156200333f576040805162461bcd60e51b815260206004820152601a60248201527f454e434f5245204c50207472616e736665727320636c6f736564000000000000604482015290519081900360640190fd5b60b254604080516370a0823160e01b8152336004820152905160009262003394926001600160a01b039091169182916370a08231916024808301926020929190829003018186803b158015620019e157600080fd5b33600090815260b76020526040902054909150620033b3908262004efb565b33600090815260b76020526040902055506097805461ff0019169055565b609b546001600160a01b031681565b609c546001600160a01b031681565b609754610100900460ff16156200343c576040805162461bcd60e51b815260206004820152601f602482015260008051602062005eb6833981519152604482015290519081900360640190fd5b6097805461ff001916610100179081905560ff1615156001146200349e576040805162461bcd60e51b8152602060048201526014602482015273139bdd1a1a5b99c81d1bc818db185a5b481e595d60621b604482015290519081900360640190fd5b6000620034ab336200258b565b11620034f1576040805162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b604482015290519081900360640190fd5b609d546001600160a01b031663a9059cbb336200350e816200258b565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156200355557600080fd5b505af11580156200356a573d6000803e3d6000fd5b505050506040513d60208110156200358157600080fd5b50516200358d57600080fd5b33600090815260a360205260409020805460ff191660011790556097805461ff0019169055565b600080620035d760b5546200265d60a85460bd5462004efb90919063ffffffff16565b60a154900391505090565b620035ec62004ef7565b6065546001600160a01b039081169116146200363e576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60a25462003650906202a30062004efb565b4210156200369b576040805162461bcd60e51b81526020600482015260136024820152723220646179206772616365206f6e676f696e6760681b604482015290519081900360640190fd5b60ac805461ff001916610100179055565b60b9546001600160a01b031681565b620036c562004ef7565b6065546001600160a01b0390811691161462003717576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b60ac5460ff1615156001146200376d576040805162461bcd60e51b8152602060048201526016602482015275115390d3d491481a185cc81d1bc819dbc8199a5c9cdd60521b604482015290519081900360640190fd5b60a454610100900460ff1615620037cb576040805162461bcd60e51b815260206004820152601a60248201527f554e49434f524520616c7265616479207472616e736665726564000000000000604482015290519081900360640190fd5b60a5546040805163c25cc8af60e01b815230600482015290516001600160a01b039092169163c25cc8af916024808201926020929091908290030181600087803b1580156200381957600080fd5b505af11580156200382e573d6000803e3d6000fd5b505050506040513d60208110156200384557600080fd5b505160ff166002146200388a5760405162461bcd60e51b815260040180806020018281038252602f81526020018062005e11602f913960400191505060405180910390fd5b60a5546040805163c25cc8af60e01b8152735a16552f59ea34e44ec81e58b3817833e9fd5436600482015290516001600160a01b039092169163c25cc8af916024808201926020929091908290030181600087803b158015620038ec57600080fd5b505af115801562003901573d6000803e3d6000fd5b505050506040513d60208110156200391857600080fd5b505160ff166002146200395d5760405162461bcd60e51b815260040180806020018281038252602f81526020018062005e11602f913960400191505060405180910390fd5b60a5546040805163c25cc8af60e01b81527305957f3344255fdc9fe172e30016ee148d684313600482015290516001600160a01b039092169163c25cc8af916024808201926020929091908290030181600087803b158015620039bf57600080fd5b505af1158015620039d4573d6000803e3d6000fd5b505050506040513d6020811015620039eb57600080fd5b505160ff161562003a2e5760405162461bcd60e51b815260040180806020018281038252602f81526020018062005e11602f913960400191505060405180910390fd5b60a5546040805163c25cc8af60e01b815273e6f32f17be3bf031b4b6150689c1f17ceca375c8600482015290516001600160a01b039092169163c25cc8af916024808201926020929091908290030181600087803b15801562003a9057600080fd5b505af115801562003aa5573d6000803e3d6000fd5b505050506040513d602081101562003abc57600080fd5b505160ff161562003aff5760405162461bcd60e51b815260040180806020018281038252602f81526020018062005e11602f913960400191505060405180910390fd5b60a5546040805163c25cc8af60e01b815273f4d7a0e8a68345442172f45cabd272c25320aa96600482015290516001600160a01b039092169163c25cc8af916024808201926020929091908290030181600087803b15801562003b6157600080fd5b505af115801562003b76573d6000803e3d6000fd5b505050506040513d602081101562003b8d57600080fd5b505160ff161562003bd05760405162461bcd60e51b815260040180806020018281038252602f81526020018062005e11602f913960400191505060405180910390fd5b670de0b6b3a764000047101562003c1d576040805162461bcd60e51b815260206004820152600c60248201526b0408ccacac840daca40cae8d60a31b604482015290519081900360640190fd5b60a554609a5460408051630d0e30db60e41b815290516001600160a01b03938416939092169163d0e30db091670de0b6b3a764000091600480830192600092919082900301818588803b15801562003c7457600080fd5b505af115801562003c89573d6000803e3d6000fd5b50505050506000816001600160a01b031663a19b08376040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562003ccc57600080fd5b505af115801562003ce1573d6000803e3d6000fd5b505050506040513d602081101562003cf857600080fd5b5051609a5460408051630dfe168160e01b815290519293506000926001600160a01b0392831692851691630dfe1681916004808301926020929190829003018186803b15801562003d4857600080fd5b505afa15801562003d5d573d6000803e3d6000fd5b505050506040513d602081101562003d7457600080fd5b505160408051630240bc6b60e21b815290516001600160a01b039283169390931493506000928392861691630902f1ac916004808301926060929190829003018186803b15801562003dc557600080fd5b505afa15801562003dda573d6000803e3d6000fd5b505050506040513d606081101562003df157600080fd5b508051602091820151609a546040805163a9059cbb60e01b81526001600160a01b038a81166004830152670de0b6b3a7640000602483015291516001600160701b039586169850949093169550169263a9059cbb926044808401938290030181600087803b15801562003e6357600080fd5b505af115801562003e78573d6000803e3d6000fd5b505050506040513d602081101562003e8f57600080fd5b5060009050831562003f365762003eb0670de0b6b3a764000084846200568f565b6040805163022c0d9f60e01b815260006004820181905260248201849052306044830152608060648301526084820181905291519293506001600160a01b0388169263022c0d9f9260c48084019391929182900301818387803b15801562003f1757600080fd5b505af115801562003f2c573d6000803e3d6000fd5b5050505062003fcc565b62003f4b670de0b6b3a764000083856200568f565b6040805163022c0d9f60e01b815260048101839052600060248201819052306044830152608060648301526084820181905291519293506001600160a01b0388169263022c0d9f9260c48084019391929182900301818387803b15801562003fb257600080fd5b505af115801562003fc7573d6000803e3d6000fd5b505050505b60408051636817031b60e01b815230600482015290516001600160a01b03881691636817031b91602480830192600092919082900301818387803b1580156200401457600080fd5b505af115801562004029573d6000803e3d6000fd5b50505050856001600160a01b031663a97919b260646040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156200407557600080fd5b505af11580156200408a573d6000803e3d6000fd5b505050506000866001600160a01b03166370a08231886001600160a01b031663a19b08376040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620040db57600080fd5b505af1158015620040f0573d6000803e3d6000fd5b505050506040513d60208110156200410757600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301525160248083019260209291908290030181600087803b1580156200415157600080fd5b505af115801562004166573d6000803e3d6000fd5b505050506040513d60208110156200417d57600080fd5b505160408051635158533760e11b815290519192506000916001600160a01b038a169163a2b0a66e91600480830192602092919082900301818787803b158015620041c757600080fd5b505af1158015620041dc573d6000803e3d6000fd5b505050506040513d6020811015620041f357600080fd5b5051604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156200423857600080fd5b505afa1580156200424d573d6000803e3d6000fd5b505050506040513d60208110156200426457600080fd5b505160a9819055905060006200428483620014d860001982018562004f5f565b9050886001600160a01b0316631fca1d65826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015620042cd57600080fd5b505af1158015620042e2573d6000803e3d6000fd5b50505050600080896001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156200432357600080fd5b505afa15801562004338573d6000803e3d6000fd5b505050506040513d60608110156200434f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050506001600160701b031691506001600160701b031691506000808c6001600160a01b03166370a082318d6040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015620043de57600080fd5b505af1158015620043f3573d6000803e3d6000fd5b505050506040513d60208110156200440a57600080fd5b5051604080516370a0823160e01b815230600482015290519192506001600160a01b038f169163a9059cbb918f9184916370a082319160248083019260209291908290030181600087803b1580156200446257600080fd5b505af115801562004477573d6000803e3d6000fd5b505050506040513d60208110156200448e57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015620044e057600080fd5b505af1158015620044f5573d6000803e3d6000fd5b505050506040513d60208110156200450c57600080fd5b81019080805190602001909291905050505060008d6001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b1580156200457057600080fd5b505af115801562004585573d6000803e3d6000fd5b505050506040513d60208110156200459c57600080fd5b505190508b156200471f57620045b682820385876200568f565b92508c6001600160a01b031663022c0d9f846000306040518463ffffffff1660e01b815260040180848152602001838152602001826001600160a01b0316815260200180602001828103825260008152602001602001945050505050600060405180830381600087803b1580156200462d57600080fd5b505af115801562004642573d6000803e3d6000fd5b505050508c6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156200468057600080fd5b505afa15801562004695573d6000803e3d6000fd5b505050506040513d6060811015620046ac57600080fd5b5080516020909101516001600160701b039182169650169350670de0b6b3a7640000851062004719576040805162461bcd60e51b815260206004820152601460248201527308109d5c9b881b9bdd081cdd59999a58da595b9d60621b604482015290519081900360640190fd5b62004891565b6200472e82820386866200568f565b92508c6001600160a01b031663022c0d9f600085306040518463ffffffff1660e01b815260040180848152602001838152602001826001600160a01b0316815260200180602001828103825260008152602001602001945050505050600060405180830381600087803b158015620047a557600080fd5b505af1158015620047ba573d6000803e3d6000fd5b505050508c6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015620047f857600080fd5b505afa1580156200480d573d6000803e3d6000fd5b505050506040513d60608110156200482457600080fd5b5080516020909101516001600160701b039182169650169350670de0b6b3a7640000841062004891576040805162461bcd60e51b815260206004820152601460248201527308109d5c9b881b9bdd081cdd59999a58da595b9d60621b604482015290519081900360640190fd5b60008e6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620048cf57600080fd5b505af1158015620048e4573d6000803e3d6000fd5b505050506040513d6020811015620048fb57600080fd5b50519050620049126064620014d883603c62004f5f565b841162004966576040805162461bcd60e51b815260206004820152601760248201527f204469646e27742067657420656e6f7567682045544820000000000000000000604482015290519081900360640190fd5b681b1ae4d6e2ef5000008411620049bd576040805162461bcd60e51b815260206004820152601660248201527504088d2c8dc4ee840cecae840cadcdeeaced0408aa8960531b604482015290519081900360640190fd5b620049e1670de0b6b3a7640000620014d860b4548762004f5f90919063ffffffff16565b60a855604051600090620049f59062005a2b565b604051809103906000f08015801562004a12573d6000803e3d6000fd5b50609a546040805163a9059cbb60e01b81526001600160a01b038085166004830152602482018a9052915193945091169163a9059cbb916044808201926020929091908290030181600087803b15801562004a6c57600080fd5b505af115801562004a81573d6000803e3d6000fd5b505050506040513d602081101562004a9857600080fd5b505060408051630c61681560e41b8152905147916001600160a01b0384169163c61681509160048082019260009290919082900301818387803b15801562004adf57600080fd5b505af115801562004af4573d6000803e3d6000fd5b50505050600062004b0f82476200500190919063ffffffff16565b905086811462004b58576040805162461bcd60e51b815260206004820152600f60248201526e119a5e081d5b9cdd58d95cdcd99d5b608a1b604482015290519081900360640190fd5b50508f6001600160a01b0316632e7fae313060016040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801562004bb357600080fd5b505af115801562004bc8573d6000803e3d6000fd5b505060a4805461ff001916610100179055505050505050505050505050505050505050565b62004bf762004ef7565b6065546001600160a01b0390811691161462004c49576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b600062004c6b60b5546200265d60a85460bd5462004efb90919063ffffffff16565b60a15490915062004c7d908462004efb565b60a181905581101562004cc7576040805162461bcd60e51b815260206004820152600d60248201526c151bdbc81b5d58da081cd95b9d609a1b604482015290519081900360640190fd5b6001600160a01b03821662004d0c576040805162461bcd60e51b815260206004808301919091526024820152630103737960e51b604482015290519081900360640190fd5b62004d18828462005658565b6040805184815290517fb8b41fad14a0213642b056f1575bcff86305c7b67b8ed71fef3f14808f716d0d9181900360200190a1505050565b62004d5a62004ef7565b6065546001600160a01b0390811691161462004dac576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b6001600160a01b03811662004df35760405162461bcd60e51b815260040180806020018281038252602681526020018062005e406026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b60b55481565b62004e5f62004ef7565b6065546001600160a01b0390811691161462004eb1576040805162461bcd60e51b8152602060048201819052602482015260008051602062005ef7833981519152604482015290519081900360640190fd5b609d80546001600160a01b0319166001600160a01b0392909216919091179055565b60bb546001600160a01b031681565b60ad546001600160a01b031681565b60bd5481565b3390565b60008282018381101562004f56576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b60008262004f705750600062004f59565b8282028284828162004f7e57fe5b041462004f565760405162461bcd60e51b815260040180806020018281038252602181526020018062005ed66021913960400191505060405180910390fd5b600062004f5683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200576e565b600062004f5683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062005815565b60b154609c546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051919092169163f2fde38b91602480830192600092919082900301818387803b1580156200509757600080fd5b505af1158015620050ac573d6000803e3d6000fd5b5050609c5460b15460408051638da5cb5b60e01b815290516001600160a01b039384169550929091169250638da5cb5b9160048083019260209291908290030181600087803b158015620050ff57600080fd5b505af115801562005114573d6000803e3d6000fd5b505050506040513d60208110156200512b57600080fd5b50516001600160a01b03161462002f895760405162461bcd60e51b815260040180806020018281038252602881526020018062005e666028913960400191505060405180910390fd5b600080836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015620051c557600080fd5b505afa158015620051da573d6000803e3d6000fd5b505050506040513d6020811015620051f157600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810186905290519192506001600160a01b038616916323b872dd916064808201926020929091908290030181600087803b1580156200524d57600080fd5b505af115801562005262573d6000803e3d6000fd5b505050506040513d60208110156200527957600080fd5b50516200528557600080fd5b6200326f81856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015620052d857600080fd5b505afa158015620052ed573d6000803e3d6000fd5b505050506040513d60208110156200530457600080fd5b50519062005001565b60b954609c546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051919092169163f2fde38b91602480830192600092919082900301818387803b1580156200535f57600080fd5b505af115801562005374573d6000803e3d6000fd5b5050609c5460b95460408051638da5cb5b60e01b815290516001600160a01b039384169550929091169250638da5cb5b9160048083019260209291908290030181600087803b158015620053c757600080fd5b505af1158015620053dc573d6000803e3d6000fd5b505050506040513d6020811015620053f357600080fd5b50516001600160a01b03161462005451576040805162461bcd60e51b815260206004820152601b60248201527f4d756c7469736967206e6f74206f776e6572206f6620746f6b656e0000000000604482015290519081900360640190fd5b60ba54609c546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051919092169163f2fde38b91602480830192600092919082900301818387803b158015620054a357600080fd5b505af1158015620054b8573d6000803e3d6000fd5b5050609c5460ba5460408051638da5cb5b60e01b815290516001600160a01b039384169550929091169250638da5cb5b9160048083019260209291908290030181600087803b1580156200550b57600080fd5b505af115801562005520573d6000803e3d6000fd5b505050506040513d60208110156200553757600080fd5b50516001600160a01b03161462002f89576040805162461bcd60e51b815260206004820181905260248201527f4d756c7469736967206e6f74206f776e6572206f662070726f787961646d696e604482015290519081900360640190fd5b303b1590565b600054610100900460ff1680620055b75750620055b762005595565b80620055c6575060005460ff16155b620056035760405162461bcd60e51b815260040180806020018281038252602e81526020018062005f17602e913960400191505060405180910390fd5b600054610100900460ff161580156200562f576000805460ff1961ff0019909116610100171660011790555b6200563962005872565b620056436200591a565b801562002de1576000805461ff001916905550565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801562003128573d6000803e3d6000fd5b6000808411620056d15760405162461bcd60e51b815260040180806020018281038252602b81526020018062005f69602b913960400191505060405180910390fd5b600083118015620056e25750600082115b6200571f5760405162461bcd60e51b815260040180806020018281038252602881526020018062005e8e6028913960400191505060405180910390fd5b60006200572f856103e562004f5f565b905060006200573f828562004f5f565b9050600062005756836200265d886103e862004f5f565b90508082816200576257fe5b04979650505050505050565b60008183620057fe5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620057c2578181015183820152602001620057a8565b50505050905090810190601f168015620057f05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200580b57fe5b0495945050505050565b600081848411156200586a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620057c2578181015183820152602001620057a8565b505050900390565b600054610100900460ff16806200588e57506200588e62005595565b806200589d575060005460ff16155b620058da5760405162461bcd60e51b815260040180806020018281038252602e81526020018062005f17602e913960400191505060405180910390fd5b600054610100900460ff1615801562005643576000805460ff1961ff001990911661010017166001179055801562002de1576000805461ff001916905550565b600054610100900460ff16806200593657506200593662005595565b8062005945575060005460ff16155b620059825760405162461bcd60e51b815260040180806020018281038252602e81526020018062005f17602e913960400191505060405180910390fd5b600054610100900460ff16158015620059ae576000805460ff1961ff0019909116610100171660011790555b6000620059ba62004ef7565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801562002de1576000805461ff001916905550565b6101bf8062005a3a83390190565b6101d18062005bf98339019056fe608060405234801561001057600080fd5b50600080546001600160a01b03191673b1b537b7272ba1eda0086e2f480adca72c0b511c179055610179806100466000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630484c7281461003b578063301a58011461005f575b600080fd5b6100436100b3565b604080516001600160a01b039092168252519081900360200190f35b6100956004803603606081101561007557600080fd5b506001600160a01b038135811691602081013590911690604001356100c2565b60408051938452602084019290925282820152519081900360600190f35b6000546001600160a01b031681565b60008054819081906001600160a01b03878116911614806100f057506000546001600160a01b038681169116145b15610138576040805162461bcd60e51b81526020600482015260136024820152722a22a7299034b9903232b83932b1b0ba32b21760691b604482015290519081900360640190fd5b92959094509192505056fea264697066735822122094cfea0de9993065511c2a30e640537c9550026f0342d5db8f284b0cd866cd0164736f6c634300060c00336080604052600080546001600160a01b0319908116735dca4093bfe88d6fd5511fb78f6a777d47314d35179091556001805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905534801561005857600080fd5b50610169806100686000396000f3fe6080604052600436106100225760003560e01c8063c61681501461002e57610029565b3661002957005b600080fd5b34801561003a57600080fd5b50610043610045565b005b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561009057600080fd5b505afa1580156100a4573d6000803e3d6000fd5b505050506040513d60208110156100ba57600080fd5b505160015460408051632e1a7d4d60e01b81526004810184905290519293506001600160a01b0390911691632e1a7d4d9160248082019260009290919082900301818387803b15801561010c57600080fd5b505af1158015610120573d6000803e3d6000fd5b50506000546001600160a01b0316915050fffea26469706673582212203c9cdbe7af103b38537c33ac73c093a2742c908f6abb091df774e12fbcfcfcbb64736f6c634300060c0033536574206d65206173207468652070726f7879206f776e657220666f722054454e53554e49434f5245204465706f7369747320617265207374696c6c206e6f7420636c6f736564496e636f72726563746c792073657420676f7665726e616e6365206c6576656c2c2063616e27742070726f636565644f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f7879204f776e657273686970205472616e73666572204e6f74205375636365737366756c6c556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459434f5245204d69677261746f723a20457865637574696f6e204c6f636b656400536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564536574206d65206173207468652070726f7879206f776e657220666f7220454e434f5245556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54454e434f5245204c50207472616e7366657273207374696c6c206f6e676f696e67a264697066735822122022cd2e2e08d06f674e0a80065db75505f95f7006ce61ce2014ad60114885b75964736f6c634300060c0033
Deployed Bytecode Sourcemap
26569:22004:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27306:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;27458:36;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;27458:36:0;;;;;;;;;;;;;;33493:117;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33493:117:0;-1:-1:-1;;;;;33493:117:0;;:::i;:::-;;27925:27;;;;;;;;;;;;;:::i;28614:31::-;;;;;;;;;;;;;:::i;28043:27::-;;;;;;;;;;;;;:::i;28002:34::-;;;;;;;;;;;;;:::i;42716:224::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42716:224:0;-1:-1:-1;;;;;42716:224:0;;:::i;:::-;;;;;;;;;;;;;;;;28550:25;;;;;;;;;;;;;:::i;27035:37::-;;;;;;;;;;;;;:::i;48250:318::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48250:318:0;-1:-1:-1;;;;;48250:318:0;;:::i;39723:2159::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39723:2159:0;-1:-1:-1;;;;;39723:2159:0;;:::i;28234:41::-;;;;;;;;;;;;;:::i;27621:38::-;;;;;;;;;;;;;:::i;27573:41::-;;;;;;;;;;;;;:::i;27423:28::-;;;;;;;;;;;;;:::i;34053:368::-;;;;;;;;;;;;;:::i;42360:348::-;;;;;;;;;;;;;:::i;33044:441::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33044:441:0;;;;;;;;-1:-1:-1;33044:441:0;;-1:-1:-1;;33044:441:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33044:441:0;;-1:-1:-1;33044:441:0;;-1:-1:-1;;;;;33044:441:0:i;42948:1796::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42948:1796:0;-1:-1:-1;;;;;42948:1796:0;;:::i;28506:37::-;;;;;;;;;;;;;:::i;27883:35::-;;;;;;;;;;;;;:::i;27079:30::-;;;;;;;;;;;;;:::i;26814:28::-;;;;;;;;;;;;;:::i;27152:27::-;;;;;;;;;;;;;:::i;28329:37::-;;;;;;;;;;;;;:::i;26788:19::-;;;;;;;;;;;;;:::i;23442:148::-;;;;;;;;;;;;;:::i;31682:1282::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31682:1282:0;-1:-1:-1;;;;;31682:1282:0;;:::i;28687:42::-;;;;;;;;;;;;;:::i;27341:40::-;;;;;;;;;;;;;:::i;28077:36::-;;;;;;;;;;;;;:::i;28781:35::-;;;;;;;;;;;;;:::i;33618:427::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33618:427:0;-1:-1:-1;;;;;33618:427:0;;:::i;26727:28::-;;;;;;;;;;;;;:::i;29119:2051::-;;;;;;;;;;;;;:::i;26849:40::-;;;;;;;;;;;;;:::i;22800:79::-;;;;;;;;;;;;;:::i;27116:29::-;;;;;;;;;;;;;:::i;28120:33::-;;;;;;;;;;;;;:::i;27388:28::-;;;;;;;;;;;;;:::i;28197:30::-;;;;;;;;;;;;;:::i;47069:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;47069:139:0;;;;;;;;:::i;27837:39::-;;;;;;;;;;;;;:::i;44752:124::-;;;;;;;;;;;;;:::i;41890:126::-;;;;;;;;;;;;;:::i;28160:30::-;;;;;;;;;;;;;:::i;47658:345::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47658:345:0;;;;;;-1:-1:-1;;;;;47658:345:0;;:::i;27529:37::-;;;;;;;;;;;;;:::i;38757:363::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38757:363:0;-1:-1:-1;;;;;38757:363:0;;:::i;26992:36::-;;;;;;;;;;;;;:::i;39159:353::-;;;;;;;;;;;;;:::i;26913:29::-;;;;;;;;;;;;;:::i;26949:36::-;;;;;;;;;;;;;:::i;31370:304::-;;;;;;;;;;;;;:::i;48011:231::-;;;;;;;;;;;;;:::i;39520:195::-;;;;;;;;;;;;;:::i;28582:25::-;;;;;;;;;;;;;:::i;34543:4137::-;;;;;;;;;;;;;:::i;47216:434::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47216:434:0;;;;;;-1:-1:-1;;;;;47216:434:0;;:::i;23745:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23745:244:0;-1:-1:-1;;;;;23745:244:0;;:::i;28282:40::-;;;;;;;;;;;;;:::i;31253:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31253:109:0;-1:-1:-1;;;;;31253:109:0;;:::i;28652:28::-;;;;;;;;;;;;;:::i;27959:36::-;;;;;;;;;;;;;:::i;28736:38::-;;;;;;;;;;;;;:::i;27306:28::-;;;;;;:::o;27458:36::-;;;-1:-1:-1;;;;;27458:36:0;;:::o;33493:117::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;33572:21:::1;:30:::0;;-1:-1:-1;;;;;;33572:30:0::1;-1:-1:-1::0;;;;;33572:30:0;;;::::1;::::0;;;::::1;::::0;;33493:117::o;27925:27::-;;;;;;-1:-1:-1;;;;;27925:27:0;;:::o;28614:31::-;;;-1:-1:-1;;;;;28614:31:0;;:::o;28043:27::-;;;-1:-1:-1;;;;;28043:27:0;;:::o;28002:34::-;;;-1:-1:-1;;;;;28002:34:0;;:::o;42716:224::-;42846:10;;42832:45;;;-1:-1:-1;;;42832:45:0;;42785:7;42832:45;;;;;;-1:-1:-1;;;;;42832:45:0;;;;;;;;;42785:7;;;;42846:10;;;;;;;;42832:34;;:45;;;;;;;;;;;42846:10;42832:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42832:45:0;-1:-1:-1;;;;;42895:21:0;;;;;;:13;42832:45;42895:21;42832:45;42895:21;;;42832:45;;-1:-1:-1;42895:37:0;;42832:45;42895:25;:37::i;:::-;42888:44;;;42716:224;;;;:::o;28550:25::-;;;;;;-1:-1:-1;;;;;28550:25:0;;:::o;27035:37::-;;;-1:-1:-1;;;;;27035:37:0;;:::o;48250:318::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;48331:21:::1;::::0;-1:-1:-1;;;;;48331:21:0::1;48323:73;;;::::0;;-1:-1:-1;;;48323:73:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;48412:11;-1:-1:-1::0;;;;;48407:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;48455:16:0::1;:23:::0;;-1:-1:-1;;48455:23:0::1;48474:4;48455:23;::::0;;-1:-1:-1;;48513:21:0::1;::::0;48506:54:::1;::::0;;-1:-1:-1;;;48506:54:0;;48554:4:::1;48506:54;::::0;::::1;::::0;;;-1:-1:-1;;;;;48513:21:0;;::::1;::::0;48506:39:::1;::::0;:54;;;;;::::1;::::0;;;;;;;;;48513:21;48506:54;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;48506:54:0;48489:14:::1;:71:::0;-1:-1:-1;48250:318:0:o;39723:2159::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;39827:23:::1;::::0;::::1;;::::0;;::::1;;:31;;:23;:31;39819:77;;;;-1:-1:-1::0;;;39819:77:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39915:27;::::0;::::1;;:36;39907:77;;;::::0;;-1:-1:-1;;;39907:77:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;40015:18;::::0;40003:39:::1;::::0;;-1:-1:-1;;;40003:39:0;;;;40054:4:::1;::::0;-1:-1:-1;;;;;40015:18:0::1;::::0;40003:37:::1;::::0;:39:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;40015:18:::1;::::0;40003:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40003:39:0;-1:-1:-1;;;;;40003:56:0::1;;39995:105;;;;-1:-1:-1::0;;;39995:105:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;40121:37:0;::::1;40113:46;;;::::0;::::1;;40182:18;::::0;40170:74:::1;::::0;;-1:-1:-1;;;40170:74:0;;-1:-1:-1;;;;;40170:74:0;;::::1;;::::0;::::1;::::0;;;40182:18;;;::::1;::::0;40170:49:::1;::::0;:74;;;;;40182:18:::1;::::0;40170:74;;;;;;;40182:18;;40170:74;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;40407:15:0::1;::::0;40400:77:::1;::::0;;-1:-1:-1;;;40400:77:0;;40434:42:::1;40400:77;::::0;::::1;::::0;;;40305:22:::1;::::0;-1:-1:-1;40330:148:0::1;::::0;-1:-1:-1;;;;;;40407:15:0;;::::1;::::0;40400:33:::1;::::0;:77;;;;;::::1;::::0;;;;;;;;;40407:15;40400:77;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40400:77:0;40337:15:::1;::::0;40364:12:::1;::::0;40330:47:::1;::::0;;-1:-1:-1;;;40330:47:0;;-1:-1:-1;;;;;40364:12:0;;::::1;40330:47;::::0;::::1;::::0;;;40337:15;;;::::1;::::0;40330:33:::1;::::0;:47;;;;;40400:77:::1;::::0;40330:47;;;;;;;40337:15;40330:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40330:47:0;;:69:::1;:148::i;:::-;40305:173;;40556:14;40523:15;;;;;;;;;-1:-1:-1::0;;;;;40523:15:0::1;-1:-1:-1::0;;;;;40516:35:0::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40516:37:0;:54:::1;40491:22;:79:::0;;;40725:26:::1;::::0;40665:115:::1;::::0;40775:4:::1;::::0;40665:87:::1;::::0;40516:54;40665:59:::1;:87::i;:::-;:109:::0;::::1;:115::i;:::-;40637:25;:143:::0;40847:15:::1;::::0;40904:48:::1;::::0;;-1:-1:-1;;;40904:48:0;;40946:4:::1;40904:48;::::0;::::1;::::0;;;-1:-1:-1;;;;;40847:15:0;;::::1;::::0;40840:46:::1;::::0;40847:15;;;;40904:33:::1;::::0;:48;;;;;::::1;::::0;;;;;;;;40847:15;40904:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40904:48:0;40840:113:::1;::::0;;-1:-1:-1;;;;;;40840:113:0::1;::::0;;;;;;-1:-1:-1;;;;;40840:113:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;40904:48:::1;::::0;40840:113;;;;;;;-1:-1:-1;40840:113:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;41068:15:0::1;::::0;41021:63:::1;::::0;;-1:-1:-1;;;41021:63:0;;-1:-1:-1;;;;;41068:15:0;;::::1;41021:63;::::0;::::1;::::0;;;40989:21:::1;::::0;41021:46;::::1;::::0;::::1;::::0;:63;;;;;40966:20:::1;::::0;41021:63;;;;;;;40966:20;41021:46;:63;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41095:14;41112:39;41138:12;41112:21;:25;;:39;;;;:::i;:::-;41095:56;;41214:10;41205:6;:19;41197:60;;;::::0;;-1:-1:-1;;;41197:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;41347:25;::::0;41321:23:::1;41340:3;41321:14;:6:::0;41332:2:::1;41321:10;:14::i;:23::-;:51;41313:86;;;::::0;;-1:-1:-1;;;41313:86:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;41313:86:0;;;;;;;;;;;;;::::1;;41437:18;::::0;-1:-1:-1;;;;;41437:18:0::1;:32:::0;;::::1;::::0;:91:::1;;-1:-1:-1::0;41492:22:0::1;::::0;-1:-1:-1;;;;;41492:22:0::1;:36:::0;::::1;41437:91;:142;;;;-1:-1:-1::0;41550:15:0::1;::::0;-1:-1:-1;;;;;41550:15:0::1;:29:::0;::::1;41437:142;41429:174;;;::::0;;-1:-1:-1;;;41429:174:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;41429:174:0;;;;;;;;;;;;;::::1;;41628:18;::::0;41656:19:::1;::::0;41677:22:::1;::::0;41616:84:::1;::::0;;-1:-1:-1;;;41616:84:0;;-1:-1:-1;;;;;41656:19:0;;::::1;41616:84;::::0;::::1;::::0;41677:22;;::::1;41616:84:::0;;;;;41628:18;;;::::1;::::0;41616:39:::1;::::0;:84;;;;;41628:18:::1;::::0;41616:84;;;;;;;41628:18;;41616:84;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;41723:18:0::1;::::0;41751:12:::1;::::0;41765:15:::1;::::0;41711:70:::1;::::0;;-1:-1:-1;;;41711:70:0;;41751:12;;;::::1;-1:-1:-1::0;;;;;41751:12:0;;::::1;41711:70;::::0;::::1;::::0;41765:15;;::::1;41711:70:::0;;;;;41723:18;::::1;::::0;-1:-1:-1;41711:39:0::1;::::0;-1:-1:-1;41711:70:0;;;;;41723:18:::1;::::0;41711:70;;;;;;;;41723:18;;41711:70;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41792:37;:35;:37::i;:::-;-1:-1:-1::0;;41840:27:0::1;:34:::0;;-1:-1:-1;;41840:34:0::1;41870:4;41840:34;::::0;;-1:-1:-1;;39723:2159:0:o;28234:41::-;;;;:::o;27621:38::-;;;;:::o;27573:41::-;;;;:::o;27423:28::-;;;-1:-1:-1;;;;;27423:28:0;;:::o;34053:368::-;28969:6;;;;;;;:15;28961:59;;;;;-1:-1:-1;;;28961:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28961:59:0;;;;;;;;;;;;;;;29031:6;:13;;-1:-1:-1;;29031:13:0;;;;;34114:16:::1;::::0;29031:13;34114:16:::1;:25;34106:61;;;::::0;;-1:-1:-1;;;34106:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;34244:21;::::0;34267:51:::1;::::0;;-1:-1:-1;;;34267:51:0;;34307:10:::1;34267:51;::::0;::::1;::::0;;;34178:16:::1;::::0;34197:122:::1;::::0;-1:-1:-1;;;;;34244:21:0;;::::1;::::0;;;34267:39:::1;::::0;:51;;;;;::::1;::::0;;;;;;;;34244:21;34267:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;34267:51:0;34197:46:::1;:122::i;:::-;34388:10;34366:33;::::0;;;:21:::1;:33;::::0;;;;;34178:141;;-1:-1:-1;34366:47:0::1;::::0;34178:141;34366:37:::1;:47::i;:::-;34352:10;34330:33;::::0;;;:21:::1;:33;::::0;;;;:83;-1:-1:-1;29067:6:0;:14;;-1:-1:-1;;29067:14:0;;;34053:368::o;42360:348::-;28969:6;;;;;;;:15;28961:59;;;;;-1:-1:-1;;;28961:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28961:59:0;;;;;;;;;;;;;;;29031:6;:13;;-1:-1:-1;;29031:13:0;;;;;;;;42418:23:::1;::::0;::::1;29031:13:::0;42418:23:::1;:32;42410:76;;;::::0;;-1:-1:-1;;;42410:76:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;42563:13;::::0;42578:43:::1;::::0;;-1:-1:-1;;;42578:43:0;;42610:10:::1;42578:43;::::0;::::1;::::0;;;42497:16:::1;::::0;42516:106:::1;::::0;-1:-1:-1;;;;;42563:13:0;;::::1;::::0;;;42578:31:::1;::::0;:43;;;;;::::1;::::0;;;;;;;;42563:13;42578:43;::::1;;::::0;::::1;;;;::::0;::::1;42516:106;42675:10;42661:25;::::0;;;:13:::1;:25;::::0;;;;;42497:125;;-1:-1:-1;42661:39:0::1;::::0;42497:125;42661:29:::1;:39::i;:::-;42647:10;42633:25;::::0;;;:13:::1;:25;::::0;;;;:67;-1:-1:-1;29067:6:0;:14;;-1:-1:-1;;29067:14:0;;;42360:348::o;33044:441::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;33161:16:::1;::::0;::::1;;:24;;:16:::0;:24:::1;33153:74;;;;-1:-1:-1::0;;;33153:74:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33257:17:::0;;33303:15;;33293:25;::::1;33285:49;;;::::0;;-1:-1:-1;;;33285:49:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;33285:49:0;;;;;;;;;;;;;::::1;;33352:9;33347:131;33371:6;33367:1;:10;33347:131;;;33455:8;33464:1;33455:11;;;;;;;;;;;;;;33399:38;:53;33438:10;33449:1;33438:13;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;33399:53:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;33399:53:0;:67;33379:3:::1;;33347:131;;;;23082:1;33044:441:::0;;:::o;42948:1796::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;43050:25:::1;::::0;::::1;;:34;43042:65;;;::::0;;-1:-1:-1;;;43042:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;43042:65:0;;;;;;;;;;;;;::::1;;43126:27;::::0;::::1;;:35;;:27:::0;:35:::1;43118:70;;;::::0;;-1:-1:-1;;;43118:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;43118:70:0;;;;;;;;;;;;;::::1;;43221:16;::::0;43209:37:::1;::::0;;-1:-1:-1;;;43209:37:0;;;;43258:4:::1;::::0;-1:-1:-1;;;;;43221:16:0::1;::::0;43209:35:::1;::::0;:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;43221:16:::1;::::0;43209:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;43209:37:0;-1:-1:-1;;;;;43209:54:0::1;;43201:101;;;;-1:-1:-1::0;;;43201:101:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43333:10;::::0;43321:31:::1;::::0;;-1:-1:-1;;;43321:31:0;;;;43364:4:::1;::::0;-1:-1:-1;;;;;43333:10:0::1;::::0;43321:29:::1;::::0;:31:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;43333:10:::1;::::0;43321:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;43321:31:0;-1:-1:-1;;;;;43321:48:0::1;;43313:89;;;::::0;;-1:-1:-1;;;43313:89:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;43439:37:0;::::1;43431:46;;;::::0;::::1;;43502:16;::::0;43490:72:::1;::::0;;-1:-1:-1;;;43490:72:0;;-1:-1:-1;;;;;43490:72:0;;::::1;;::::0;::::1;::::0;;;43502:16;;;::::1;::::0;43490:47:::1;::::0;:72;;;;;43502:16:::1;::::0;43490:72;;;;;;;43502:16;;43490:72;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;43585:10:0::1;::::0;43573:66:::1;::::0;;-1:-1:-1;;;43573:66:0;;-1:-1:-1;;;;;43573:66:0;;::::1;;::::0;::::1;::::0;;;43585:10;;;::::1;::::0;-1:-1:-1;43573:41:0::1;::::0;-1:-1:-1;43573:66:0;;;;;43585:10:::1;::::0;43573:66;;;;;;;43585:10;;43573:66;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;43680:13;;;;;;;;;-1:-1:-1::0;;;;;43680:13:0::1;-1:-1:-1::0;;;;;43673:33:0::1;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;43673:35:0;43650:20:::1;:58:::0;43775:13:::1;::::0;43828:46:::1;::::0;;-1:-1:-1;;;43828:46:0;;43868:4:::1;43828:46;::::0;::::1;::::0;;;-1:-1:-1;;;;;43775:13:0;;::::1;::::0;43768:44:::1;::::0;43775:13;;;;43828:31:::1;::::0;:46;;;;;43673:35:::1;::::0;43828:46;;;;;;;43775:13;43828:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;43828:46:0;43768:107:::1;::::0;;-1:-1:-1;;;;;;43768:107:0::1;::::0;;;;;;-1:-1:-1;;;;;43768:107:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;43828:46:::1;::::0;43768:107;;;;;;;-1:-1:-1;43768:107:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;43990:13:0::1;::::0;43943:61:::1;::::0;;-1:-1:-1;;;43943:61:0;;-1:-1:-1;;;;;43990:13:0;;::::1;43943:61;::::0;::::1;::::0;;;43911:21:::1;::::0;43943:46;::::1;::::0;::::1;::::0;:61;;;;;43888:20:::1;::::0;43943:61;;;;;;;43888:20;43943:46;:61;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;44015:14;44032:39;44058:12;44032:21;:25;;:39;;;;:::i;:::-;44015:56;;44099:9;44090:6;:18;44082:59;;;::::0;;-1:-1:-1;;;44082:59:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;44162:27;::::0;-1:-1:-1;;;;;44162:27:0::1;:41:::0;;::::1;::::0;:87:::1;;-1:-1:-1::0;44220:15:0::1;::::0;-1:-1:-1;;;;;44220:15:0::1;:29:::0;::::1;44162:87;44154:119;;;::::0;;-1:-1:-1;;;44154:119:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;44154:119:0;;;;;;;;;;;;;::::1;;44298:16;::::0;44324:10:::1;::::0;44336:15:::1;::::0;44286:66:::1;::::0;;-1:-1:-1;;;44286:66:0;;44298:16:::1;44324:10:::0;;::::1;-1:-1:-1::0;;;;;44324:10:0;;::::1;44286:66;::::0;::::1;::::0;44336:15;;::::1;44286:66:::0;;;;;44298:16;::::1;::::0;44286:37:::1;::::0;:66;;;;;44298:16:::1;::::0;44286:66;;;;;;;;44298:16;;44286:66;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;44403:30;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;44363:27:0::1;:72:::0;;-1:-1:-1;;;;;;44363:72:0::1;-1:-1:-1::0;;;;;44363:72:0;;::::1;;::::0;;;;44452:10:::1;::::0;44446:71:::1;::::0;;-1:-1:-1;;;44446:71:0;;44489:27;;::::1;44446:71;::::0;::::1;::::0;;44452:10;::::1;::::0;44446:42:::1;::::0;:71;;;;;-1:-1:-1;;44446:71:0;;;;;;;;-1:-1:-1;44452:10:0;44446:71;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;44554:84;44633:4;44554:56;44583:26;;44554:6;:28;;:56;;;;:::i;:84::-;44528:23;:110:::0;44651:36:::1;:34;:36::i;:::-;-1:-1:-1::0;;44700:25:0::1;:32:::0;;-1:-1:-1;;44700:32:0::1;44728:4;44700:32;::::0;;-1:-1:-1;42948:1796:0:o;28506:37::-;;;;;;:::o;27883:35::-;;;;;;;;;:::o;27079:30::-;;;-1:-1:-1;;;;;27079:30:0;;:::o;26814:28::-;;;-1:-1:-1;;;;;26814:28:0;;:::o;27152:27::-;;;;:::o;28329:37::-;;;;:::o;26788:19::-;;;;;;-1:-1:-1;;;;;26788:19:0;;:::o;23442:148::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;23533:6:::1;::::0;23512:40:::1;::::0;23549:1:::1;::::0;-1:-1:-1;;;;;23533:6:0::1;::::0;23512:40:::1;::::0;23549:1;;23512:40:::1;23563:6;:19:::0;;-1:-1:-1;;;;;;23563:19:0::1;::::0;;23442:148::o;31682:1282::-;31773:21;;31736;;-1:-1:-1;;;;;31773:21:0;31770:49;;-1:-1:-1;31818:1:0;31811:8;;31770:49;31833:16;;;;31830:38;;-1:-1:-1;31867:1:0;31860:8;;31830:38;31892:10;31882:21;;;;:9;:21;;;;;;;;:29;;:21;:29;31879:42;;;-1:-1:-1;31920:1:0;31913:8;;31879:42;31934:22;31959:33;31987:4;31959:27;:33::i;:::-;31934:58;;32003:21;32027:30;32052:4;32027:24;:30::i;:::-;32003:54;;32068:19;32090:28;32113:4;32090:22;:28::i;:::-;32068:50;-1:-1:-1;32134:19:0;;:41;;;;-1:-1:-1;32157:18:0;;32134:41;:61;;;;-1:-1:-1;32179:16:0;;32134:61;32131:74;;;32204:1;32197:8;;;;;;;32131:74;32218:16;32237:86;32297:25;;32237:55;32265:26;;32237:23;;:27;;:55;;;;:::i;:::-;:59;;:86::i;:::-;32218:105;-1:-1:-1;32334:26:0;32376:18;;32373:145;;32431:75;32491:14;32431:55;32462:23;;32431:26;;:30;;:55;;;;:::i;:::-;:59;;:75::i;:::-;32410:96;;32373:145;32533:17;;32530:167;;32587:96;32669:13;32587:77;32641:22;;32587:49;32610:25;;32587:18;:22;;:49;;;;:::i;:96::-;32566:117;;32530:167;32712:15;;32709:157;;32764:90;32842:11;32764:73;32816:20;;32764:47;32787:23;;32764:18;:22;;:47;;;;:::i;:90::-;32743:111;;32709:157;32894:62;32951:4;32894:52;32937:8;32894:38;32917:14;;32894:18;:22;;:38;;;;:::i;:62::-;32878:78;31682:1282;-1:-1:-1;;;;;;;31682:1282:0:o;28687:42::-;;;-1:-1:-1;;;;;28687:42:0;;:::o;27341:40::-;;;;;;;;;:::o;28077:36::-;;;-1:-1:-1;;;;;28077:36:0;;:::o;28781:35::-;;;;:::o;33618:427::-;33717:16;;33692:7;;33717:16;;33714:322;;;-1:-1:-1;;;;;33808:29:0;;;;;;:21;:29;;;;;;;;;33757:38;:46;;;;;;;:81;;:50;:81::i;:::-;33750:88;;;;33714:322;33921:13;;33907:48;;;-1:-1:-1;;;33907:48:0;;33883:18;33907:48;;;;;;-1:-1:-1;;;;;33907:48:0;;;;;;;;;33883:18;;33921:13;;;;;33907:37;;:48;;;;;;;;;;;33921:13;33907:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33907:48:0;-1:-1:-1;;;;;33977:29:0;;;;;;:21;33907:48;33977:29;33907:48;33977:29;;;33907:48;;-1:-1:-1;33977:45:0;;33907:48;33977:33;:45::i;:::-;33970:52;;;;;26727:28;;;;;;:::o;29119:2051::-;19031:12;;;;;;;;:31;;;19047:15;:13;:15::i;:::-;19031:47;;;-1:-1:-1;19067:11:0;;;;19066:12;19031:47;19023:106;;;;-1:-1:-1;;;19023:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19138:19;19161:12;;;;;;19160:13;19180:83;;;;19209:12;:19;;-1:-1:-1;;;;19209:19:0;;;;;19237:18;19224:4;19237:18;;;19180:83;29191:42:::1;29178:9;:55;29170:64;;;::::0;::::1;;29267:42;29253:10;:56;29245:65;;;::::0;::::1;;29323:35;:33;:35::i;:::-;29369:13;:58:::0;;-1:-1:-1;;;;;;29369:58:0;;::::1;29385:42;29369:58;::::0;;;29463:15:::1;29438:22;:40:::0;29536:15:::1;:60:::0;;;::::1;29554:42;29536:60;::::0;;29607:22:::1;:67:::0;;;::::1;29632:42;29607:67;::::0;;29706:13:::1;:58:::0;;;-1:-1:-1;;;;;;29706:58:0;;::::1;;::::0;;;29775:13:::1;:58:::0;;;::::1;29791:42;29775:58;::::0;;29862:10:::1;:55:::0;;;-1:-1:-1;;;;;;29862:55:0;;::::1;;::::0;;29928:10:::1;:55:::0;;;::::1;29941:42;29928:55;::::0;;29994:16:::1;:61:::0;;;::::1;30013:42;29994:61;::::0;;30066:13:::1;:58:::0;;;::::1;30082:42;30066:58;::::0;;30135:27:::1;:72:::0;;;::::1;30165:42;30135:72;::::0;;30228:18:::1;:63:::0;;;::::1;30249:42;30228:63;::::0;;30302:12:::1;:57:::0;;;::::1;30317:42;30302:57;::::0;;30370:15:::1;:60:::0;;;::::1;30388:42;30370:60;::::0;;30441:19:::1;:64:::0;;;::::1;30463:42;30441:64;::::0;;30516:12:::1;:57:::0;;;;::::1;::::0;;;::::1;::::0;;30584:21:::1;:66:::0;;;;::::1;30608:42;30584:66;::::0;;30690:45:::1;30729:5;30690:34;30718:5;30690:23;30698:7;29706:13;30690:20;:23::i;:45::-;30661:26;:74;;;;30780:20;30816:42;30780:79;;30884:7;-1:-1:-1::0;;;;;30884:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;30884:26:0;30870:4:::1;:41:::0;;-1:-1:-1;;;;;;30870:41:0::1;::::0;-1:-1:-1;;;;;30870:41:0;;::::1;;;::::0;;30957:24:::1;::::0;;-1:-1:-1;;;30957:24:0;;;;:22;;::::1;::::0;::::1;::::0;:24:::1;::::0;;::::1;::::0;30884:26:::1;::::0;30957:24;;;;;;;;:22;:24;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;30957:24:0;30922:14:::1;:60:::0;;-1:-1:-1;;;;;;30922:60:0::1;-1:-1:-1::0;;;;;30922:60:0;;::::1;;::::0;;31016:26:::1;::::0;;-1:-1:-1;;;31016:26:0;;;;:24;;::::1;::::0;::::1;::::0;:26:::1;::::0;;::::1;::::0;30957:24:::1;::::0;31016:26;;;;;;;;-1:-1:-1;31016:24:0;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;31016:26:0;30993:9:::1;:50:::0;;-1:-1:-1;;;;;;30993:50:0::1;-1:-1:-1::0;;;;;30993:50:0;;::::1;;::::0;;31070:25:::1;::::0;;-1:-1:-1;;;31070:25:0;;;;:23;;::::1;::::0;::::1;::::0;:25:::1;::::0;;::::1;::::0;31016:26:::1;::::0;31070:25;;;;;;;;:23;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;31070:25:0;31054:13:::1;:41:::0;;-1:-1:-1;;;;;31054:41:0;;::::1;-1:-1:-1::0;;;;;;31054:41:0;;::::1;;::::0;;31106:4:::1;:56:::0;;;;::::1;31119:42;31106:56;::::0;;-1:-1:-1;19281:57:0;;;;19325:5;19310:20;;-1:-1:-1;;19310:20:0;;;19281:57;29119:2051;:::o;26849:40::-;;;-1:-1:-1;;;;;26849:40:0;;:::o;22800:79::-;22865:6;;-1:-1:-1;;;;;22865:6:0;22800:79;:::o;27116:29::-;;;;:::o;28120:33::-;;;-1:-1:-1;;;;;28120:33:0;;:::o;27388:28::-;;;;;;-1:-1:-1;;;;;27388:28:0;;:::o;28197:30::-;;;-1:-1:-1;;;;;28197:30:0;;:::o;47069:139::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;47181:13:::1;::::0;47158:42:::1;::::0;;-1:-1:-1;;;47158:42:0;;-1:-1:-1;;;;;47181:13:0;;::::1;47158:42;::::0;::::1;::::0;;;;;;;;;:22;;::::1;::::0;::::1;::::0;:42;;;;;::::1;::::0;;;;;;;;;47181:13:::1;47158:22:::0;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;27837:39:::0;;;;;;:::o;44752:124::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;44832:36:::1;:34;:36::i;:::-;44752:124::o:0;41890:126::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;41971:37:::1;:35;:37::i;28160:30::-:0;;;-1:-1:-1;;;;;28160:30:0;;:::o;47658:345::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;47746:16:::1;47765:86;47825:25;;47765:55;47793:26;;47765:23;;:27;;:55;;;;:::i;:86::-;47746:105;;47886:8;47870:12;;:24;47862:63;;;::::0;;-1:-1:-1;;;47862:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;47944:16:0;::::1;47936:32;;;::::0;;-1:-1:-1;;;47936:32:0;;::::1;;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;;;47936:32:0;;;;;;;;;;;;;::::1;;47979:16;47987:2;47991:3;47979:7;:16::i;:::-;23082:1;47658:345:::0;;:::o;27529:37::-;;;;:::o;38757:363::-;38891:12;;38877:47;;;-1:-1:-1;;;38877:47:0;;38828:7;38877:47;;;;;;-1:-1:-1;;;;;38877:47:0;;;;;;;;;38828:7;;;;38891:12;;;;;;;;38877:36;;:47;;;;;;;;;;;38891:12;38877:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38877:47:0;38983:21;;38877:47;38968:59;;-1:-1:-1;;;38968:59:0;;-1:-1:-1;;;;;38968:59:0;;;;;;;;;38877:47;;-1:-1:-1;38939:26:0;;38983:21;;;;;38968:51;;:59;;;;;38877:47;;38968:59;;;;;;;38983:21;38968:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38968:59:0;-1:-1:-1;;;;;39049:23:0;;;;;;:15;38968:59;39049:23;;;;;38968:59;;-1:-1:-1;39049:63:0;;38968:59;;39049:39;;39077:10;39049:27;:39::i;:63::-;39042:70;38757:363;-1:-1:-1;;;;38757:363:0:o;26992:36::-;;;-1:-1:-1;;;;;26992:36:0;;:::o;39159:353::-;28969:6;;;;;;;:15;28961:59;;;;;-1:-1:-1;;;28961:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28961:59:0;;;;;;;;;;;;;;;29031:6;:13;;-1:-1:-1;;29031:13:0;;;;;;;;39219:23:::1;::::0;::::1;29031:13:::0;39219:23:::1;:32;39211:71;;;::::0;;-1:-1:-1;;;39211:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;39359:15;::::0;39376:45:::1;::::0;;-1:-1:-1;;;39376:45:0;;39410:10:::1;39376:45;::::0;::::1;::::0;;;39293:16:::1;::::0;39312:110:::1;::::0;-1:-1:-1;;;;;39359:15:0;;::::1;::::0;;;39376:33:::1;::::0;:45;;;;;::::1;::::0;;;;;;;;39359:15;39376:45;::::1;;::::0;::::1;;;;::::0;::::1;39312:110;39479:10;39463:27;::::0;;;:15:::1;:27;::::0;;;;;39293:129;;-1:-1:-1;39463:41:0::1;::::0;39293:129;39463:31:::1;:41::i;:::-;39449:10;39433:27;::::0;;;:15:::1;:27;::::0;;;;:71;-1:-1:-1;29067:6:0;:14;;-1:-1:-1;;29067:14:0;;;39159:353::o;26913:29::-;;;-1:-1:-1;;;;;26913:29:0;;:::o;26949:36::-;;;-1:-1:-1;;;;;26949:36:0;;:::o;31370:304::-;28969:6;;;;;;;:15;28961:59;;;;;-1:-1:-1;;;28961:59:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;28961:59:0;;;;;;;;;;;;;;;29031:6;:13;;-1:-1:-1;;29031:13:0;;;;;;;;31420:16:::1;:24;;29040:4:::0;31420:24:::1;31412:57;;;::::0;;-1:-1:-1;;;31412:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31412:57:0;;;;;;;;;;;;;::::1;;31512:1;31488:21;31498:10;31488:9;:21::i;:::-;:25;31480:54;;;::::0;;-1:-1:-1;;;31480:54:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31480:54:0;;;;;;;;;;;;;::::1;;31560:21;::::0;-1:-1:-1;;;;;31560:21:0::1;31553:38;31592:10;31604:21;31592:10:::0;31604:9:::1;:21::i;:::-;31553:73;;;;;;;;;;;;;-1:-1:-1::0;;;;;31553:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;31553:73:0;31545:82:::1;;;::::0;::::1;;31648:10;31638:21;::::0;;;:9:::1;:21;::::0;;;;:28;;-1:-1:-1;;31638:28:0::1;31662:4;31638:28;::::0;;29067:6;:14;;-1:-1:-1;;29067:14:0;;;31370:304::o;48011:231::-;48068:7;48088:16;48107:86;48167:25;;48107:55;48135:26;;48107:23;;:27;;:55;;;;:::i;:86::-;48222:12;;48211:23;;;-1:-1:-1;;48011:231:0;:::o;39520:195::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;39608:22:::1;::::0;:34:::1;::::0;39635:6:::1;39608:26;:34::i;:::-;39589:15;:53;;39581:85;;;::::0;;-1:-1:-1;;;39581:85:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;39581:85:0;;;;;;;;;;;;;::::1;;39677:23;:30:::0;;-1:-1:-1;;39677:30:0::1;;;::::0;;39520:195::o;28582:25::-;;;-1:-1:-1;;;;;28582:25:0;;:::o;34543:4137::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;34615:27:::1;::::0;::::1;;:35;;:27:::0;:35:::1;34607:70;;;::::0;;-1:-1:-1;;;34607:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;34607:70:0;;;;;;;;;;;;;::::1;;34696:28;::::0;::::1;::::0;::::1;;;:37;34688:76;;;::::0;;-1:-1:-1;;;34688:76:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;34846:13;::::0;34837:58:::1;::::0;;-1:-1:-1;;;34837:58:0;;34889:4:::1;34837:58;::::0;::::1;::::0;;;-1:-1:-1;;;;;34846:13:0;;::::1;::::0;34837:43:::1;::::0;:58;;;;;::::1;::::0;;;;;;;;;34846:13:::1;::::0;34837:58;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;34837:58:0;:63:::1;;34899:1;34837:63;34829:123;;;;-1:-1:-1::0;;;34829:123:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34980:13;::::0;34971:87:::1;::::0;;-1:-1:-1;;;34971:87:0;;35015:42:::1;34971:87;::::0;::::1;::::0;;;-1:-1:-1;;;;;34980:13:0;;::::1;::::0;34971:43:::1;::::0;:87;;;;;::::1;::::0;;;;;;;;;34980:13:::1;::::0;34971:87;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;34971:87:0;:92:::1;;35062:1;34971:92;34963:152;;;;-1:-1:-1::0;;;34963:152:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35143:13;::::0;35134:87:::1;::::0;;-1:-1:-1;;;35134:87:0;;35178:42:::1;35134:87;::::0;::::1;::::0;;;-1:-1:-1;;;;;35143:13:0;;::::1;::::0;35134:43:::1;::::0;:87;;;;;::::1;::::0;;;;;;;;;35143:13:::1;::::0;35134:87;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35134:87:0;:92:::1;;::::0;35126:152:::1;;;;-1:-1:-1::0;;;35126:152:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35306:13;::::0;35297:87:::1;::::0;;-1:-1:-1;;;35297:87:0;;35341:42:::1;35297:87;::::0;::::1;::::0;;;-1:-1:-1;;;;;35306:13:0;;::::1;::::0;35297:43:::1;::::0;:87;;;;;::::1;::::0;;;;;;;;;35306:13:::1;::::0;35297:87;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35297:87:0;:92:::1;;::::0;35289:152:::1;;;;-1:-1:-1::0;;;35289:152:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35469:13;::::0;35460:87:::1;::::0;;-1:-1:-1;;;35460:87:0;;35504:42:::1;35460:87;::::0;::::1;::::0;;;-1:-1:-1;;;;;35469:13:0;;::::1;::::0;35460:43:::1;::::0;:87;;;;;::::1;::::0;;;;;;;;;35469:13:::1;::::0;35460:87;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35460:87:0;:92:::1;;::::0;35452:152:::1;;;;-1:-1:-1::0;;;35452:152:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35650:4;35625:21;:29;;35617:54;;;::::0;;-1:-1:-1;;;35617:54:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;35617:54:0;;;;;;;;;;;;;::::1;;35712:13;::::0;35739:4:::1;::::0;:27:::1;::::0;;-1:-1:-1;;;35739:27:0;;;;-1:-1:-1;;;;;35712:13:0;;::::1;::::0;35739:4;;::::1;::::0;:12:::1;::::0;35759:4:::1;::::0;35739:27:::1;::::0;;::::1;::::0;35684:16:::1;::::0;35739:27;;;;;;;35759:4;35739;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;35777:19;35814:7;-1:-1:-1::0;;;;;35814:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35814:19:0;35900:4:::1;::::0;35875:13:::1;::::0;;-1:-1:-1;;;35875:13:0;;;;35814:19;;-1:-1:-1;35855:17:0::1;::::0;-1:-1:-1;;;;;35900:4:0;;::::1;::::0;35875:11;::::1;::::0;::::1;::::0;:13:::1;::::0;;::::1;::::0;35814:19:::1;::::0;35875:13;;;;;;;:11;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35875:13:0;35957:18:::1;::::0;;-1:-1:-1;;;35957:18:0;;;;-1:-1:-1;;;;;35875:30:0;;::::1;::::0;;;::::1;::::0;-1:-1:-1;35917:16:0::1;::::0;;;35957;::::1;::::0;::::1;::::0;:18:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:16;:18;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35957:18:0;;::::1;::::0;;::::1;::::0;35986:4:::1;::::0;35957:18;35986:34;;-1:-1:-1;;;35986:34:0;;-1:-1:-1;;;;;35986:34:0;;::::1;;::::0;::::1;::::0;36015:4:::1;35986:34:::0;;;;;;-1:-1:-1;;;;;35916:59:0;;::::1;::::0;-1:-1:-1;35916:59:0;;;::::1;::::0;-1:-1:-1;35986:4:0::1;::::0;:13:::1;::::0;:34;;;;;;;;;;:4:::1;::::0;:34;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;36031:18:0::1;::::0;-1:-1:-1;36062:304:0;::::1;;;36106:38;36119:4;36125:8;36135;36106:12;:38::i;:::-;36159:43;::::0;;-1:-1:-1;;;36159:43:0;;36169:1:::1;36159:43;::::0;::::1;::::0;;;;;;;;;36192:4:::1;36159:43:::0;;;;;;;;;;;;;;;;;36093:51;;-1:-1:-1;;;;;;36159:9:0;::::1;::::0;::::1;::::0;:43;;;;;36169:1;;36159:43;;;;;;36169:1;36159:9;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36062:304;;;36256:38;36269:4;36275:8;36285;36256:12;:38::i;:::-;36311:43;::::0;;-1:-1:-1;;;36311:43:0;;::::1;::::0;::::1;::::0;;;36333:1:::1;36311:43:::0;;;;;;36344:4:::1;36311:43:::0;;;;;;;;;;;;;;;;;36243:51;;-1:-1:-1;;;;;;36311:9:0;::::1;::::0;::::1;::::0;:43;;;;;36333:1;;36311:43;;;;;;36333:1;36311:9;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36062:304;36378:31;::::0;;-1:-1:-1;;;36378:31:0;;36403:4:::1;36378:31;::::0;::::1;::::0;;;-1:-1:-1;;;;;36378:16:0;::::1;::::0;::::1;::::0;:31;;;;;-1:-1:-1;;36378:31:0;;;;;;;-1:-1:-1;36378:16:0;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36420:7;-1:-1:-1::0;;;;;36420:23:0::1;;36444:3;36420:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36465:27;36495:7;-1:-1:-1::0;;;;;36495:17:0::1;;36513:7;-1:-1:-1::0;;;;;36513:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;36513:19:0;36495:38:::1;::::0;;-1:-1:-1;;;;;;36495:38:0::1;::::0;;;;;;-1:-1:-1;;;;;36495:38:0;;::::1;;::::0;::::1;::::0;;;;;;;36513:19:::1;::::0;36495:38;;;;;;;-1:-1:-1;36495:38:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;36495:38:0;36578:27:::1;::::0;;-1:-1:-1;;;36578:27:0;;;;36495:38;;-1:-1:-1;36544:24:0::1;::::0;-1:-1:-1;;;;;36578:25:0;::::1;::::0;::::1;::::0;:27:::1;::::0;;::::1;::::0;36495:38:::1;::::0;36578:27;;;;;;;36544:24;36578:25;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;36578:27:0;36571:49:::1;::::0;;-1:-1:-1;;;36571:49:0;;;;-1:-1:-1;;;;;36571:47:0;;::::1;::::0;::::1;::::0;:49:::1;::::0;;::::1;::::0;36578:27:::1;::::0;36571:49;;;;;;;;:47;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;36571:49:0;36631:23:::1;:42:::0;;;36571:49;-1:-1:-1;36686:13:0::1;36702:70;36752:19:::0;36702:45:::1;-1:-1:-1::0;;36703:21:0;;36571:49;36702:27:::1;:45::i;:70::-;36686:86;;36785:7;-1:-1:-1::0;;;;;36785:19:0::1;;36805:5;36785:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36838:16;36856::::0;36878:4:::1;-1:-1:-1::0;;;;;36878:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36837:59;-1:-1:-1::0;;;;;36837:59:0::1;;;-1:-1:-1::0;;;;;36837:59:0::1;;;36907:15;36933:27:::0;36963:7:::1;-1:-1:-1::0;;;;;36963:17:0::1;;36989:4;36963:32;;;;;;;;;;;;;-1:-1:-1::0;;;;;36963:32:0::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;36963:32:0;37056::::1;::::0;;-1:-1:-1;;;37056:32:0;;37082:4:::1;37056:32;::::0;::::1;::::0;;;36963;;-1:-1:-1;;;;;;37006:33:0;::::1;::::0;::::1;::::0;37048:4;;37006:33;;37056:17:::1;::::0;:32;;;;;36963::::1;::::0;37056;;;;;;;-1:-1:-1;37006:33:0;37056:32;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;37056:32:0;37006:83:::1;::::0;;-1:-1:-1;;;;;;37006:83:0::1;::::0;;;;;;-1:-1:-1;;;;;37006:83:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;37056:32:::1;::::0;37006:83;;;;;;;-1:-1:-1;37006:83:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;37100:22;37125:7;-1:-1:-1::0;;;;;37125:17:0::1;;37151:4;37125:32;;;;;;;;;;;;;-1:-1:-1::0;;;;;37125:32:0::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;37125:32:0;;-1:-1:-1;37170:602:0;::::1;;;37211:69;37240:19;37224:14;:35;37261:8;37271;37211:12;:69::i;:::-;37201:79;;37297:4;-1:-1:-1::0;;;;;37297:9:0::1;;37307:7;37316:1;37327:4;37297:40;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;37297:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;37379:4;-1:-1:-1::0;;;;;37379:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;37379:18:0;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;37352:45:0;;::::1;::::0;-1:-1:-1;37352:45:0::1;::::0;-1:-1:-1;37431:4:0::1;37420:15:::0;::::1;37412:48;;;::::0;;-1:-1:-1;;;37412:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;37412:48:0;;;;;;;;;;;;;::::1;;37170:602;;;37511:69;37540:19;37524:14;:35;37561:8;37571;37511:12;:69::i;:::-;37501:79;;37597:4;-1:-1:-1::0;;;;;37597:9:0::1;;37607:1;37610:7;37627:4;37597:40;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;37597:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;37679:4;-1:-1:-1::0;;;;;37679:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;37679:18:0;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;37652:45:0;;::::1;::::0;-1:-1:-1;37652:45:0::1;::::0;-1:-1:-1;37731:4:0::1;37720:15:::0;::::1;37712:48;;;::::0;;-1:-1:-1;;;37712:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;37712:48:0;;;;;;;;;;;;;::::1;;37784:26;37813:7;-1:-1:-1::0;;;;;37813:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;37813:21:0;;-1:-1:-1;37924:35:0::1;37955:3;37924:26;37813:21:::0;37947:2:::1;37924:22;:26::i;:35::-;37914:7;:45;37906:81;;;::::0;;-1:-1:-1;;;37906:81:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;38016:9;38006:7;:19;37998:54;;;::::0;;-1:-1:-1;;;37998:54:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;37998:54:0;;;;;;;;;;;;;::::1;;38104:85;38184:4;38104:57;38134:26;;38104:7;:29;;:57;;;;:::i;:85::-;38075:26;:114:::0;38232:13:::1;::::0;38204:17:::1;::::0;38232:13:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;38257:4:0::1;::::0;:33:::1;::::0;;-1:-1:-1;;;38257:33:0;;-1:-1:-1;;;;;38257:33:0;;::::1;;::::0;::::1;::::0;;;;;;;;;38204:42;;-1:-1:-1;38257:4:0;::::1;::::0;:13:::1;::::0;:33;;;;;::::1;::::0;;;;;;;;;:4:::1;::::0;:33;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;38377:41:0::1;::::0;;-1:-1:-1;;;38377:41:0;;;;38345:21:::1;::::0;-1:-1:-1;;;;;38377:39:0;::::1;::::0;::::1;::::0;:41:::1;::::0;;::::1;::::0;38322:20:::1;::::0;38377:41;;;;;;;;38322:20;38377:39;:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;38429:14;38446:39;38472:12;38446:21;:25;;:39;;;;:::i;:::-;38429:56;;38514:7;38504:6;:17;38496:45;;;::::0;;-1:-1:-1;;;38496:45:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;38496:45:0;;;;;;;;;;;;;::::1;;23082:1;;38567:7;-1:-1:-1::0;;;;;38567:26:0::1;;38602:4;38609:1;38567:44;;;;;;;;;;;;;-1:-1:-1::0;;;;;38567:44:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;38622:28:0::1;:35:::0;;-1:-1:-1;;38622:35:0::1;;;::::0;;-1:-1:-1;;;;;;;;;;;;;;;;;;34543:4137:0:o;47216:434::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;47308:16:::1;47327:86;47387:25;;47327:55;47355:26;;47327:23;;:27;;:55;;;;:::i;:86::-;47439:12;::::0;47308:105;;-1:-1:-1;47439:21:0::1;::::0;47456:3;47439:16:::1;:21::i;:::-;47424:12;:36:::0;;;47479:24;-1:-1:-1;47479:24:0::1;47471:50;;;::::0;;-1:-1:-1;;;47471:50:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;47471:50:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;47540:25:0;::::1;47532:41;;;::::0;;-1:-1:-1;;;47532:41:0;;::::1;;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;;;47532:41:0;;;;;;;;;;;;;::::1;;47584:25;47592:11;47605:3;47584:7;:25::i;:::-;47625:17;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;23082:1;47216:434:::0;;:::o;23745:244::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23834:22:0;::::1;23826:73;;;;-1:-1:-1::0;;;23826:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23936:6;::::0;23915:38:::1;::::0;-1:-1:-1;;;;;23915:38:0;;::::1;::::0;23936:6:::1;::::0;23915:38:::1;::::0;23936:6:::1;::::0;23915:38:::1;23964:6;:17:::0;;-1:-1:-1;;;;;;23964:17:0::1;-1:-1:-1::0;;;;;23964:17:0;;;::::1;::::0;;;::::1;::::0;;23745:244::o;28282:40::-;;;;:::o;31253:109::-;23022:12;:10;:12::i;:::-;23012:6;;-1:-1:-1;;;;;23012:6:0;;;:22;;;23004:67;;;;;-1:-1:-1;;;23004:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23004:67:0;;;;;;;;;;;;;;;31324:21:::1;:30:::0;;-1:-1:-1;;;;;;31324:30:0::1;-1:-1:-1::0;;;;;31324:30:0;;;::::1;::::0;;;::::1;::::0;;31253:109::o;28652:28::-;;;-1:-1:-1;;;;;28652:28:0;;:::o;27959:36::-;;;-1:-1:-1;;;;;27959:36:0;;:::o;28736:38::-;;;;:::o;21068:106::-;21156:10;21068:106;:::o;13416:181::-;13474:7;13506:5;;;13530:6;;;;13522:46;;;;;-1:-1:-1;;;13522:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:1;-1:-1:-1;13416:181:0;;;;;:::o;14746:471::-;14804:7;15049:6;15045:47;;-1:-1:-1;15079:1:0;15072:8;;15045:47;15116:5;;;15120:1;15116;:5;:1;15140:5;;;;;:10;15132:56;;;;-1:-1:-1;;;15132:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15685:132;15743:7;15770:39;15774:1;15777;15770:39;;;;;;;;;;;;;;;;;:3;:39::i;13872:136::-;13930:7;13957:43;13961:1;13964;13957:43;;;;;;;;;;;;;;;;;:3;:43::i;42024:259::-;42103:18;;42141:13;;42091:64;;;-1:-1:-1;;;42091:64:0;;-1:-1:-1;;;;;42141:13:0;;;42091:64;;;;;;42103:18;;;;;42091:49;;:64;;;;;42103:18;;42091:64;;;;;;;42103:18;;42091:64;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;42217:13:0;;42186:18;;42174:39;;;-1:-1:-1;;;42174:39:0;;;;-1:-1:-1;;;;;42217:13:0;;;;-1:-1:-1;42186:18:0;;;;;-1:-1:-1;42174:37:0;;:39;;;;;;;;;;;;;;42217:13;42186:18;42174:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42174:39:0;-1:-1:-1;;;;;42174:56:0;;42166:109;;;;-1:-1:-1;;;42166:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45928:371;46040:16;46069:17;46096:5;-1:-1:-1;;;;;46089:23:0;;46121:4;46089:38;;;;;;;;;;;;;-1:-1:-1;;;;;46089:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46089:38:0;46146:69;;;-1:-1:-1;;;46146:69:0;;46173:10;46146:69;;;;46193:4;46146:69;;;;;;;;;;;;46089:38;;-1:-1:-1;;;;;;46146:26:0;;;;;:69;;;;;46089:38;;46146:69;;;;;;;;-1:-1:-1;46146:26:0;:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46146:69:0;46138:78;;;;;;46238:53;46281:9;46245:5;-1:-1:-1;;;;;46238:23:0;;46270:4;46238:38;;;;;;;;;;;;;-1:-1:-1;;;;;46238:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46238:38:0;;:42;:53::i;44884:430::-;44962:10;;44992:13;;44950:56;;;-1:-1:-1;;;44950:56:0;;-1:-1:-1;;;;;44992:13:0;;;44950:56;;;;;;44962:10;;;;;44950:41;;:56;;;;;44962:10;;44950:56;;;;;;;44962:10;;44950:56;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;45060:13:0;;45037:10;;45025:31;;;-1:-1:-1;;;45025:31:0;;;;-1:-1:-1;;;;;45060:13:0;;;;-1:-1:-1;45037:10:0;;;;;-1:-1:-1;45025:29:0;;:31;;;;;;;;;;;;;;45060:13;45037:10;45025:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45025:31:0;-1:-1:-1;;;;;45025:48:0;;45017:88;;;;;-1:-1:-1;;;45017:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;45146:16;;45182:13;;45134:62;;;-1:-1:-1;;;45134:62:0;;-1:-1:-1;;;;;45182:13:0;;;45134:62;;;;;;45146:16;;;;;45134:47;;:62;;;;;45146:16;;45134:62;;;;;;;45146:16;;45134:62;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;45256:13:0;;45227:16;;45215:37;;;-1:-1:-1;;;45215:37:0;;;;-1:-1:-1;;;;;45256:13:0;;;;-1:-1:-1;45227:16:0;;;;;-1:-1:-1;45215:35:0;;:37;;;;;;;;;;;;;;45256:13;45227:16;45215:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45215:37:0;-1:-1:-1;;;;;45215:54:0;;45207:99;;;;;-1:-1:-1;;;45207:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19432:508;19849:4;19895:17;19927:7;19432:508;:::o;22378:129::-;19031:12;;;;;;;;:31;;;19047:15;:13;:15::i;:::-;19031:47;;;-1:-1:-1;19067:11:0;;;;19066:12;19031:47;19023:106;;;;-1:-1:-1;;;19023:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19138:19;19161:12;;;;;;19160:13;19180:83;;;;19209:12;:19;;-1:-1:-1;;;;19209:19:0;;;;;19237:18;19224:4;19237:18;;;19180:83;22436:26:::1;:24;:26::i;:::-;22473;:24;:26::i;:::-;19285:14:::0;19281:57;;;19325:5;19310:20;;-1:-1:-1;;19310:20:0;;;22378:129;:::o;45402:145::-;45523:16;;-1:-1:-1;;;;;45523:11:0;;;:16;;;;;45535:3;;45523:16;;;;45535:3;45523:11;:16;;;;;;;;;;;;;;;;;;;46307:530;46410:17;46459:1;46448:8;:12;46440:68;;;;-1:-1:-1;;;46440:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46539:1;46527:9;:13;:31;;;;;46557:1;46544:10;:14;46527:31;46519:84;;;;-1:-1:-1;;;46519:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46614:20;46637:17;:8;46650:3;46637:12;:17::i;:::-;46614:40;-1:-1:-1;46665:14:0;46682:31;46614:40;46702:10;46682:19;:31::i;:::-;46665:48;-1:-1:-1;46724:16:0;46743:40;46767:15;46743:19;:9;46757:4;46743:13;:19::i;:40::-;46724:59;;46818:11;46806:9;:23;;;;;;;46307:530;-1:-1:-1;;;;;;;46307:530:0:o;16305:345::-;16391:7;16493:12;16486:5;16478:28;;;;-1:-1:-1;;;16478:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16517:9;16533:1;16529;:5;;;;;;;16305:345;-1:-1:-1;;;;;16305:345:0:o;14303:192::-;14389:7;14425:12;14417:6;;;;14409:29;;;;-1:-1:-1;;;14409:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14461:5:0;;;14303:192::o;20989:69::-;19031:12;;;;;;;;:31;;;19047:15;:13;:15::i;:::-;19031:47;;;-1:-1:-1;19067:11:0;;;;19066:12;19031:47;19023:106;;;;-1:-1:-1;;;19023:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19138:19;19161:12;;;;;;19160:13;19180:83;;;;19209:12;:19;;-1:-1:-1;;;;19209:19:0;;;;;19237:18;19224:4;19237:18;;;19285:14;19281:57;;;19325:5;19310:20;;-1:-1:-1;;19310:20:0;;;20989:69;:::o;22515:202::-;19031:12;;;;;;;;:31;;;19047:15;:13;:15::i;:::-;19031:47;;;-1:-1:-1;19067:11:0;;;;19066:12;19031:47;19023:106;;;;-1:-1:-1;;;19023:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19138:19;19161:12;;;;;;19160:13;19180:83;;;;19209:12;:19;;-1:-1:-1;;;;19209:19:0;;;;;19237:18;19224:4;19237:18;;;19180:83;22587:17:::1;22607:12;:10;:12::i;:::-;22630:6;:18:::0;;-1:-1:-1;;;;;;22630:18:0::1;-1:-1:-1::0;;;;;22630:18:0;::::1;::::0;;::::1;::::0;;;22664:43:::1;::::0;22630:18;;-1:-1:-1;22630:18:0;-1:-1:-1;;22664:43:0::1;::::0;-1:-1:-1;;22664:43:0::1;19271:1;19285:14:::0;19281:57;;;19325:5;19310:20;;-1:-1:-1;;19310:20:0;;;22515:202;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o
Swarm Source
ipfs://22cd2e2e08d06f674e0a80065db75505f95f7006ce61ce2014ad60114885b759
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.