Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16440419 | 526 days ago | IN | 0 ETH | 0.00075197 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
16327241 | 542 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
BullPair
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-03 */ // SPDX-License-Identifier: MIT 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; } pragma solidity =0.5.16; interface IBullFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function initialize(address) external; } interface IBullPair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function liquidityFee() external view returns (uint256); function treasuryFee() external view returns (uint256); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function __pair_initialize( address, address, address ) external; function setFees(uint256, uint256) external; } interface IBullERC20 { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; } // a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) library SafeMath { function add(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x + y) >= x, "ds-math-add-overflow"); } function sub(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x - y) <= x, "ds-math-sub-underflow"); } function mul(uint256 x, uint256 y) internal pure returns (uint256 z) { require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow"); } } contract BullERC20 is Initializable, IBullERC20 { using SafeMath for uint256; string public constant name = "BullionFX LPs"; string public constant symbol = "BullionFX-LP"; uint8 public constant decimals = 18; uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; bytes32 public DOMAIN_SEPARATOR; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; mapping(address => uint256) public nonces; event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function __erc20_initialize() internal initializer { uint256 chainId; assembly { chainId := chainid } DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ), keccak256(bytes(name)), keccak256(bytes("1")), chainId, address(this) ) ); } function _mint(address to, uint256 value) internal { totalSupply = totalSupply.add(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(address(0), to, value); } function _burn(address from, uint256 value) internal { balanceOf[from] = balanceOf[from].sub(value); totalSupply = totalSupply.sub(value); emit Transfer(from, address(0), value); } function _approve( address owner, address spender, uint256 value ) private { allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer( address from, address to, uint256 value ) private { balanceOf[from] = balanceOf[from].sub(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(from, to, value); } function approve(address spender, uint256 value) external returns (bool) { _approve(msg.sender, spender, value); return true; } function transfer(address to, uint256 value) external returns (bool) { _transfer(msg.sender, to, value); return true; } function transferFrom( address from, address to, uint256 value ) external returns (bool) { if (allowance[from][msg.sender] != uint256(-1)) { allowance[from][msg.sender] = allowance[from][msg.sender].sub( value ); } _transfer(from, to, value); return true; } function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external { require(deadline >= block.timestamp, "BullionFX: EXPIRED"); bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR, keccak256( abi.encode( PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline ) ) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require( recoveredAddress != address(0) && recoveredAddress == owner, "BullionFX: INVALID_SIGNATURE" ); _approve(owner, spender, value); } } // a library for performing various math operations library Math { function min(uint256 x, uint256 y) internal pure returns (uint256 z) { z = x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint256 y) internal pure returns (uint256 z) { if (y > 3) { z = y; uint256 x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } } // a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format)) // range: [0, 2**112 - 1] // resolution: 1 / 2**112 library UQ112x112 { uint224 constant Q112 = 2**112; // encode a uint112 as a UQ112x112 function encode(uint112 y) internal pure returns (uint224 z) { z = uint224(y) * Q112; // never overflows } // divide a UQ112x112 by a uint112, returning a UQ112x112 function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) { z = x / uint224(y); } } interface IERC20 { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); } interface IBullCallee { function bullCall( address sender, uint256 amount0, uint256 amount1, bytes calldata data ) external; } contract BullPair is Initializable, IBullPair, BullERC20 { using SafeMath for uint256; using UQ112x112 for uint224; uint256 public constant MINIMUM_LIQUIDITY = 10**3; bytes4 private constant SELECTOR = bytes4(keccak256(bytes("transfer(address,uint256)"))); address public factory; address public token0; address public token1; uint256 public liquidityFee; uint256 public treasuryFee; uint112 private reserve0; // uses single storage slot, accessible via getReserves uint112 private reserve1; // uses single storage slot, accessible via getReserves uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves uint256 public price0CumulativeLast; uint256 public price1CumulativeLast; uint256 public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event uint256 private unlocked = 1; modifier lock() { require(unlocked == 1, "BullionFX: LOCKED"); unlocked = 0; _; unlocked = 1; } function getReserves() public view returns ( uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast ) { _reserve0 = reserve0; _reserve1 = reserve1; _blockTimestampLast = blockTimestampLast; } function _safeTransfer( address token, address to, uint256 value ) private { (bool success, bytes memory data) = token.call( abi.encodeWithSelector(SELECTOR, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "BullionFX: TRANSFER_FAILED" ); } event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); // called once by the factory at time of deployment function __pair_initialize( address _factory, address _token0, address _token1 ) external initializer { __erc20_initialize(); factory = _factory; token0 = _token0; token1 = _token1; } // update reserves and, on the first call per block, price accumulators function _update( uint256 balance0, uint256 balance1, uint112 _reserve0, uint112 _reserve1 ) private { require( balance0 <= uint112(-1) && balance1 <= uint112(-1), "BullionFX: OVERFLOW" ); uint32 blockTimestamp = uint32(block.timestamp % 2**32); uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) { // * never overflows, and + overflow is desired price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed; price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed; } reserve0 = uint112(balance0); reserve1 = uint112(balance1); blockTimestampLast = blockTimestamp; emit Sync(reserve0, reserve1); } // if fee is on, mint liquidity equivalent to 18/30 of the growth in sqrt(k) function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) { address feeTo = IBullFactory(factory).feeTo(); feeOn = feeTo != address(0); uint256 _kLast = kLast; // gas savings if (feeOn) { if (_kLast != 0) { uint256 rootK = Math.sqrt(uint256(_reserve0).mul(_reserve1)); uint256 rootKLast = Math.sqrt(_kLast); if (rootK > rootKLast) { uint256 numerator = totalSupply .mul(rootK.sub(rootKLast)) .mul(treasuryFee); uint256 denominator = rootK.mul(liquidityFee).add( rootKLast.mul(treasuryFee) ); uint256 liquidity = numerator / denominator; if (liquidity > 0) _mint(feeTo, liquidity); } } } else if (_kLast != 0) { kLast = 0; } } // this low-level function should be called from a contract which performs important safety checks function mint(address to) external lock returns (uint256 liquidity) { (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings uint256 balance0 = IERC20(token0).balanceOf(address(this)); uint256 balance1 = IERC20(token1).balanceOf(address(this)); uint256 amount0 = balance0.sub(_reserve0); uint256 amount1 = balance1.sub(_reserve1); bool feeOn = _mintFee(_reserve0, _reserve1); uint256 _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee if (_totalSupply == 0) { liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY); _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens } else { liquidity = Math.min( amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1 ); } require(liquidity > 0, "BullionFX: INSUFFICIENT_LIQUIDITY_MINTED"); _mint(to, liquidity); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint256(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date emit Mint(msg.sender, amount0, amount1); } // this low-level function should be called from a contract which performs important safety checks function burn(address to) external lock returns (uint256 amount0, uint256 amount1) { (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings address _token0 = token0; // gas savings address _token1 = token1; // gas savings uint256 balance0 = IERC20(_token0).balanceOf(address(this)); uint256 balance1 = IERC20(_token1).balanceOf(address(this)); uint256 liquidity = balanceOf[address(this)]; bool feeOn = _mintFee(_reserve0, _reserve1); uint256 _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution require( amount0 > 0 && amount1 > 0, "BullionFX: INSUFFICIENT_LIQUIDITY_BURNED" ); _burn(address(this), liquidity); _safeTransfer(_token0, to, amount0); _safeTransfer(_token1, to, amount1); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint256(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date emit Burn(msg.sender, amount0, amount1, to); } // this low-level function should be called from a contract which performs important safety checks function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external lock { require( amount0Out > 0 || amount1Out > 0, "BullionFX: INSUFFICIENT_OUTPUT_AMOUNT" ); (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings require( amount0Out < _reserve0 && amount1Out < _reserve1, "BullionFX: INSUFFICIENT_LIQUIDITY" ); uint256 balance0; uint256 balance1; { // scope for _token{0,1}, avoids stack too deep errors address _token0 = token0; address _token1 = token1; require(to != _token0 && to != _token1, "BullionFX: INVALID_TO"); if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens if (data.length > 0) IBullCallee(to).bullCall( msg.sender, amount0Out, amount1Out, data ); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); } uint256 amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0; uint256 amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0; require( amount0In > 0 || amount1In > 0, "BullionFX: INSUFFICIENT_INPUT_AMOUNT" ); { // scope for reserve{0,1}Adjusted, avoids stack too deep errors uint256 balance0Adjusted = ( balance0.mul(10000).sub( amount0In.mul(liquidityFee.add(treasuryFee)) ) ); uint256 balance1Adjusted = ( balance1.mul(10000).sub( amount1In.mul(liquidityFee.add(treasuryFee)) ) ); require( balance0Adjusted.mul(balance1Adjusted) >= uint256(_reserve0).mul(_reserve1).mul(10000**2), "BullionFX: K" ); } _update(balance0, balance1, _reserve0, _reserve1); emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to); } // force balances to match reserves function skim(address to) external lock { address _token0 = token0; // gas savings address _token1 = token1; // gas savings _safeTransfer( _token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0) ); _safeTransfer( _token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1) ); } // force reserves to match balances function sync() external lock { _update( IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1 ); } function setFees(uint256 _liquidityFee, uint256 _treasuryFee) external { require(msg.sender == factory, "Permission denied"); require(_liquidityFee > 0, "Liquidity fee must bigger than 0"); liquidityFee = _liquidityFee; treasuryFee = _treasuryFee; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"__pair_initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"}],"name":"setFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600160415534801561001557600080fd5b50614005806100256000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063ba9a7a56116100a2578063d21220a711610071578063d21220a714610989578063d505accf146109d3578063dd62ed3e14610a6c578063fff6cae914610ae4576101da565b8063ba9a7a56146108bf578063bc25cf77146108dd578063c45a015514610921578063cc32d1761461096b576101da565b806389afcb44116100de57806389afcb441461075957806395d89b41146107b857806398118cb41461083b578063a9059cbb14610859576101da565b806370a082311461068b5780637464fc3d146106e35780637ecebe0014610701576101da565b806323b872dd1161017c5780635909c0d51161014b5780635909c0d5146105735780635a3d54931461059157806369a59b75146105af5780636a62784214610633576101da565b806323b872dd1461048d57806330adf81f14610513578063313ce567146105315780633644e51514610555576101da565b8063095ea7b3116101b8578063095ea7b3146103875780630b78f9c0146103ed5780630dfe16811461042557806318160ddd1461046f576101da565b8063022c0d9f146101df57806306fdde031461028c5780630902f1ac1461030f575b600080fd5b61028a600480360360808110156101f557600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561024657600080fd5b82018360208201111561025857600080fd5b8035906020019184600183028401116401000000008311171561027a57600080fd5b9091929391929390505050610aee565b005b610294611306565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d45780820151818401526020810190506102b9565b50505050905090810190601f1680156103015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61031761133f565b60405180846dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018263ffffffff1663ffffffff168152602001935050505060405180910390f35b6103d36004803603604081101561039d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061139c565b604051808215151515815260200191505060405180910390f35b6104236004803603604081101561040357600080fd5b8101908080359060200190929190803590602001909291905050506113b3565b005b61042d6114fe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610477611524565b6040518082815260200191505060405180910390f35b6104f9600480360360608110156104a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061152a565b604051808215151515815260200191505060405180910390f35b61051b6116f5565b6040518082815260200191505060405180910390f35b61053961171c565b604051808260ff1660ff16815260200191505060405180910390f35b61055d611721565b6040518082815260200191505060405180910390f35b61057b611727565b6040518082815260200191505060405180910390f35b61059961172d565b6040518082815260200191505060405180910390f35b610631600480360360608110156105c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611733565b005b6106756004803603602081101561064957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611900565b6040518082815260200191505060405180910390f35b6106cd600480360360208110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db2565b6040518082815260200191505060405180910390f35b6106eb611dca565b6040518082815260200191505060405180910390f35b6107436004803603602081101561071757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dd0565b6040518082815260200191505060405180910390f35b61079b6004803603602081101561076f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611de8565b604051808381526020018281526020019250505060405180910390f35b6107c06123d6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108005780820151818401526020810190506107e5565b50505050905090810190601f16801561082d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61084361240f565b6040518082815260200191505060405180910390f35b6108a56004803603604081101561086f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612415565b604051808215151515815260200191505060405180910390f35b6108c761242c565b6040518082815260200191505060405180910390f35b61091f600480360360208110156108f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612432565b005b61092961270d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610973612733565b6040518082815260200191505060405180910390f35b610991612739565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a6a600480360360e08110156109e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061275f565b005b610ace60048036036040811015610a8257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612aa3565b6040518082815260200191505060405180910390f35b610aec612ac8565b005b600160415414610b66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f42756c6c696f6e46583a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b60006041819055506000851180610b7d5750600084115b610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ebb6025913960400191505060405180910390fd5b600080610bdd61133f565b5091509150816dffffffffffffffffffffffffffff1687108015610c105750806dffffffffffffffffffffffffffff1686105b610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613f886021913960400191505060405180910390fd5b6000806000603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015610d1e57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610d90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42756c6c696f6e46583a20494e56414c49445f544f000000000000000000000081525060200191505060405180910390fd5b60008b1115610da557610da4828a8d612d48565b5b60008a1115610dba57610db9818a8c612d48565b5b6000888890501115610ea2578873ffffffffffffffffffffffffffffffffffffffff16639bdb3b48338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f1f57600080fd5b505afa158015610f33573d6000803e3d6000fd5b505050506040513d6020811015610f4957600080fd5b810190808051906020019092919050505093508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fd957600080fd5b505afa158015610fed573d6000803e3d6000fd5b505050506040513d602081101561100357600080fd5b810190808051906020019092919050505092505050600089856dffffffffffffffffffffffffffff1603831161103a576000611050565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff1603831161107457600061108a565b89856dffffffffffffffffffffffffffff160383035b9050600082118061109b5750600081115b6110f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613e976024913960400191505060405180910390fd5b600061114161111e61110f603c54603b54612f9590919063ffffffff16565b8561301890919063ffffffff16565b6111336127108861301890919063ffffffff16565b6130ad90919063ffffffff16565b90506000611194611171611162603c54603b54612f9590919063ffffffff16565b8561301890919063ffffffff16565b6111866127108861301890919063ffffffff16565b6130ad90919063ffffffff16565b90506111df6305f5e1006111d1896dffffffffffffffffffffffffffff168b6dffffffffffffffffffffffffffff1661301890919063ffffffff16565b61301890919063ffffffff16565b6111f2828461301890919063ffffffff16565b1015611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f42756c6c696f6e46583a204b000000000000000000000000000000000000000081525060200191505060405180910390fd5b505061127484848888613130565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f6040518085815260200184815260200183815260200182815260200194505050505060405180910390a350505050505060016041819055505050505050565b6040518060400160405280600d81526020017f42756c6c696f6e4658204c50730000000000000000000000000000000000000081525081565b6000806000603d60009054906101000a90046dffffffffffffffffffffffffffff169250603d600e9054906101000a90046dffffffffffffffffffffffffffff169150603d601c9054906101000a900463ffffffff169050909192565b60006113a93384846134ae565b6001905092915050565b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b600082116114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4c697175696469747920666565206d75737420626967676572207468616e203081525060200191505060405180910390fd5b81603b8190555080603c819055505050565b603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60335481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff603560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116df5761165e82603560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ad90919063ffffffff16565b603560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6116ea848484613599565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60365481565b603e5481565b603f5481565b600060019054906101000a900460ff1680611752575061175161372d565b5b8061176957506000809054906101000a900460ff16155b6117be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f32602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561180e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611816613744565b83603860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082603960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081603a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156118fa5760008060016101000a81548160ff0219169083151502179055505b50505050565b600060016041541461197a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f42756c6c696f6e46583a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b600060418190555060008061198d61133f565b50915091506000603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a3357600080fd5b505afa158015611a47573d6000803e3d6000fd5b505050506040513d6020811015611a5d57600080fd5b810190808051906020019092919050505090506000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d6020811015611b3b57600080fd5b810190808051906020019092919050505090506000611b73856dffffffffffffffffffffffffffff16846130ad90919063ffffffff16565b90506000611b9a856dffffffffffffffffffffffffffff16846130ad90919063ffffffff16565b90506000611ba88787613952565b9050600060335490506000811415611bfd57611be96103e8611bdb611bd6868861301890919063ffffffff16565b613b5c565b6130ad90919063ffffffff16565b9850611bf860006103e8613bbe565b611c60565b611c5d886dffffffffffffffffffffffffffff16611c24838761301890919063ffffffff16565b81611c2b57fe5b04886dffffffffffffffffffffffffffff16611c50848761301890919063ffffffff16565b81611c5757fe5b04613cd8565b98505b60008911611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f606028913960400191505060405180910390fd5b611cc38a8a613bbe565b611ccf86868a8a613130565b8115611d4757611d40603d600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16603d60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1661301890919063ffffffff16565b6040819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001604181905550919050565b60346020528060005260406000206000915090505481565b60405481565b60376020528060005260406000206000915090505481565b600080600160415414611e63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f42756c6c696f6e46583a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000604181905550600080611e7661133f565b50915091506000603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f4857600080fd5b505afa158015611f5c573d6000803e3d6000fd5b505050506040513d6020811015611f7257600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561200457600080fd5b505afa158015612018573d6000803e3d6000fd5b505050506040513d602081101561202e57600080fd5b810190808051906020019092919050505090506000603460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006120918888613952565b905060006033549050806120ae868561301890919063ffffffff16565b816120b557fe5b049a50806120cc858561301890919063ffffffff16565b816120d357fe5b04995060008b1180156120e6575060008a115b61213b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613fa96028913960400191505060405180910390fd5b6121453084613cf1565b612150878d8d612d48565b61215b868d8c612d48565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156121d857600080fd5b505afa1580156121ec573d6000803e3d6000fd5b505050506040513d602081101561220257600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561229257600080fd5b505afa1580156122a6573d6000803e3d6000fd5b505050506040513d60208110156122bc57600080fd5b810190808051906020019092919050505093506122db85858b8b613130565b81156123535761234c603d600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16603d60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1661301890919063ffffffff16565b6040819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001604181905550915091565b6040518060400160405280600c81526020017f42756c6c696f6e46582d4c50000000000000000000000000000000000000000081525081565b603b5481565b6000612422338484613599565b6001905092915050565b6103e881565b6001604154146124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f42756c6c696f6e46583a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b60006041819055506000603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061260082846125fb603d60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156125b257600080fd5b505afa1580156125c6573d6000803e3d6000fd5b505050506040513d60208110156125dc57600080fd5b81019080805190602001909291905050506130ad90919063ffffffff16565b612d48565b61270081846126fb603d600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156126b257600080fd5b505afa1580156126c6573d6000803e3d6000fd5b505050506040513d60208110156126dc57600080fd5b81019080805190602001909291905050506130ad90919063ffffffff16565b612d48565b5050600160418190555050565b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603c5481565b603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b428410156127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f42756c6c696f6e46583a2045585049524544000000000000000000000000000081525060200191505060405180910390fd5b60006036547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989603760008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156129a7573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612a1b57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612a8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f42756c6c696f6e46583a20494e56414c49445f5349474e41545552450000000081525060200191505060405180910390fd5b612a988989896134ae565b505050505050505050565b6035602052816000526040600020602052806000526040600020600091509150505481565b600160415414612b40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f42756c6c696f6e46583a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000604181905550612d3e603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612bea57600080fd5b505afa158015612bfe573d6000803e3d6000fd5b505050506040513d6020811015612c1457600080fd5b8101908080519060200190929190505050603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612cc457600080fd5b505afa158015612cd8573d6000803e3d6000fd5b505050506040513d6020811015612cee57600080fd5b8101908080519060200190929190505050603d60009054906101000a90046dffffffffffffffffffffffffffff16603d600e9054906101000a90046dffffffffffffffffffffffffffff16613130565b6001604181905550565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612e755780518252602082019150602081019050602083039250612e52565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612ed7576040519150601f19603f3d011682016040523d82523d6000602084013e612edc565b606091505b5091509150818015612f1c5750600081511480612f1b5750808060200190516020811015612f0957600080fd5b81019080805190602001909291905050505b5b612f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f42756c6c696f6e46583a205452414e534645525f4641494c454400000000000081525060200191505060405180910390fd5b5050505050565b6000828284019150811015613012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b600080821480613035575082828385029250828161303257fe5b04145b6130a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b600082828403915081111561312a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff1684111580156131a057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b613212576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f42756c6c696f6e46583a204f564552464c4f570000000000000000000000000081525060200191505060405180910390fd5b6000640100000000428161322257fe5b0690506000603d601c9054906101000a900463ffffffff168203905060008163ffffffff1611801561326557506000846dffffffffffffffffffffffffffff1614155b801561328257506000836dffffffffffffffffffffffffffff1614155b15613364578063ffffffff166132c78561329b86613e0b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613e3690919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602603e600082825401925050819055508063ffffffff166133358461330987613e0b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613e3690919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602603f600082825401925050819055505b85603d60006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555084603d600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555081603d601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1603d60009054906101000a90046dffffffffffffffffffffffffffff16603d600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b80603560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6135eb81603460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ad90919063ffffffff16565b603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061368081603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f9590919063ffffffff16565b603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000803090506000813b9050600081149250505090565b600060019054906101000a900460ff1680613763575061376261372d565b5b8061377a57506000809054906101000a900460ff16155b6137cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f32602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561381f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b60004690506040518080613ee060529139605201905060405180910390206040518060400160405280600d81526020017f42756c6c696f6e4658204c507300000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001955050505050506040516020818303038152906040528051906020012060368190555050801561394f5760008060016101000a81548160ff0219169083151502179055505b50565b600080603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156139bd57600080fd5b505afa1580156139d1573d6000803e3d6000fd5b505050506040513d60208110156139e757600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614159150600060405490508215613b425760008114613b3d576000613a7f613a7a866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff1661301890919063ffffffff16565b613b5c565b90506000613a8c83613b5c565b905080821115613b3a576000613ad3603c54613ac5613ab485876130ad90919063ffffffff16565b60335461301890919063ffffffff16565b61301890919063ffffffff16565b90506000613b12613aef603c548561301890919063ffffffff16565b613b04603b548761301890919063ffffffff16565b612f9590919063ffffffff16565b90506000818381613b1f57fe5b0490506000811115613b3657613b358782613bbe565b5b5050505b50505b613b54565b60008114613b535760006040819055505b5b505092915050565b60006003821115613bab578190506000600160028481613b7857fe5b040190505b81811015613ba557809150600281828581613b9457fe5b040181613b9d57fe5b049050613b7d565b50613bb9565b60008214613bb857600190505b5b919050565b613bd381603354612f9590919063ffffffff16565b603381905550613c2b81603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f9590919063ffffffff16565b603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000818310613ce75781613ce9565b825b905092915050565b613d4381603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ad90919063ffffffff16565b603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d9b816033546130ad90919063ffffffff16565b603381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681613e8d57fe5b0490509291505056fe42756c6c696f6e46583a20494e53554646494349454e545f494e5055545f414d4f554e5442756c6c696f6e46583a20494e53554646494349454e545f4f55545055545f414d4f554e54454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656442756c6c696f6e46583a20494e53554646494349454e545f4c49515549444954595f4d494e54454442756c6c696f6e46583a20494e53554646494349454e545f4c495155494449545942756c6c696f6e46583a20494e53554646494349454e545f4c49515549444954595f4255524e4544a265627a7a7231582088fae095a36fdc0854a4b537f4eb6487f3879d503b70afcefd81f58f5262e63a64736f6c63430005100032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063ba9a7a56116100a2578063d21220a711610071578063d21220a714610989578063d505accf146109d3578063dd62ed3e14610a6c578063fff6cae914610ae4576101da565b8063ba9a7a56146108bf578063bc25cf77146108dd578063c45a015514610921578063cc32d1761461096b576101da565b806389afcb44116100de57806389afcb441461075957806395d89b41146107b857806398118cb41461083b578063a9059cbb14610859576101da565b806370a082311461068b5780637464fc3d146106e35780637ecebe0014610701576101da565b806323b872dd1161017c5780635909c0d51161014b5780635909c0d5146105735780635a3d54931461059157806369a59b75146105af5780636a62784214610633576101da565b806323b872dd1461048d57806330adf81f14610513578063313ce567146105315780633644e51514610555576101da565b8063095ea7b3116101b8578063095ea7b3146103875780630b78f9c0146103ed5780630dfe16811461042557806318160ddd1461046f576101da565b8063022c0d9f146101df57806306fdde031461028c5780630902f1ac1461030f575b600080fd5b61028a600480360360808110156101f557600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561024657600080fd5b82018360208201111561025857600080fd5b8035906020019184600183028401116401000000008311171561027a57600080fd5b9091929391929390505050610aee565b005b610294611306565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d45780820151818401526020810190506102b9565b50505050905090810190601f1680156103015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61031761133f565b60405180846dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020018263ffffffff1663ffffffff168152602001935050505060405180910390f35b6103d36004803603604081101561039d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061139c565b604051808215151515815260200191505060405180910390f35b6104236004803603604081101561040357600080fd5b8101908080359060200190929190803590602001909291905050506113b3565b005b61042d6114fe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610477611524565b6040518082815260200191505060405180910390f35b6104f9600480360360608110156104a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061152a565b604051808215151515815260200191505060405180910390f35b61051b6116f5565b6040518082815260200191505060405180910390f35b61053961171c565b604051808260ff1660ff16815260200191505060405180910390f35b61055d611721565b6040518082815260200191505060405180910390f35b61057b611727565b6040518082815260200191505060405180910390f35b61059961172d565b6040518082815260200191505060405180910390f35b610631600480360360608110156105c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611733565b005b6106756004803603602081101561064957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611900565b6040518082815260200191505060405180910390f35b6106cd600480360360208110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db2565b6040518082815260200191505060405180910390f35b6106eb611dca565b6040518082815260200191505060405180910390f35b6107436004803603602081101561071757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dd0565b6040518082815260200191505060405180910390f35b61079b6004803603602081101561076f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611de8565b604051808381526020018281526020019250505060405180910390f35b6107c06123d6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108005780820151818401526020810190506107e5565b50505050905090810190601f16801561082d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61084361240f565b6040518082815260200191505060405180910390f35b6108a56004803603604081101561086f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612415565b604051808215151515815260200191505060405180910390f35b6108c761242c565b6040518082815260200191505060405180910390f35b61091f600480360360208110156108f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612432565b005b61092961270d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610973612733565b6040518082815260200191505060405180910390f35b610991612739565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a6a600480360360e08110156109e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061275f565b005b610ace60048036036040811015610a8257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612aa3565b6040518082815260200191505060405180910390f35b610aec612ac8565b005b600160415414610b66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f42756c6c696f6e46583a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b60006041819055506000851180610b7d5750600084115b610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ebb6025913960400191505060405180910390fd5b600080610bdd61133f565b5091509150816dffffffffffffffffffffffffffff1687108015610c105750806dffffffffffffffffffffffffffff1686105b610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613f886021913960400191505060405180910390fd5b6000806000603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015610d1e57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610d90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42756c6c696f6e46583a20494e56414c49445f544f000000000000000000000081525060200191505060405180910390fd5b60008b1115610da557610da4828a8d612d48565b5b60008a1115610dba57610db9818a8c612d48565b5b6000888890501115610ea2578873ffffffffffffffffffffffffffffffffffffffff16639bdb3b48338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f1f57600080fd5b505afa158015610f33573d6000803e3d6000fd5b505050506040513d6020811015610f4957600080fd5b810190808051906020019092919050505093508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fd957600080fd5b505afa158015610fed573d6000803e3d6000fd5b505050506040513d602081101561100357600080fd5b810190808051906020019092919050505092505050600089856dffffffffffffffffffffffffffff1603831161103a576000611050565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff1603831161107457600061108a565b89856dffffffffffffffffffffffffffff160383035b9050600082118061109b5750600081115b6110f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613e976024913960400191505060405180910390fd5b600061114161111e61110f603c54603b54612f9590919063ffffffff16565b8561301890919063ffffffff16565b6111336127108861301890919063ffffffff16565b6130ad90919063ffffffff16565b90506000611194611171611162603c54603b54612f9590919063ffffffff16565b8561301890919063ffffffff16565b6111866127108861301890919063ffffffff16565b6130ad90919063ffffffff16565b90506111df6305f5e1006111d1896dffffffffffffffffffffffffffff168b6dffffffffffffffffffffffffffff1661301890919063ffffffff16565b61301890919063ffffffff16565b6111f2828461301890919063ffffffff16565b1015611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f42756c6c696f6e46583a204b000000000000000000000000000000000000000081525060200191505060405180910390fd5b505061127484848888613130565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f6040518085815260200184815260200183815260200182815260200194505050505060405180910390a350505050505060016041819055505050505050565b6040518060400160405280600d81526020017f42756c6c696f6e4658204c50730000000000000000000000000000000000000081525081565b6000806000603d60009054906101000a90046dffffffffffffffffffffffffffff169250603d600e9054906101000a90046dffffffffffffffffffffffffffff169150603d601c9054906101000a900463ffffffff169050909192565b60006113a93384846134ae565b6001905092915050565b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b600082116114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4c697175696469747920666565206d75737420626967676572207468616e203081525060200191505060405180910390fd5b81603b8190555080603c819055505050565b603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60335481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff603560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116df5761165e82603560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ad90919063ffffffff16565b603560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6116ea848484613599565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60365481565b603e5481565b603f5481565b600060019054906101000a900460ff1680611752575061175161372d565b5b8061176957506000809054906101000a900460ff16155b6117be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f32602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561180e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611816613744565b83603860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082603960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081603a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156118fa5760008060016101000a81548160ff0219169083151502179055505b50505050565b600060016041541461197a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f42756c6c696f6e46583a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b600060418190555060008061198d61133f565b50915091506000603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a3357600080fd5b505afa158015611a47573d6000803e3d6000fd5b505050506040513d6020811015611a5d57600080fd5b810190808051906020019092919050505090506000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d6020811015611b3b57600080fd5b810190808051906020019092919050505090506000611b73856dffffffffffffffffffffffffffff16846130ad90919063ffffffff16565b90506000611b9a856dffffffffffffffffffffffffffff16846130ad90919063ffffffff16565b90506000611ba88787613952565b9050600060335490506000811415611bfd57611be96103e8611bdb611bd6868861301890919063ffffffff16565b613b5c565b6130ad90919063ffffffff16565b9850611bf860006103e8613bbe565b611c60565b611c5d886dffffffffffffffffffffffffffff16611c24838761301890919063ffffffff16565b81611c2b57fe5b04886dffffffffffffffffffffffffffff16611c50848761301890919063ffffffff16565b81611c5757fe5b04613cd8565b98505b60008911611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f606028913960400191505060405180910390fd5b611cc38a8a613bbe565b611ccf86868a8a613130565b8115611d4757611d40603d600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16603d60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1661301890919063ffffffff16565b6040819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001604181905550919050565b60346020528060005260406000206000915090505481565b60405481565b60376020528060005260406000206000915090505481565b600080600160415414611e63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f42756c6c696f6e46583a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000604181905550600080611e7661133f565b50915091506000603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f4857600080fd5b505afa158015611f5c573d6000803e3d6000fd5b505050506040513d6020811015611f7257600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561200457600080fd5b505afa158015612018573d6000803e3d6000fd5b505050506040513d602081101561202e57600080fd5b810190808051906020019092919050505090506000603460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006120918888613952565b905060006033549050806120ae868561301890919063ffffffff16565b816120b557fe5b049a50806120cc858561301890919063ffffffff16565b816120d357fe5b04995060008b1180156120e6575060008a115b61213b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613fa96028913960400191505060405180910390fd5b6121453084613cf1565b612150878d8d612d48565b61215b868d8c612d48565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156121d857600080fd5b505afa1580156121ec573d6000803e3d6000fd5b505050506040513d602081101561220257600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561229257600080fd5b505afa1580156122a6573d6000803e3d6000fd5b505050506040513d60208110156122bc57600080fd5b810190808051906020019092919050505093506122db85858b8b613130565b81156123535761234c603d600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16603d60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1661301890919063ffffffff16565b6040819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001604181905550915091565b6040518060400160405280600c81526020017f42756c6c696f6e46582d4c50000000000000000000000000000000000000000081525081565b603b5481565b6000612422338484613599565b6001905092915050565b6103e881565b6001604154146124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f42756c6c696f6e46583a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b60006041819055506000603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061260082846125fb603d60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156125b257600080fd5b505afa1580156125c6573d6000803e3d6000fd5b505050506040513d60208110156125dc57600080fd5b81019080805190602001909291905050506130ad90919063ffffffff16565b612d48565b61270081846126fb603d600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156126b257600080fd5b505afa1580156126c6573d6000803e3d6000fd5b505050506040513d60208110156126dc57600080fd5b81019080805190602001909291905050506130ad90919063ffffffff16565b612d48565b5050600160418190555050565b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603c5481565b603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b428410156127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f42756c6c696f6e46583a2045585049524544000000000000000000000000000081525060200191505060405180910390fd5b60006036547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989603760008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156129a7573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612a1b57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612a8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f42756c6c696f6e46583a20494e56414c49445f5349474e41545552450000000081525060200191505060405180910390fd5b612a988989896134ae565b505050505050505050565b6035602052816000526040600020602052806000526040600020600091509150505481565b600160415414612b40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f42756c6c696f6e46583a204c4f434b454400000000000000000000000000000081525060200191505060405180910390fd5b6000604181905550612d3e603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612bea57600080fd5b505afa158015612bfe573d6000803e3d6000fd5b505050506040513d6020811015612c1457600080fd5b8101908080519060200190929190505050603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612cc457600080fd5b505afa158015612cd8573d6000803e3d6000fd5b505050506040513d6020811015612cee57600080fd5b8101908080519060200190929190505050603d60009054906101000a90046dffffffffffffffffffffffffffff16603d600e9054906101000a90046dffffffffffffffffffffffffffff16613130565b6001604181905550565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612e755780518252602082019150602081019050602083039250612e52565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612ed7576040519150601f19603f3d011682016040523d82523d6000602084013e612edc565b606091505b5091509150818015612f1c5750600081511480612f1b5750808060200190516020811015612f0957600080fd5b81019080805190602001909291905050505b5b612f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f42756c6c696f6e46583a205452414e534645525f4641494c454400000000000081525060200191505060405180910390fd5b5050505050565b6000828284019150811015613012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b600080821480613035575082828385029250828161303257fe5b04145b6130a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b600082828403915081111561312a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff1684111580156131a057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b613212576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f42756c6c696f6e46583a204f564552464c4f570000000000000000000000000081525060200191505060405180910390fd5b6000640100000000428161322257fe5b0690506000603d601c9054906101000a900463ffffffff168203905060008163ffffffff1611801561326557506000846dffffffffffffffffffffffffffff1614155b801561328257506000836dffffffffffffffffffffffffffff1614155b15613364578063ffffffff166132c78561329b86613e0b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613e3690919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602603e600082825401925050819055508063ffffffff166133358461330987613e0b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613e3690919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602603f600082825401925050819055505b85603d60006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555084603d600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555081603d601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1603d60009054906101000a90046dffffffffffffffffffffffffffff16603d600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b80603560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6135eb81603460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ad90919063ffffffff16565b603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061368081603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f9590919063ffffffff16565b603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000803090506000813b9050600081149250505090565b600060019054906101000a900460ff1680613763575061376261372d565b5b8061377a57506000809054906101000a900460ff16155b6137cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f32602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561381f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b60004690506040518080613ee060529139605201905060405180910390206040518060400160405280600d81526020017f42756c6c696f6e4658204c507300000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001955050505050506040516020818303038152906040528051906020012060368190555050801561394f5760008060016101000a81548160ff0219169083151502179055505b50565b600080603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156139bd57600080fd5b505afa1580156139d1573d6000803e3d6000fd5b505050506040513d60208110156139e757600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614159150600060405490508215613b425760008114613b3d576000613a7f613a7a866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff1661301890919063ffffffff16565b613b5c565b90506000613a8c83613b5c565b905080821115613b3a576000613ad3603c54613ac5613ab485876130ad90919063ffffffff16565b60335461301890919063ffffffff16565b61301890919063ffffffff16565b90506000613b12613aef603c548561301890919063ffffffff16565b613b04603b548761301890919063ffffffff16565b612f9590919063ffffffff16565b90506000818381613b1f57fe5b0490506000811115613b3657613b358782613bbe565b5b5050505b50505b613b54565b60008114613b535760006040819055505b5b505092915050565b60006003821115613bab578190506000600160028481613b7857fe5b040190505b81811015613ba557809150600281828581613b9457fe5b040181613b9d57fe5b049050613b7d565b50613bb9565b60008214613bb857600190505b5b919050565b613bd381603354612f9590919063ffffffff16565b603381905550613c2b81603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f9590919063ffffffff16565b603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000818310613ce75781613ce9565b825b905092915050565b613d4381603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ad90919063ffffffff16565b603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d9b816033546130ad90919063ffffffff16565b603381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681613e8d57fe5b0490509291505056fe42756c6c696f6e46583a20494e53554646494349454e545f494e5055545f414d4f554e5442756c6c696f6e46583a20494e53554646494349454e545f4f55545055545f414d4f554e54454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656442756c6c696f6e46583a20494e53554646494349454e545f4c49515549444954595f4d494e54454442756c6c696f6e46583a20494e53554646494349454e545f4c495155494449545942756c6c696f6e46583a20494e53554646494349454e545f4c49515549444954595f4255524e4544a265627a7a7231582088fae095a36fdc0854a4b537f4eb6487f3879d503b70afcefd81f58f5262e63a64736f6c63430005100032
Deployed Bytecode Sourcemap
14381:11583:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14381:11583:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22330:2580;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;22330:2580:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;22330:2580:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22330:2580:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;22330:2580:0;;;;;;;;;;;;:::i;:::-;;8109:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8109:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15476:313;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10378:150;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10378:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25671:290;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25671:290:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14705:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8256:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10686:373;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10686:373:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8556:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8214:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8413:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15104:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15146;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16715:256;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16715:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19299:1312;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19299:1312:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8289:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8289:44:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15188:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8680:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8680:41:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20723:1495;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20723:1495:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8161:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8161:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14763:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10536:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10536:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14514:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24959:434;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24959:434:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14676:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14797:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14733:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11067:1000;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11067:1000:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8340:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8340:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25442:221;;;:::i;:::-;;22330:2580;15379:1;15367:8;;:13;15359:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15424:1;15413:8;:12;;;;22520:1;22507:10;:14;:32;;;;22538:1;22525:10;:14;22507:32;22485:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22616:17;22635;22658:13;:11;:13::i;:::-;22615:56;;;;;22732:9;22719:22;;:10;:22;:48;;;;;22758:9;22745:22;;:10;:22;22719:48;22697:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22841:16;22868;22978:15;22996:6;;;;;;;;;;;22978:24;;23017:15;23035:6;;;;;;;;;;;23017:24;;23070:7;23064:13;;:2;:13;;;;:30;;;;;23087:7;23081:13;;:2;:13;;;;23064:30;23056:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23152:1;23139:10;:14;23135:58;;;23155:38;23169:7;23178:2;23182:10;23155:13;:38::i;:::-;23135:58;23259:1;23246:10;:14;23242:58;;;23262:38;23276:7;23285:2;23289:10;23262:13;:38::i;:::-;23242:58;23367:1;23353:4;;:11;;:15;23349:207;;;23399:2;23387:24;;;23434:10;23467;23500;23533:4;;23387:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;23387:169:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23387:169:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23387:169:0;;;;23349:207;23589:7;23582:25;;;23616:4;23582:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23582:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23582:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23582:40:0;;;;;;;;;;;;;;;;23571:51;;23655:7;23648:25;;;23682:4;23648:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23648:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23648:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23648:40:0;;;;;;;;;;;;;;;;23637:51;;15436:1;;23710:17;23753:10;23741:9;:22;;;23730:8;:33;:101;;23830:1;23730:101;;;23803:10;23791:9;:22;;;23779:8;:35;23730:101;23710:121;;23842:17;23885:10;23873:9;:22;;;23862:8;:33;:101;;23962:1;23862:101;;;23935:10;23923:9;:22;;;23911:8;:35;23862:101;23842:121;;24008:1;23996:9;:13;:30;;;;24025:1;24013:9;:13;23996:30;23974:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24193:24;24239:109;24285:44;24299:29;24316:11;;24299:12;;:16;;:29;;;;:::i;:::-;24285:9;:13;;:44;;;;:::i;:::-;24239:19;24252:5;24239:8;:12;;:19;;;;:::i;:::-;:23;;:109;;;;:::i;:::-;24193:170;;24378:24;24424:109;24470:44;24484:29;24501:11;;24484:12;;:16;;:29;;;;:::i;:::-;24470:9;:13;;:44;;;;:::i;:::-;24424:19;24437:5;24424:8;:12;;:19;;;;:::i;:::-;:23;;:109;;;;:::i;:::-;24378:170;;24652:47;24690:8;24652:33;24675:9;24652:33;;24660:9;24652:18;;:22;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;24589:38;24610:16;24589;:20;;:38;;;;:::i;:::-;:110;;24563:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15436:1;;24771:49;24779:8;24789;24799:9;24810;24771:7;:49::i;:::-;24899:2;24836:66;;24841:10;24836:66;;;24853:9;24864;24875:10;24887;24836:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15436:1;;;;;;15459;15448:8;:12;;;;22330:2580;;;;;:::o;8109:45::-;;;;;;;;;;;;;;;;;;;:::o;15476:313::-;15561:17;15593;15625:26;15691:8;;;;;;;;;;;15679:20;;15722:8;;;;;;;;;;;15710:20;;15763:18;;;;;;;;;;;15741:40;;15476:313;;;:::o;10378:150::-;10445:4;10462:36;10471:10;10483:7;10492:5;10462:8;:36::i;:::-;10516:4;10509:11;;10378:150;;;;:::o;25671:290::-;25775:7;;;;;;;;;;;25761:21;;:10;:21;;;25753:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25839:1;25823:13;:17;25815:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25903:13;25888:12;:28;;;;25941:12;25927:11;:26;;;;25671:290;;:::o;14705:21::-;;;;;;;;;;;;;:::o;8256:26::-;;;;:::o;10686:373::-;10801:4;10861:2;10822:9;:15;10832:4;10822:15;;;;;;;;;;;;;;;:27;10838:10;10822:27;;;;;;;;;;;;;;;;:42;10818:175;;10911:70;10961:5;10911:9;:15;10921:4;10911:15;;;;;;;;;;;;;;;:27;10927:10;10911:27;;;;;;;;;;;;;;;;:31;;:70;;;;:::i;:::-;10881:9;:15;10891:4;10881:15;;;;;;;;;;;;;;;:27;10897:10;10881:27;;;;;;;;;;;;;;;:100;;;;10818:175;11003:26;11013:4;11019:2;11023:5;11003:9;:26::i;:::-;11047:4;11040:11;;10686:373;;;;;:::o;8556:117::-;8607:66;8556:117;;;:::o;8214:35::-;8247:2;8214:35;:::o;8413:31::-;;;;:::o;15104:35::-;;;;:::o;15146:::-;;;;:::o;16715:256::-;1088:12;;;;;;;;;;;:31;;;;1104:15;:13;:15::i;:::-;1088:31;:47;;;;1124:11;;;;;;;;;;;1123:12;1088:47;1080:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1195:19;1218:12;;;;;;;;;;;1217:13;1195:35;;1241:14;1237:83;;;1281:4;1266:12;;:19;;;;;;;;;;;;;;;;;;1308:4;1294:11;;:18;;;;;;;;;;;;;;;;;;1237:83;16860:20;:18;:20::i;:::-;16901:8;16891:7;;:18;;;;;;;;;;;;;;;;;;16929:7;16920:6;;:16;;;;;;;;;;;;;;;;;;16956:7;16947:6;;:16;;;;;;;;;;;;;;;;;;1342:14;1338:57;;;1382:5;1367:12;;:20;;;;;;;;;;;;;;;;;;1338:57;16715:256;;;;:::o;19299:1312::-;19348:17;15379:1;15367:8;;:13;15359:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15424:1;15413:8;:12;;;;19379:17;19398;19421:13;:11;:13::i;:::-;19378:56;;;;;19460:16;19486:6;;;;;;;;;;;19479:24;;;19512:4;19479:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19479:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19479:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19479:39:0;;;;;;;;;;;;;;;;19460:58;;19529:16;19555:6;;;;;;;;;;;19548:24;;;19581:4;19548:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19548:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19548:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19548:39:0;;;;;;;;;;;;;;;;19529:58;;19598:15;19616:23;19629:9;19616:23;;:8;:12;;:23;;;;:::i;:::-;19598:41;;19650:15;19668:23;19681:9;19668:23;;:8;:12;;:23;;;;:::i;:::-;19650:41;;19704:10;19717:30;19726:9;19737;19717:8;:30::i;:::-;19704:43;;19758:20;19781:11;;19758:34;;19901:1;19885:12;:17;19881:402;;;19931:54;14558:5;19931:31;19941:20;19953:7;19941;:11;;:20;;;;:::i;:::-;19931:9;:31::i;:::-;:35;;:54;;;;:::i;:::-;19919:66;;20000:36;20014:1;14558:5;20000;:36::i;:::-;19881:402;;;20136:135;20191:9;20163:37;;:25;20175:12;20163:7;:11;;:25;;;;:::i;:::-;:37;;;;;;20247:9;20219:37;;:25;20231:12;20219:7;:11;;:25;;;;:::i;:::-;:37;;;;;;20136:8;:135::i;:::-;20124:147;;19881:402;20313:1;20301:9;:13;20293:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20370:20;20376:2;20380:9;20370:5;:20::i;:::-;20403:49;20411:8;20421;20431:9;20442;20403:7;:49::i;:::-;20467:5;20463:50;;;20482:31;20504:8;;;;;;;;;;;20482:31;;20490:8;;;;;;;;;;;20482:17;;:21;;:31;;;;:::i;:::-;20474:5;:39;;;;20463:50;20574:10;20569:34;;;20586:7;20595;20569:34;;;;;;;;;;;;;;;;;;;;;;;;15436:1;;;;;;;;15459;15448:8;:12;;;;19299:1312;;;:::o;8289:44::-;;;;;;;;;;;;;;;;;:::o;15188:20::-;;;;:::o;8680:41::-;;;;;;;;;;;;;;;;;:::o;20723:1495::-;20799:15;20816;15379:1;15367:8;;:13;15359:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15424:1;15413:8;:12;;;;20850:17;20869;20892:13;:11;:13::i;:::-;20849:56;;;;;20931:15;20949:6;;;;;;;;;;;20931:24;;20981:15;20999:6;;;;;;;;;;;20981:24;;21031:16;21057:7;21050:25;;;21084:4;21050:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21050:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21050:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21050:40:0;;;;;;;;;;;;;;;;21031:59;;21101:16;21127:7;21120:25;;;21154:4;21120:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21120:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21120:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21120:40:0;;;;;;;;;;;;;;;;21101:59;;21171:17;21191:9;:24;21209:4;21191:24;;;;;;;;;;;;;;;;21171:44;;21228:10;21241:30;21250:9;21261;21241:8;:30::i;:::-;21228:43;;21282:20;21305:11;;21282:34;;21441:12;21415:23;21429:8;21415:9;:13;;:23;;;;:::i;:::-;:38;;;;;;21405:48;;21548:12;21522:23;21536:8;21522:9;:13;;:23;;;;:::i;:::-;:38;;;;;;21512:48;;21651:1;21641:7;:11;:26;;;;;21666:1;21656:7;:11;21641:26;21619:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21746:31;21760:4;21767:9;21746:5;:31::i;:::-;21788:35;21802:7;21811:2;21815:7;21788:13;:35::i;:::-;21834;21848:7;21857:2;21861:7;21834:13;:35::i;:::-;21898:7;21891:25;;;21925:4;21891:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21891:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21891:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21891:40:0;;;;;;;;;;;;;;;;21880:51;;21960:7;21953:25;;;21987:4;21953:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21953:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21953:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21953:40:0;;;;;;;;;;;;;;;;21942:51;;22006:49;22014:8;22024;22034:9;22045;22006:7;:49::i;:::-;22070:5;22066:50;;;22085:31;22107:8;;;;;;;;;;;22085:31;;22093:8;;;;;;;;;;;22085:17;;:21;;:31;;;;:::i;:::-;22077:5;:39;;;;22066:50;22207:2;22172:38;;22177:10;22172:38;;;22189:7;22198;22172:38;;;;;;;;;;;;;;;;;;;;;;;;15436:1;;;;;;;;;15459;15448:8;:12;;;;20723:1495;;;:::o;8161:46::-;;;;;;;;;;;;;;;;;;;:::o;14763:27::-;;;;:::o;10536:142::-;10599:4;10616:32;10626:10;10638:2;10642:5;10616:9;:32::i;:::-;10666:4;10659:11;;10536:142;;;;:::o;14514:49::-;14558:5;14514:49;:::o;24959:434::-;15379:1;15367:8;;:13;15359:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15424:1;15413:8;:12;;;;25010:15;25028:6;;;;;;;;;;;25010:24;;25060:15;25078:6;;;;;;;;;;;25060:24;;25110:132;25138:7;25160:2;25177:54;25222:8;;;;;;;;;;;25177:54;;25184:7;25177:25;;;25211:4;25177:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25177:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25177:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25177:40:0;;;;;;;;;;;;;;;;:44;;:54;;;;:::i;:::-;25110:13;:132::i;:::-;25253;25281:7;25303:2;25320:54;25365:8;;;;;;;;;;;25320:54;;25327:7;25320:25;;;25354:4;25320:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25320:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25320:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25320:40:0;;;;;;;;;;;;;;;;:44;;:54;;;;:::i;:::-;25253:13;:132::i;:::-;15436:1;;15459;15448:8;:12;;;;24959:434;:::o;14676:22::-;;;;;;;;;;;;;:::o;14797:26::-;;;;:::o;14733:21::-;;;;;;;;;;;;;:::o;11067:1000::-;11289:15;11277:8;:27;;11269:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11338:14;11443:16;;8607:66;11547:15;;11589:5;11621:7;11655:5;11687:6;:13;11694:5;11687:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;11729:8;11510:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11510:250:0;;;11478:301;;;;;;11379:415;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11379:415:0;;;11355:450;;;;;;11338:467;;11816:24;11843:26;11853:6;11861:1;11864;11867;11843:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11843:26:0;;;;;;;;11816:53;;11930:1;11902:30;;:16;:30;;;;:59;;;;;11956:5;11936:25;;:16;:25;;;11902:59;11880:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12028:31;12037:5;12044:7;12053:5;12028:8;:31::i;:::-;11067:1000;;;;;;;;;:::o;8340:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25442:221::-;15379:1;15367:8;;:13;15359:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15424:1;15413:8;:12;;;;25483:172;25512:6;;;;;;;;;;;25505:24;;;25538:4;25505:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25505:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25505:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25505:39:0;;;;;;;;;;;;;;;;25566:6;;;;;;;;;;;25559:24;;;25592:4;25559:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25559:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25559:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25559:39:0;;;;;;;;;;;;;;;;25613:8;;;;;;;;;;;25636;;;;;;;;;;;25483:7;:172::i;:::-;15459:1;15448:8;:12;;;;25442:221::o;15797:385::-;15916:12;15930:17;15951:5;:10;;14631:34;;;;;;;;;;;;;;;;;14621:45;;;;;;16009:2;16013:5;15976:43;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15976:43:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;15976:43:0;15951:79;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15951:79:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;15915:115:0;;;;16063:7;:57;;;;;16090:1;16075:4;:11;:16;:44;;;;16106:4;16095:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16095:24:0;;;;;;;;;;;;;;;;16075:44;16063:57;16041:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15797:385;;;;;:::o;7570:137::-;7628:9;7673:1;7667;7663;:5;7659:9;;;7658:16;;7650:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7570:137;;;;:::o;7861:151::-;7919:9;7954:1;7949;:6;:30;;;;7978:1;7973;7968;7964;:5;7960:9;;;7959:15;;;;;;:20;7949:30;7941:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7861:151;;;;:::o;7715:138::-;7773:9;7818:1;7812;7808;:5;7804:9;;;7803:16;;7795:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7715:138;;;;:::o;17056:1020::-;17251:2;17231:23;;:8;:23;;:50;;;;;17278:2;17258:23;;:8;:23;;17231:50;17209:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17339:21;17388:5;17370:15;:23;;;;;;17339:55;;17405:18;17443;;;;;;;;;;;17426:14;:35;17405:56;;17513:1;17499:11;:15;;;:33;;;;;17531:1;17518:9;:14;;;;17499:33;:51;;;;;17549:1;17536:9;:14;;;;17499:51;17495:410;;;17742:11;17669:84;;17677:44;17711:9;17677:27;17694:9;17677:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;17669:53;;:84;17628:20;;:125;;;;;;;;;;;17882:11;17809:84;;17817:44;17851:9;17817:27;17834:9;17817:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;17809:53;;:84;17768:20;;:125;;;;;;;;;;;17495:410;17934:8;17915;;:28;;;;;;;;;;;;;;;;;;17973:8;17954;;:28;;;;;;;;;;;;;;;;;;18014:14;17993:18;;:35;;;;;;;;;;;;;;;;;;18044:24;18049:8;;;;;;;;;;;18059;;;;;;;;;;;18044:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17056:1020;;;;;;:::o;9899:206::-;10045:5;10017:9;:16;10027:5;10017:16;;;;;;;;;;;;;;;:25;10034:7;10017:25;;;;;;;;;;;;;;;:33;;;;10082:7;10066:31;;10075:5;10066:31;;;10091:5;10066:31;;;;;;;;;;;;;;;;;;9899:206;;;:::o;10113:257::-;10244:26;10264:5;10244:9;:15;10254:4;10244:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;10226:9;:15;10236:4;10226:15;;;;;;;;;;;;;;;:44;;;;10297:24;10315:5;10297:9;:13;10307:2;10297:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;10281:9;:13;10291:2;10281:13;;;;;;;;;;;;;;;:40;;;;10352:2;10337:25;;10346:4;10337:25;;;10356:5;10337:25;;;;;;;;;;;;;;;;;;10113:257;;;:::o;1489:508::-;1536:4;1883:12;1906:4;1883:28;;1918:10;1964:4;1952:17;1946:23;;1990:1;1984:2;:7;1977:14;;;;1489:508;:::o;8928:531::-;1088:12;;;;;;;;;;;:31;;;;1104:15;:13;:15::i;:::-;1088:31;:47;;;;1124:11;;;;;;;;;;;1123:12;1088:47;1080:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1195:19;1218:12;;;;;;;;;;;1217:13;1195:35;;1241:14;1237:83;;;1281:4;1266:12;;:19;;;;;;;;;;;;;;;;;;1308:4;1294:11;;:18;;;;;;;;;;;;;;;;;;1237:83;8990:15;9051:7;9040:18;;9151:135;;;;;;;;;;;;;;;;;;;9321:4;;;;;;;;;;;;;;;;;9305:22;;;;;;9356:10;;;;;;;;;;;;;;;;;9346:21;;;;;;9386:7;9420:4;9122:318;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9122:318:0;;;9098:353;;;;;;9079:16;:372;;;;1328:1;1342:14;1338:57;;;1382:5;1367:12;;:20;;;;;;;;;;;;;;;;;;1338:57;8928:531;:::o;18166:1021::-;18257:10;18285:13;18314:7;;;;;;;;;;;18301:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18301:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18301:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18301:29:0;;;;;;;;;;;;;;;;18285:45;;18366:1;18349:19;;:5;:19;;;;18341:27;;18379:14;18396:5;;18379:22;;18431:5;18427:753;;;18467:1;18457:6;:11;18453:657;;18489:13;18505:44;18515:33;18538:9;18515:33;;18523:9;18515:18;;:22;;:33;;;;:::i;:::-;18505:9;:44::i;:::-;18489:60;;18568:17;18588;18598:6;18588:9;:17::i;:::-;18568:37;;18636:9;18628:5;:17;18624:471;;;18670:17;18690:106;18784:11;;18690:63;18732:20;18742:9;18732:5;:9;;:20;;;;:::i;:::-;18690:11;;:41;;:63;;;;:::i;:::-;:93;;:106;;;;:::i;:::-;18670:126;;18819:19;18841:103;18895:26;18909:11;;18895:9;:13;;:26;;;;:::i;:::-;18841:23;18851:12;;18841:5;:9;;:23;;;;:::i;:::-;:27;;:103;;;;:::i;:::-;18819:125;;18967:17;18999:11;18987:9;:23;;;;;;18967:43;;19049:1;19037:9;:13;19033:42;;;19052:23;19058:5;19065:9;19052:5;:23::i;:::-;19033:42;18624:471;;;;18453:657;;;18427:753;;;19141:1;19131:6;:11;19127:53;;19167:1;19159:5;:9;;;;19127:53;18427:753;18166:1021;;;;;;:::o;12370:312::-;12418:9;12448:1;12444;:5;12440:235;;;12470:1;12466:5;;12486:9;12506:1;12502;12498;:5;;;;;;:9;12486:21;;12522:92;12533:1;12529;:5;12522:92;;;12559:1;12555:5;;12597:1;12592;12588;12584;:5;;;;;;:9;12583:15;;;;;;12579:19;;12522:92;;;12440:235;;;;12640:1;12635;:6;12631:44;;12662:1;12658:5;;12631:44;12440:235;12370:312;;;:::o;9467:204::-;9543:22;9559:5;9543:11;;:15;;:22;;;;:::i;:::-;9529:11;:36;;;;9592:24;9610:5;9592:9;:13;9602:2;9592:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;9576:9;:13;9586:2;9576:13;;;;;;;;;;;;;;;:40;;;;9653:2;9632:31;;9649:1;9632:31;;;9657:5;9632:31;;;;;;;;;;;;;;;;;;9467:204;;:::o;12147:105::-;12205:9;12235:1;12231;:5;:13;;12243:1;12231:13;;;12239:1;12231:13;12227:17;;12147:105;;;;:::o;9679:212::-;9761:26;9781:5;9761:9;:15;9771:4;9761:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;9743:9;:15;9753:4;9743:15;;;;;;;;;;;;;;;:44;;;;9812:22;9828:5;9812:11;;:15;;:22;;;;:::i;:::-;9798:11;:36;;;;9873:1;9850:33;;9859:4;9850:33;;;9877:5;9850:33;;;;;;;;;;;;;;;;;;9679:212;;:::o;12951:120::-;13001:9;12896:6;13035:1;13027:10;;:17;13023:21;;12951:120;;;:::o;13142:108::-;13202:9;13240:1;13232:10;;13228:14;;:1;:14;;;;;;;;13224:18;;13142:108;;;;:::o
Swarm Source
bzzr://88fae095a36fdc0854a4b537f4eb6487f3879d503b70afcefd81f58f5262e63a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.999665 | 9,741.5818 | $9,738.32 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.