BscScan - Sponsored slots available. Book your slot here!
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 557 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 36827825 | 280 days ago | IN | 0 BNB | 0.00007315 | ||||
Approve | 29961082 | 519 days ago | IN | 0 BNB | 0.00004377 | ||||
Approve | 27508528 | 605 days ago | IN | 0 BNB | 0.00004523 | ||||
Approve | 26783577 | 630 days ago | IN | 0 BNB | 0.00002918 | ||||
Approve | 26400009 | 644 days ago | IN | 0 BNB | 0.00007296 | ||||
Approve | 23293648 | 753 days ago | IN | 0 BNB | 0.00026742 | ||||
Approve | 21180107 | 828 days ago | IN | 0 BNB | 0.00007296 | ||||
Approve | 20660703 | 846 days ago | IN | 0 BNB | 0.00026742 | ||||
Approve | 20660648 | 846 days ago | IN | 0 BNB | 0.00026742 | ||||
Approve | 15435687 | 1028 days ago | IN | 0 BNB | 0.00007296 | ||||
Approve | 14505939 | 1061 days ago | IN | 0 BNB | 0.00012493 | ||||
Approve | 14505931 | 1061 days ago | IN | 0 BNB | 0.00007296 | ||||
Approve | 12333548 | 1138 days ago | IN | 0 BNB | 0.00022279 | ||||
Approve | 11823359 | 1156 days ago | IN | 0 BNB | 0.00007296 | ||||
Transfer | 11709445 | 1160 days ago | IN | 0.03117534 BNB | 0.00010527 | ||||
Approve | 11033171 | 1183 days ago | IN | 0 BNB | 0.00007296 | ||||
Approve | 10861986 | 1189 days ago | IN | 0 BNB | 0.00022285 | ||||
Approve | 10861411 | 1189 days ago | IN | 0 BNB | 0.00022285 | ||||
Approve | 10861240 | 1189 days ago | IN | 0 BNB | 0.00022285 | ||||
Approve | 10860496 | 1189 days ago | IN | 0 BNB | 0.00022285 | ||||
Approve | 10422775 | 1205 days ago | IN | 0 BNB | 0.00010215 | ||||
Approve | 9799731 | 1227 days ago | IN | 0 BNB | 0.00015056 | ||||
Approve | 9799726 | 1227 days ago | IN | 0 BNB | 0.00017576 | ||||
Approve | 9739457 | 1229 days ago | IN | 0 BNB | 0.00022285 | ||||
Approve | 9386809 | 1241 days ago | IN | 0 BNB | 0.00022285 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
11983252 | 1150 days ago | 0 BNB | ||||
11983252 | 1150 days ago | 0 BNB | ||||
11983245 | 1150 days ago | 0 BNB | ||||
11983245 | 1150 days ago | 0 BNB | ||||
10919696 | 1187 days ago | 0.00000002 BNB | ||||
10919696 | 1187 days ago | 0.00000002 BNB | ||||
10861999 | 1189 days ago | 0.00007567 BNB | ||||
10861999 | 1189 days ago | 0.00007567 BNB | ||||
10441201 | 1204 days ago | 0.00029996 BNB | ||||
10441201 | 1204 days ago | 0.00029996 BNB | ||||
10169329 | 1214 days ago | 0 BNB | ||||
10169329 | 1214 days ago | 0 BNB | ||||
9849746 | 1225 days ago | 0.00000002 BNB | ||||
9849746 | 1225 days ago | 0.00000002 BNB | ||||
9849745 | 1225 days ago | 0.00008521 BNB | ||||
9849745 | 1225 days ago | 0.00008521 BNB | ||||
9799729 | 1227 days ago | 0.00008521 BNB | ||||
9799729 | 1227 days ago | 0.00008521 BNB | ||||
9799722 | 1227 days ago | 0.00047625 BNB | ||||
9799722 | 1227 days ago | 0.00047625 BNB | ||||
9739536 | 1229 days ago | 0.00047625 BNB | ||||
9739536 | 1229 days ago | 0.00047625 BNB | ||||
9739536 | 1229 days ago | 0.00047625 BNB | ||||
9739536 | 1229 days ago | 0.00047625 BNB | ||||
9739535 | 1229 days ago | 0.00047625 BNB |
Loading...
Loading
Contract Name:
AutoLP
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2021-01-21 */ // AUTOLP // Automatically adds to the PancakeSwap-LP. // https://autolp.eth.link // https://t.me/autolp pragma solidity ^0.6.12; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = now + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(now > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } pragma solidity >=0.5.0; interface IPancakeFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IPancakePair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; interface IPancakeRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IPancakeRouter02 is IPancakeRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract AutoLP is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; address private _burnPool = 0x0000000000000000000000000000000000000000; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _tBurnTotal; string private _name = "AutoLP.eth.link"; string private _symbol = "AUTOLP"; uint8 private _decimals = 18; //2% uint256 public _taxFee = 2; uint256 private _previousTaxFee = _taxFee; //0% uint256 public _burnFee = 0; uint256 private _previousBurnFee = _burnFee; //Total 5% => 2.5% goes to liquidity providers and 2.5% is added to liquidity pool uint256 public _liquidityFee = 5; uint256 private _previousLiquidityFee = _liquidityFee; //means 50% from total collected liquidity (5% on every Transfer) will be used to rewarded liquidity providers uint256 public _lpRewardFromLiquidity = 50; //3% uint256 public _maxTxAmount = 20 * 10**18; //tracks the total amount of token rewarded to liquidity providers uint256 public totalLiquidityProviderRewards; IPancakeRouter02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool public BurnLpTokensEnabled = false; uint256 public TotalBurnedLpTokens; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private minTokensBeforeSwap = 1; event RewardLiquidityProviders(uint256 tokenAmount); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () public { _rOwned[_msgSender()] = _rTotal; IPancakeRouter02 _uniswapV2Router = IPancakeRouter02(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F); // Create a uniswap pair for this new token uniswapV2Pair = IPancakeFactory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= minTokensBeforeSwap; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { //calculate lp rewards uint256 lpRewardAmount = contractTokenBalance.mul(_lpRewardFromLiquidity).div(10**2); //distribute rewards _rewardLiquidityProviders(lpRewardAmount); //add liquidity swapAndLiquify(contractTokenBalance.sub(lpRewardAmount)); //burn lp tokens, hence locking the liquidity forever if(BurnLpTokensEnabled) burnLpTokens(); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function burnLpTokens() private { IPancakePair _token = IPancakePair(uniswapV2Pair); uint256 amount = _token.balanceOf(address(this)); TotalBurnedLpTokens = TotalBurnedLpTokens.add(amount); _token.transfer(_burnPool, amount); } function LpTokenBalance() public view returns (uint256) { IPancakePair token = IPancakePair(uniswapV2Pair); uint256 amount = token.balanceOf(address(this)); return amount; } function withDrawLpTokens() public onlyOwner { // IUniswapV2ERC20 token = IUniswapV2ERC20(_token); IPancakePair token = IPancakePair(uniswapV2Pair); uint256 amount = token.balanceOf(address(this)); require(amount > 0, "Not enough LP tokens available to withdraw"); token.transfer(owner(), amount); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 rBurn, uint256 tFee, uint256 tBurn) private { _rTotal = _rTotal.sub(rFee).sub(rBurn); _tFeeTotal = _tFeeTotal.add(tFee); _tBurnTotal = _tBurnTotal.add(tBurn); _tTotal = _tTotal.sub(tBurn); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tBurn, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tBurn = calculateBurnFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn).sub(tLiquidity); return (tTransferAmount, tFee, tBurn, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rBurn = tBurn.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function _rewardLiquidityProviders(uint256 liquidityRewards) private { // avoid fee calling _tokenTransfer with false _tokenTransfer(address(this), uniswapV2Pair, liquidityRewards,false); IPancakePair(uniswapV2Pair).sync(); totalLiquidityProviderRewards = totalLiquidityProviderRewards.add(liquidityRewards); emit RewardLiquidityProviders(liquidityRewards); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateBurnFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_burnFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _burnFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousBurnFee = _burnFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _burnFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _burnFee = _previousBurnFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setBurnFeePercent(uint256 burnFee) external onlyOwner() { _burnFee = burnFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setLpRewardFromLiquidityPercent(uint256 percent) external onlyOwner() { _lpRewardFromLiquidity = percent; } function setMaxTxPercent(uint256 maxTxPercent, uint256 maxTxDecimals) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**(uint256(maxTxDecimals) + 2) ); } function setBurnLpTokenEnabled(bool value) external onlyOwner() { BurnLpTokensEnabled = value; } function setMinTokensBeforeSwapPercent(uint256 _minTokensBeforeSwapPercent, uint256 _minTokensBeforeSwapDecimal) public onlyOwner{ minTokensBeforeSwap = _tTotal.mul(_minTokensBeforeSwapPercent).div( 10**(uint256(_minTokensBeforeSwapDecimal) + 2) ); emit MinTokensBeforeSwapUpdated(minTokensBeforeSwap); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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"},{"inputs":[],"name":"BurnLpTokensEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LpTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalBurnedLpTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lpRewardFromLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setBurnLpTokenEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setLpRewardFromLiquidityPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"},{"internalType":"uint256","name":"maxTxDecimals","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minTokensBeforeSwapPercent","type":"uint256"},{"internalType":"uint256","name":"_minTokensBeforeSwapDecimal","type":"uint256"}],"name":"setMinTokensBeforeSwapPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLiquidityProviderRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withDrawLpTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550683635c9adc5dea00000600a55600a54600019816200006157fe5b0660001903600b556040518060400160405280600f81526020017f4175746f4c502e6574682e6c696e6b0000000000000000000000000000000000815250600e9080519060200190620000b692919062000661565b506040518060400160405280600681526020017f4155544f4c500000000000000000000000000000000000000000000000000000815250600f90805190602001906200010492919062000661565b506012601060006101000a81548160ff021916908360ff16021790555060026011556011546012556000601355601354601455600560155560155460165560326017556801158e460913d000006018556000601a60006101000a81548160ff0219169083151502179055506000601c60016101000a81548160ff0219169083151502179055506001601d553480156200019c57600080fd5b506000620001af6200063060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600b5460036000620002646200063060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060007305ff2b0db69458a0750badebc4f9e13add608c7f90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030257600080fd5b505afa15801562000317573d6000803e3d6000fd5b505050506040513d60208110156200032e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a257600080fd5b505afa158015620003b7573d6000803e3d6000fd5b505050506040513d6020811015620003ce57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200044957600080fd5b505af11580156200045e573d6000803e3d6000fd5b505050506040513d60208110156200047557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160066000620005096200063860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005c26200063060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a35062000707565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006a457805160ff1916838001178555620006d5565b82800160010185558215620006d5579182015b82811115620006d4578251825591602001919060010190620006b7565b5b509050620006e49190620006e8565b5090565b5b8082111562000703576000816000905550600101620006e9565b5090565b60805160601c60a05160601c615d0f6200076860003980611d8552806123ac5280612b8252806139925280613e2e5280613e57528061401052508061126152806149f65280614ae25280614b095280614c145280614c3b5250615d0f6000f3fe6080604052600436106102975760003560e01c806370a082311161015a578063b6c52324116100c1578063cea269581161007a578063cea2695814610e14578063da12e6b814610e4f578063dd46706414610e7c578063dd62ed3e14610eb7578063ea2f0b3714610f3c578063f2fde38b14610f8d5761029e565b8063b6c5232414610cfa578063c0b0fda214610d25578063c365c69014610d50578063c49b9a8014610d7b578063c802688314610db8578063cb5fac4814610dcf5761029e565b80638ee88c53116101135780638ee88c5314610b0b57806395d89b4114610b46578063a3b798db14610bd6578063a457c2d714610c01578063a69df4b514610c72578063a9059cbb14610c895761029e565b806370a0823114610991578063715018a6146109f657806376a8477514610a0d5780637d1db4a514610a3857806388f8202014610a635780638da5cb5b14610aca5761029e565b80633b124fe7116101fe57806349bd5a5e116101b757806349bd5a5e146108155780634a74bb02146108565780634d4301541461088357806352390c02146108ae5780635342acb4146108ff5780636bc87c3a146109665761029e565b80633b124fe7146106835780633bd5d173146106ae5780633f3cf56c146106e957806342b3ff1b1461072e578063437823ec146107695780634549b039146107ba5761029e565b806318160ddd1161025057806318160ddd1461048857806323b872dd146104b35780632d83811914610544578063313ce567146105935780633685d419146105c157806339509351146106125761029e565b806303c72c6b146102a3578063061c82d0146102e057806306fdde031461031b578063095ea7b3146103ab57806313114a9d1461041c5780631694505e146104475761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102de600480360360208110156102c657600080fd5b81019080803515159060200190929190505050610fde565b005b3480156102ec57600080fd5b506103196004803603602081101561030357600080fd5b81019080803590602001909291905050506110c3565b005b34801561032757600080fd5b50610330611195565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b757600080fd5b50610404600480360360408110156103ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611237565b60405180821515815260200191505060405180910390f35b34801561042857600080fd5b50610431611255565b6040518082815260200191505060405180910390f35b34801561045357600080fd5b5061045c61125f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049457600080fd5b5061049d611283565b6040518082815260200191505060405180910390f35b3480156104bf57600080fd5b5061052c600480360360608110156104d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128d565b60405180821515815260200191505060405180910390f35b34801561055057600080fd5b5061057d6004803603602081101561056757600080fd5b8101908080359060200190929190505050611366565b6040518082815260200191505060405180910390f35b34801561059f57600080fd5b506105a86113ea565b604051808260ff16815260200191505060405180910390f35b3480156105cd57600080fd5b50610610600480360360208110156105e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611401565b005b34801561061e57600080fd5b5061066b6004803603604081101561063557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061178b565b60405180821515815260200191505060405180910390f35b34801561068f57600080fd5b5061069861183e565b6040518082815260200191505060405180910390f35b3480156106ba57600080fd5b506106e7600480360360208110156106d157600080fd5b8101908080359060200190929190505050611844565b005b3480156106f557600080fd5b5061072c6004803603604081101561070c57600080fd5b8101908080359060200190929190803590602001909291905050506119d6565b005b34801561073a57600080fd5b506107676004803603602081101561075157600080fd5b8101908080359060200190929190505050611ad5565b005b34801561077557600080fd5b506107b86004803603602081101561078c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ba7565b005b3480156107c657600080fd5b506107ff600480360360408110156107dd57600080fd5b8101908080359060200190929190803515159060200190929190505050611cca565b6040518082815260200191505060405180910390f35b34801561082157600080fd5b5061082a611d83565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561086257600080fd5b5061086b611da7565b60405180821515815260200191505060405180910390f35b34801561088f57600080fd5b50610898611dba565b6040518082815260200191505060405180910390f35b3480156108ba57600080fd5b506108fd600480360360208110156108d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dc0565b005b34801561090b57600080fd5b5061094e6004803603602081101561092257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120da565b60405180821515815260200191505060405180910390f35b34801561097257600080fd5b5061097b612130565b6040518082815260200191505060405180910390f35b34801561099d57600080fd5b506109e0600480360360208110156109b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612136565b6040518082815260200191505060405180910390f35b348015610a0257600080fd5b50610a0b612221565b005b348015610a1957600080fd5b50610a226123a7565b6040518082815260200191505060405180910390f35b348015610a4457600080fd5b50610a4d61247b565b6040518082815260200191505060405180910390f35b348015610a6f57600080fd5b50610ab260048036036020811015610a8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612481565b60405180821515815260200191505060405180910390f35b348015610ad657600080fd5b50610adf6124d7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b1757600080fd5b50610b4460048036036020811015610b2e57600080fd5b8101908080359060200190929190505050612500565b005b348015610b5257600080fd5b50610b5b6125d2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b9b578082015181840152602081019050610b80565b50505050905090810190601f168015610bc85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610be257600080fd5b50610beb612674565b6040518082815260200191505060405180910390f35b348015610c0d57600080fd5b50610c5a60048036036040811015610c2457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061267a565b60405180821515815260200191505060405180910390f35b348015610c7e57600080fd5b50610c87612747565b005b348015610c9557600080fd5b50610ce260048036036040811015610cac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612964565b60405180821515815260200191505060405180910390f35b348015610d0657600080fd5b50610d0f612982565b6040518082815260200191505060405180910390f35b348015610d3157600080fd5b50610d3a61298c565b6040518082815260200191505060405180910390f35b348015610d5c57600080fd5b50610d65612992565b6040518082815260200191505060405180910390f35b348015610d8757600080fd5b50610db660048036036020811015610d9e57600080fd5b81019080803515159060200190929190505050612998565b005b348015610dc457600080fd5b50610dcd612ab6565b005b348015610ddb57600080fd5b50610e1260048036036040811015610df257600080fd5b810190808035906020019092919080359060200190929190505050612d5a565b005b348015610e2057600080fd5b50610e4d60048036036020811015610e3757600080fd5b8101908080359060200190929190505050612e92565b005b348015610e5b57600080fd5b50610e64612f64565b60405180821515815260200191505060405180910390f35b348015610e8857600080fd5b50610eb560048036036020811015610e9f57600080fd5b8101908080359060200190929190505050612f77565b005b348015610ec357600080fd5b50610f2660048036036040811015610eda57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613168565b6040518082815260200191505060405180910390f35b348015610f4857600080fd5b50610f8b60048036036020811015610f5f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131ef565b005b348015610f9957600080fd5b50610fdc60048036036020811015610fb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613312565b005b610fe661351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601a60006101000a81548160ff02191690831515021790555050565b6110cb61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b6060600e8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561122d5780601f106112025761010080835404028352916020019161122d565b820191906000526020600020905b81548152906001019060200180831161121057829003601f168201915b5050505050905090565b600061124b61124461351d565b8484613525565b6001905092915050565b6000600c54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600a54905090565b600061129a84848461371c565b61135b846112a661351d565b61135685604051806060016040528060288152602001615bcc60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061130c61351d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b339092919063ffffffff16565b613525565b600190509392505050565b6000600b548211156113c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615ae7602a913960400191505060405180910390fd5b60006113cd613bf3565b90506113e28184613c1e90919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b61140961351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600880549050811015611787578173ffffffffffffffffffffffffffffffffffffffff16600882815481106115bc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561177a5760086001600880549050038154811061161857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061165057fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061174057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611787565b808060010191505061158b565b5050565b600061183461179861351d565b8461182f85600560006117a961351d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b613525565b6001905092915050565b60115481565b600061184e61351d565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615c66602c913960400191505060405180910390fd5b60006118fe83613cf0565b505050505050905061195881600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119b081600b54613d5890919063ffffffff16565b600b819055506119cb83600c54613c6890919063ffffffff16565b600c81905550505050565b6119de61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611acb60028201600a0a611abd84600a54613da290919063ffffffff16565b613c1e90919063ffffffff16565b6018819055505050565b611add61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060178190555050565b611baf61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a54831115611d44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611d65576000611d5484613cf0565b505050505050905080915050611d7d565b6000611d7084613cf0565b5050505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601c60019054906101000a900460ff1681565b60175481565b611dc861351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561201c57611fd8600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611366565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60155481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121d157600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061221c565b612219600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611366565b90505b919050565b61222961351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000807f0000000000000000000000000000000000000000000000000000000000000000905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561243657600080fd5b505afa15801561244a573d6000803e3d6000fd5b505050506040513d602081101561246057600080fd5b81019080805190602001909291905050509050809250505090565b60185481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61250861351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b6060600f8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561266a5780601f1061263f5761010080835404028352916020019161266a565b820191906000526020600020905b81548152906001019060200180831161264d57829003601f168201915b5050505050905090565b601b5481565b600061273d61268761351d565b8461273885604051806060016040528060258152602001615cb560259139600560006126b161351d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b339092919063ffffffff16565b613525565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615c926023913960400191505060405180910390fd5b6002544211612864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061297861297161351d565b848461371c565b6001905092915050565b6000600254905090565b60135481565b60195481565b6129a061351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b612abe61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000000905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c0c57600080fd5b505afa158015612c20573d6000803e3d6000fd5b505050506040513d6020811015612c3657600080fd5b8101908080519060200190929190505050905060008111612ca2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615b59602a913960400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612cc66124d7565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612d1a57600080fd5b505af1158015612d2e573d6000803e3d6000fd5b505050506040513d6020811015612d4457600080fd5b8101908080519060200190929190505050505050565b612d6261351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612e4f60028201600a0a612e4184600a54613da290919063ffffffff16565b613c1e90919063ffffffff16565b601d819055507f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c00601d546040518082815260200191505060405180910390a15050565b612e9a61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060138190555050565b601a60009054906101000a900460ff1681565b612f7f61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461303f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6131f761351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61331a61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613460576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615b116026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615c426024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615b376022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615c1d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613828576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615ac46023913960400191505060405180910390fd5b60008111613881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615bf46029913960400191505060405180910390fd5b6138896124d7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156138f757506138c76124d7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561395857601854811115613957576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615b836028913960400191505060405180910390fd5b5b600061396330612136565b90506000601d5482101590508080156139895750601c60009054906101000a900460ff16155b80156139e157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156139f95750601c60019054906101000a900460ff165b15613a6e576000613a286064613a1a60175486613da290919063ffffffff16565b613c1e90919063ffffffff16565b9050613a3381613e28565b613a4e613a498285613d5890919063ffffffff16565b613f2a565b601a60009054906101000a900460ff1615613a6c57613a6b61400c565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b155750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b1f57600090505b613b2b868686846141c5565b505050505050565b6000838311158290613be0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ba5578082015181840152602081019050613b8a565b50505050905090810190601f168015613bd25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613c006144d6565b91509150613c178183613c1e90919063ffffffff16565b9250505090565b6000613c6083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614767565b905092915050565b600080828401905083811015613ce6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000806000613d0a8c61482d565b93509350935093506000806000613d2b8f878787613d26613bf3565b6148ac565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b6000613d9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b33565b905092915050565b600080831415613db55760009050613e22565b6000828402905082848281613dc657fe5b0414613e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615bab6021913960400191505060405180910390fd5b809150505b92915050565b613e55307f00000000000000000000000000000000000000000000000000000000000000008360006141c5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ebd57600080fd5b505af1158015613ed1573d6000803e3d6000fd5b50505050613eea81601954613c6890919063ffffffff16565b6019819055507f8765d2bb982ed6ee74d2b03c76c9c129aa4a4e3e6b17bd7cf7830088e9d49054816040518082815260200191505060405180910390a150565b6001601c60006101000a81548160ff0219169083151502179055506000613f5b600283613c1e90919063ffffffff16565b90506000613f728284613d5890919063ffffffff16565b90506000479050613f8283614960565b6000613f978247613d5890919063ffffffff16565b9050613fa38382614c0e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000601c60006101000a81548160ff02191690831515021790555050565b60007f0000000000000000000000000000000000000000000000000000000000000000905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561409a57600080fd5b505afa1580156140ae573d6000803e3d6000fd5b505050506040513d60208110156140c457600080fd5b810190808051906020019092919050505090506140ec81601b54613c6890919063ffffffff16565b601b819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561418557600080fd5b505af1158015614199573d6000803e3d6000fd5b505050506040513d60208110156141af57600080fd5b8101908080519060200190929190505050505050565b806141d3576141d2614d58565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156142765750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561428b57614286848484614dba565b6144c2565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561432e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143435761433e848484615046565b6144c1565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156143e75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156143fc576143f78484846152d2565b6144c0565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561449e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156144b3576144ae8484846154c9565b6144bf565b6144be8484846152d2565b5b5b5b5b806144d0576144cf6157ea565b5b50505050565b6000806000600b5490506000600a54905060005b60088054905081101561472a5782600360006008848154811061450957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806145f0575081600460006008848154811061458857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561460757600b54600a5494509450505050614763565b614690600360006008848154811061461b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613d5890919063ffffffff16565b925061471b60046000600884815481106146a657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613d5890919063ffffffff16565b915080806001019150506144ea565b50614742600a54600b54613c1e90919063ffffffff16565b82101561475a57600b54600a54935093505050614763565b81819350935050505b9091565b60008083118290614813576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156147d85780820151818401526020810190506147bd565b50505050905090810190601f1680156148055780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161481f57fe5b049050809150509392505050565b600080600080600061483e86615807565b9050600061484b87615838565b9050600061485888615869565b905060006148938261488585614877888e613d5890919063ffffffff16565b613d5890919063ffffffff16565b613d5890919063ffffffff16565b9050808484849750975097509750505050509193509193565b6000806000806148c5858a613da290919063ffffffff16565b905060006148dc868a613da290919063ffffffff16565b905060006148f3878a613da290919063ffffffff16565b9050600061490a888a613da290919063ffffffff16565b905060006149458261493785614929888a613d5890919063ffffffff16565b613d5890919063ffffffff16565b613d5890919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6060600267ffffffffffffffff8111801561497a57600080fd5b506040519080825280602002602001820160405280156149a95781602001602082028036833780820191505090505b50905030816000815181106149ba57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015614a5a57600080fd5b505afa158015614a6e573d6000803e3d6000fd5b505050506040513d6020811015614a8457600080fd5b810190808051906020019092919050505081600181518110614aa257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614b07307f000000000000000000000000000000000000000000000000000000000000000084613525565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614bc9578082015181840152602081019050614bae565b505050509050019650505050505050600060405180830381600087803b158015614bf257600080fd5b505af1158015614c06573d6000803e3d6000fd5b505050505050565b614c39307f000000000000000000000000000000000000000000000000000000000000000084613525565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015614d0157600080fd5b505af1158015614d15573d6000803e3d6000fd5b50505050506040513d6060811015614d2c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b6000601154148015614d6c57506000601354145b8015614d7a57506000601554145b15614d8457614db8565b6011546012819055506013546014819055506015546016819055506000601181905550600060138190555060006015819055505b565b6000614dc4613bf3565b90506000806000806000806000614dda89613cf0565b96509650965096509650965096506000614dfd8984613da290919063ffffffff16565b9050614e518a600460008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ee688600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f7b87600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fc78261589a565b614fd386828686615a3f565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b6000615050613bf3565b9050600080600080600080600061506689613cf0565b965096509650965096509650965060006150898984613da290919063ffffffff16565b90506150dd88600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061517285600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061520787600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152538261589a565b61525f86828686615a3f565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b60006152dc613bf3565b905060008060008060008060006152f289613cf0565b965096509650965096509650965060006153158984613da290919063ffffffff16565b905061536988600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153fe87600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061544a8261589a565b61545686828686615a3f565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b60006154d3613bf3565b905060008060008060008060006154e989613cf0565b9650965096509650965096509650600061550c8984613da290919063ffffffff16565b90506155608a600460008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155f588600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061568a85600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061571f87600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061576b8261589a565b61577786828686615a3f565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b601254601181905550601454601381905550601654601581905550565b6000615831606461582360115485613da290919063ffffffff16565b613c1e90919063ffffffff16565b9050919050565b6000615862606461585460135485613da290919063ffffffff16565b613c1e90919063ffffffff16565b9050919050565b6000615893606461588560155485613da290919063ffffffff16565b613c1e90919063ffffffff16565b9050919050565b60006158a4613bf3565b905060006158bb8284613da290919063ffffffff16565b905061590f81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615a3a576159f683600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b615a6683615a5886600b54613d5890919063ffffffff16565b613d5890919063ffffffff16565b600b81905550615a8182600c54613c6890919063ffffffff16565b600c81905550615a9c81600d54613c6890919063ffffffff16565b600d81905550615ab781600a54613d5890919063ffffffff16565b600a819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734e6f7420656e6f756768204c5020746f6b656e7320617661696c61626c6520746f2077697468647261775472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122063601c366a1d5245b9a8f18849e484128bc1c8a4750b9e6d2b9bc2bff00af2b364736f6c634300060c0033
Deployed Bytecode
0x6080604052600436106102975760003560e01c806370a082311161015a578063b6c52324116100c1578063cea269581161007a578063cea2695814610e14578063da12e6b814610e4f578063dd46706414610e7c578063dd62ed3e14610eb7578063ea2f0b3714610f3c578063f2fde38b14610f8d5761029e565b8063b6c5232414610cfa578063c0b0fda214610d25578063c365c69014610d50578063c49b9a8014610d7b578063c802688314610db8578063cb5fac4814610dcf5761029e565b80638ee88c53116101135780638ee88c5314610b0b57806395d89b4114610b46578063a3b798db14610bd6578063a457c2d714610c01578063a69df4b514610c72578063a9059cbb14610c895761029e565b806370a0823114610991578063715018a6146109f657806376a8477514610a0d5780637d1db4a514610a3857806388f8202014610a635780638da5cb5b14610aca5761029e565b80633b124fe7116101fe57806349bd5a5e116101b757806349bd5a5e146108155780634a74bb02146108565780634d4301541461088357806352390c02146108ae5780635342acb4146108ff5780636bc87c3a146109665761029e565b80633b124fe7146106835780633bd5d173146106ae5780633f3cf56c146106e957806342b3ff1b1461072e578063437823ec146107695780634549b039146107ba5761029e565b806318160ddd1161025057806318160ddd1461048857806323b872dd146104b35780632d83811914610544578063313ce567146105935780633685d419146105c157806339509351146106125761029e565b806303c72c6b146102a3578063061c82d0146102e057806306fdde031461031b578063095ea7b3146103ab57806313114a9d1461041c5780631694505e146104475761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102de600480360360208110156102c657600080fd5b81019080803515159060200190929190505050610fde565b005b3480156102ec57600080fd5b506103196004803603602081101561030357600080fd5b81019080803590602001909291905050506110c3565b005b34801561032757600080fd5b50610330611195565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b757600080fd5b50610404600480360360408110156103ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611237565b60405180821515815260200191505060405180910390f35b34801561042857600080fd5b50610431611255565b6040518082815260200191505060405180910390f35b34801561045357600080fd5b5061045c61125f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561049457600080fd5b5061049d611283565b6040518082815260200191505060405180910390f35b3480156104bf57600080fd5b5061052c600480360360608110156104d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128d565b60405180821515815260200191505060405180910390f35b34801561055057600080fd5b5061057d6004803603602081101561056757600080fd5b8101908080359060200190929190505050611366565b6040518082815260200191505060405180910390f35b34801561059f57600080fd5b506105a86113ea565b604051808260ff16815260200191505060405180910390f35b3480156105cd57600080fd5b50610610600480360360208110156105e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611401565b005b34801561061e57600080fd5b5061066b6004803603604081101561063557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061178b565b60405180821515815260200191505060405180910390f35b34801561068f57600080fd5b5061069861183e565b6040518082815260200191505060405180910390f35b3480156106ba57600080fd5b506106e7600480360360208110156106d157600080fd5b8101908080359060200190929190505050611844565b005b3480156106f557600080fd5b5061072c6004803603604081101561070c57600080fd5b8101908080359060200190929190803590602001909291905050506119d6565b005b34801561073a57600080fd5b506107676004803603602081101561075157600080fd5b8101908080359060200190929190505050611ad5565b005b34801561077557600080fd5b506107b86004803603602081101561078c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ba7565b005b3480156107c657600080fd5b506107ff600480360360408110156107dd57600080fd5b8101908080359060200190929190803515159060200190929190505050611cca565b6040518082815260200191505060405180910390f35b34801561082157600080fd5b5061082a611d83565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561086257600080fd5b5061086b611da7565b60405180821515815260200191505060405180910390f35b34801561088f57600080fd5b50610898611dba565b6040518082815260200191505060405180910390f35b3480156108ba57600080fd5b506108fd600480360360208110156108d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dc0565b005b34801561090b57600080fd5b5061094e6004803603602081101561092257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120da565b60405180821515815260200191505060405180910390f35b34801561097257600080fd5b5061097b612130565b6040518082815260200191505060405180910390f35b34801561099d57600080fd5b506109e0600480360360208110156109b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612136565b6040518082815260200191505060405180910390f35b348015610a0257600080fd5b50610a0b612221565b005b348015610a1957600080fd5b50610a226123a7565b6040518082815260200191505060405180910390f35b348015610a4457600080fd5b50610a4d61247b565b6040518082815260200191505060405180910390f35b348015610a6f57600080fd5b50610ab260048036036020811015610a8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612481565b60405180821515815260200191505060405180910390f35b348015610ad657600080fd5b50610adf6124d7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b1757600080fd5b50610b4460048036036020811015610b2e57600080fd5b8101908080359060200190929190505050612500565b005b348015610b5257600080fd5b50610b5b6125d2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b9b578082015181840152602081019050610b80565b50505050905090810190601f168015610bc85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610be257600080fd5b50610beb612674565b6040518082815260200191505060405180910390f35b348015610c0d57600080fd5b50610c5a60048036036040811015610c2457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061267a565b60405180821515815260200191505060405180910390f35b348015610c7e57600080fd5b50610c87612747565b005b348015610c9557600080fd5b50610ce260048036036040811015610cac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612964565b60405180821515815260200191505060405180910390f35b348015610d0657600080fd5b50610d0f612982565b6040518082815260200191505060405180910390f35b348015610d3157600080fd5b50610d3a61298c565b6040518082815260200191505060405180910390f35b348015610d5c57600080fd5b50610d65612992565b6040518082815260200191505060405180910390f35b348015610d8757600080fd5b50610db660048036036020811015610d9e57600080fd5b81019080803515159060200190929190505050612998565b005b348015610dc457600080fd5b50610dcd612ab6565b005b348015610ddb57600080fd5b50610e1260048036036040811015610df257600080fd5b810190808035906020019092919080359060200190929190505050612d5a565b005b348015610e2057600080fd5b50610e4d60048036036020811015610e3757600080fd5b8101908080359060200190929190505050612e92565b005b348015610e5b57600080fd5b50610e64612f64565b60405180821515815260200191505060405180910390f35b348015610e8857600080fd5b50610eb560048036036020811015610e9f57600080fd5b8101908080359060200190929190505050612f77565b005b348015610ec357600080fd5b50610f2660048036036040811015610eda57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613168565b6040518082815260200191505060405180910390f35b348015610f4857600080fd5b50610f8b60048036036020811015610f5f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131ef565b005b348015610f9957600080fd5b50610fdc60048036036020811015610fb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613312565b005b610fe661351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601a60006101000a81548160ff02191690831515021790555050565b6110cb61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b6060600e8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561122d5780601f106112025761010080835404028352916020019161122d565b820191906000526020600020905b81548152906001019060200180831161121057829003601f168201915b5050505050905090565b600061124b61124461351d565b8484613525565b6001905092915050565b6000600c54905090565b7f00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f81565b6000600a54905090565b600061129a84848461371c565b61135b846112a661351d565b61135685604051806060016040528060288152602001615bcc60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061130c61351d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b339092919063ffffffff16565b613525565b600190509392505050565b6000600b548211156113c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615ae7602a913960400191505060405180910390fd5b60006113cd613bf3565b90506113e28184613c1e90919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b61140961351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600880549050811015611787578173ffffffffffffffffffffffffffffffffffffffff16600882815481106115bc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561177a5760086001600880549050038154811061161857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061165057fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061174057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611787565b808060010191505061158b565b5050565b600061183461179861351d565b8461182f85600560006117a961351d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b613525565b6001905092915050565b60115481565b600061184e61351d565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615c66602c913960400191505060405180910390fd5b60006118fe83613cf0565b505050505050905061195881600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119b081600b54613d5890919063ffffffff16565b600b819055506119cb83600c54613c6890919063ffffffff16565b600c81905550505050565b6119de61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611acb60028201600a0a611abd84600a54613da290919063ffffffff16565b613c1e90919063ffffffff16565b6018819055505050565b611add61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060178190555050565b611baf61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a54831115611d44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611d65576000611d5484613cf0565b505050505050905080915050611d7d565b6000611d7084613cf0565b5050505050915050809150505b92915050565b7f0000000000000000000000001b40f650c3a5f1a6e8ccc2ee394e9b1e7a4b24d381565b601c60019054906101000a900460ff1681565b60175481565b611dc861351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561201c57611fd8600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611366565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60155481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121d157600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061221c565b612219600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611366565b90505b919050565b61222961351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000807f0000000000000000000000001b40f650c3a5f1a6e8ccc2ee394e9b1e7a4b24d3905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561243657600080fd5b505afa15801561244a573d6000803e3d6000fd5b505050506040513d602081101561246057600080fd5b81019080805190602001909291905050509050809250505090565b60185481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61250861351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b6060600f8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561266a5780601f1061263f5761010080835404028352916020019161266a565b820191906000526020600020905b81548152906001019060200180831161264d57829003601f168201915b5050505050905090565b601b5481565b600061273d61268761351d565b8461273885604051806060016040528060258152602001615cb560259139600560006126b161351d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b339092919063ffffffff16565b613525565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615c926023913960400191505060405180910390fd5b6002544211612864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061297861297161351d565b848461371c565b6001905092915050565b6000600254905090565b60135481565b60195481565b6129a061351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b612abe61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60007f0000000000000000000000001b40f650c3a5f1a6e8ccc2ee394e9b1e7a4b24d3905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c0c57600080fd5b505afa158015612c20573d6000803e3d6000fd5b505050506040513d6020811015612c3657600080fd5b8101908080519060200190929190505050905060008111612ca2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615b59602a913960400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612cc66124d7565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612d1a57600080fd5b505af1158015612d2e573d6000803e3d6000fd5b505050506040513d6020811015612d4457600080fd5b8101908080519060200190929190505050505050565b612d6261351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612e4f60028201600a0a612e4184600a54613da290919063ffffffff16565b613c1e90919063ffffffff16565b601d819055507f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c00601d546040518082815260200191505060405180910390a15050565b612e9a61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060138190555050565b601a60009054906101000a900460ff1681565b612f7f61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461303f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6131f761351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61331a61351d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613460576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615b116026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615c426024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615b376022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615c1d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613828576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615ac46023913960400191505060405180910390fd5b60008111613881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615bf46029913960400191505060405180910390fd5b6138896124d7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156138f757506138c76124d7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561395857601854811115613957576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615b836028913960400191505060405180910390fd5b5b600061396330612136565b90506000601d5482101590508080156139895750601c60009054906101000a900460ff16155b80156139e157507f0000000000000000000000001b40f650c3a5f1a6e8ccc2ee394e9b1e7a4b24d373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156139f95750601c60019054906101000a900460ff165b15613a6e576000613a286064613a1a60175486613da290919063ffffffff16565b613c1e90919063ffffffff16565b9050613a3381613e28565b613a4e613a498285613d5890919063ffffffff16565b613f2a565b601a60009054906101000a900460ff1615613a6c57613a6b61400c565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b155750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b1f57600090505b613b2b868686846141c5565b505050505050565b6000838311158290613be0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ba5578082015181840152602081019050613b8a565b50505050905090810190601f168015613bd25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613c006144d6565b91509150613c178183613c1e90919063ffffffff16565b9250505090565b6000613c6083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614767565b905092915050565b600080828401905083811015613ce6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000806000613d0a8c61482d565b93509350935093506000806000613d2b8f878787613d26613bf3565b6148ac565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b6000613d9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b33565b905092915050565b600080831415613db55760009050613e22565b6000828402905082848281613dc657fe5b0414613e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615bab6021913960400191505060405180910390fd5b809150505b92915050565b613e55307f0000000000000000000000001b40f650c3a5f1a6e8ccc2ee394e9b1e7a4b24d38360006141c5565b7f0000000000000000000000001b40f650c3a5f1a6e8ccc2ee394e9b1e7a4b24d373ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ebd57600080fd5b505af1158015613ed1573d6000803e3d6000fd5b50505050613eea81601954613c6890919063ffffffff16565b6019819055507f8765d2bb982ed6ee74d2b03c76c9c129aa4a4e3e6b17bd7cf7830088e9d49054816040518082815260200191505060405180910390a150565b6001601c60006101000a81548160ff0219169083151502179055506000613f5b600283613c1e90919063ffffffff16565b90506000613f728284613d5890919063ffffffff16565b90506000479050613f8283614960565b6000613f978247613d5890919063ffffffff16565b9050613fa38382614c0e565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000601c60006101000a81548160ff02191690831515021790555050565b60007f0000000000000000000000001b40f650c3a5f1a6e8ccc2ee394e9b1e7a4b24d3905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561409a57600080fd5b505afa1580156140ae573d6000803e3d6000fd5b505050506040513d60208110156140c457600080fd5b810190808051906020019092919050505090506140ec81601b54613c6890919063ffffffff16565b601b819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561418557600080fd5b505af1158015614199573d6000803e3d6000fd5b505050506040513d60208110156141af57600080fd5b8101908080519060200190929190505050505050565b806141d3576141d2614d58565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156142765750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561428b57614286848484614dba565b6144c2565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561432e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143435761433e848484615046565b6144c1565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156143e75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156143fc576143f78484846152d2565b6144c0565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561449e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156144b3576144ae8484846154c9565b6144bf565b6144be8484846152d2565b5b5b5b5b806144d0576144cf6157ea565b5b50505050565b6000806000600b5490506000600a54905060005b60088054905081101561472a5782600360006008848154811061450957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806145f0575081600460006008848154811061458857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561460757600b54600a5494509450505050614763565b614690600360006008848154811061461b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613d5890919063ffffffff16565b925061471b60046000600884815481106146a657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613d5890919063ffffffff16565b915080806001019150506144ea565b50614742600a54600b54613c1e90919063ffffffff16565b82101561475a57600b54600a54935093505050614763565b81819350935050505b9091565b60008083118290614813576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156147d85780820151818401526020810190506147bd565b50505050905090810190601f1680156148055780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161481f57fe5b049050809150509392505050565b600080600080600061483e86615807565b9050600061484b87615838565b9050600061485888615869565b905060006148938261488585614877888e613d5890919063ffffffff16565b613d5890919063ffffffff16565b613d5890919063ffffffff16565b9050808484849750975097509750505050509193509193565b6000806000806148c5858a613da290919063ffffffff16565b905060006148dc868a613da290919063ffffffff16565b905060006148f3878a613da290919063ffffffff16565b9050600061490a888a613da290919063ffffffff16565b905060006149458261493785614929888a613d5890919063ffffffff16565b613d5890919063ffffffff16565b613d5890919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6060600267ffffffffffffffff8111801561497a57600080fd5b506040519080825280602002602001820160405280156149a95781602001602082028036833780820191505090505b50905030816000815181106149ba57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015614a5a57600080fd5b505afa158015614a6e573d6000803e3d6000fd5b505050506040513d6020811015614a8457600080fd5b810190808051906020019092919050505081600181518110614aa257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614b07307f00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f84613525565b7f00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614bc9578082015181840152602081019050614bae565b505050509050019650505050505050600060405180830381600087803b158015614bf257600080fd5b505af1158015614c06573d6000803e3d6000fd5b505050505050565b614c39307f00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f84613525565b7f00000000000000000000000005ff2b0db69458a0750badebc4f9e13add608c7f73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015614d0157600080fd5b505af1158015614d15573d6000803e3d6000fd5b50505050506040513d6060811015614d2c57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b6000601154148015614d6c57506000601354145b8015614d7a57506000601554145b15614d8457614db8565b6011546012819055506013546014819055506015546016819055506000601181905550600060138190555060006015819055505b565b6000614dc4613bf3565b90506000806000806000806000614dda89613cf0565b96509650965096509650965096506000614dfd8984613da290919063ffffffff16565b9050614e518a600460008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ee688600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f7b87600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fc78261589a565b614fd386828686615a3f565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b6000615050613bf3565b9050600080600080600080600061506689613cf0565b965096509650965096509650965060006150898984613da290919063ffffffff16565b90506150dd88600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061517285600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061520787600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152538261589a565b61525f86828686615a3f565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b60006152dc613bf3565b905060008060008060008060006152f289613cf0565b965096509650965096509650965060006153158984613da290919063ffffffff16565b905061536988600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153fe87600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061544a8261589a565b61545686828686615a3f565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b60006154d3613bf3565b905060008060008060008060006154e989613cf0565b9650965096509650965096509650600061550c8984613da290919063ffffffff16565b90506155608a600460008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155f588600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d5890919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061568a85600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061571f87600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061576b8261589a565b61577786828686615a3f565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b601254601181905550601454601381905550601654601581905550565b6000615831606461582360115485613da290919063ffffffff16565b613c1e90919063ffffffff16565b9050919050565b6000615862606461585460135485613da290919063ffffffff16565b613c1e90919063ffffffff16565b9050919050565b6000615893606461588560155485613da290919063ffffffff16565b613c1e90919063ffffffff16565b9050919050565b60006158a4613bf3565b905060006158bb8284613da290919063ffffffff16565b905061590f81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615a3a576159f683600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c6890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b615a6683615a5886600b54613d5890919063ffffffff16565b613d5890919063ffffffff16565b600b81905550615a8182600c54613c6890919063ffffffff16565b600c81905550615a9c81600d54613c6890919063ffffffff16565b600d81905550615ab781600a54613d5890919063ffffffff16565b600a819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734e6f7420656e6f756768204c5020746f6b656e7320617661696c61626c6520746f2077697468647261775472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122063601c366a1d5245b9a8f18849e484128bc1c8a4750b9e6d2b9bc2bff00af2b364736f6c634300060c0033
Deployed Bytecode Sourcemap
25743:22165:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47159:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46455:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28780:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29692:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30813:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27343:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29057:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29861:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31740:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28966:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32456:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30182:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26623:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30908:378;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46939:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46801:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46218:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31294:438;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27399:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27563:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27107:42;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32001:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46087:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26890:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29160:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16422:148;;;;;;;;;;;;;:::i;:::-;;37633:207;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27168:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30685:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15779:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;46671:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28871:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27492:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30408:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17428:293;;;;;;;;;;;;;:::i;:::-;;29366:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16977:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26716:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27290:44;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47640:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37848:353;;;;;;;;;;;;;:::i;:::-;;47278:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46561:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27446:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17142:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29541:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;46337:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16725:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;47159:110;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47256:5:::1;47234:19;;:27;;;;;;;;;;;;;;;;;;47159:110:::0;:::o;46455:98::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46539:6:::1;46529:7;:16;;;;46455:98:::0;:::o;28780:83::-;28817:13;28850:5;28843:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28780:83;:::o;29692:161::-;29767:4;29784:39;29793:12;:10;:12::i;:::-;29807:7;29816:6;29784:8;:39::i;:::-;29841:4;29834:11;;29692:161;;;;:::o;30813:87::-;30855:7;30882:10;;30875:17;;30813:87;:::o;27343:49::-;;;:::o;29057:95::-;29110:7;29137;;29130:14;;29057:95;:::o;29861:313::-;29959:4;29976:36;29986:6;29994:9;30005:6;29976:9;:36::i;:::-;30023:121;30032:6;30040:12;:10;:12::i;:::-;30054:89;30092:6;30054:89;;;;;;;;;;;;;;;;;:11;:19;30066:6;30054:19;;;;;;;;;;;;;;;:33;30074:12;:10;:12::i;:::-;30054:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;30023:8;:121::i;:::-;30162:4;30155:11;;29861:313;;;;;:::o;31740:253::-;31806:7;31845;;31834;:18;;31826:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31910:19;31933:10;:8;:10::i;:::-;31910:33;;31961:24;31973:11;31961:7;:11;;:24;;;;:::i;:::-;31954:31;;;31740:253;;;:::o;28966:83::-;29007:5;29032:9;;;;;;;;;;;29025:16;;28966:83;:::o;32456:479::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32538:11:::1;:20;32550:7;32538:20;;;;;;;;;;;;;;;;;;;;;;;;;32530:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;32606:9;32601:327;32625:9;:16;;;;32621:1;:20;32601:327;;;32683:7;32667:23;;:9;32677:1;32667:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;32663:254;;;32726:9;32755:1;32736:9;:16;;;;:20;32726:31;;;;;;;;;;;;;;;;;;;;;;;;;32711:9;32721:1;32711:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;32795:1;32776:7;:16;32784:7;32776:16;;;;;;;;;;;;;;;:20;;;;32838:5;32815:11;:20;32827:7;32815:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;32862:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32896:5;;32663:254;32643:3;;;;;;;32601:327;;;;32456:479:::0;:::o;30182:218::-;30270:4;30287:83;30296:12;:10;:12::i;:::-;30310:7;30319:50;30358:10;30319:11;:25;30331:12;:10;:12::i;:::-;30319:25;;;;;;;;;;;;;;;:34;30345:7;30319:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;30287:8;:83::i;:::-;30388:4;30381:11;;30182:218;;;;:::o;26623:26::-;;;;:::o;30908:378::-;30960:14;30977:12;:10;:12::i;:::-;30960:29;;31009:11;:19;31021:6;31009:19;;;;;;;;;;;;;;;;;;;;;;;;;31008:20;31000:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31089:15;31114:19;31125:7;31114:10;:19::i;:::-;31088:45;;;;;;;;31162:28;31182:7;31162;:15;31170:6;31162:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31144:7;:15;31152:6;31144:15;;;;;;;;;;;;;;;:46;;;;31211:20;31223:7;31211;;:11;;:20;;;;:::i;:::-;31201:7;:30;;;;31255:23;31270:7;31255:10;;:14;;:23;;;;:::i;:::-;31242:10;:36;;;;30908:378;;;:::o;46939:212::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47056:87:::1;47130:1;47113:13;47105:26;47100:2;:32;47056:25;47068:12;47056:7;;:11;;:25;;;;:::i;:::-;:29;;:87;;;;:::i;:::-;47041:12;:102;;;;46939:212:::0;;:::o;46801:130::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46916:7:::1;46891:22;:32;;;;46801:130:::0;:::o;46218:111::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46317:4:::1;46287:18;:27;46306:7;46287:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;46218:111:::0;:::o;31294:438::-;31384:7;31423;;31412;:18;;31404:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31482:17;31477:248;;31517:15;31542:19;31553:7;31542:10;:19::i;:::-;31516:45;;;;;;;;31583:7;31576:14;;;;;31477:248;31625:23;31657:19;31668:7;31657:10;:19::i;:::-;31623:53;;;;;;;;31698:15;31691:22;;;31294:438;;;;;:::o;27399:38::-;;;:::o;27563:41::-;;;;;;;;;;;;;:::o;27107:42::-;;;;:::o;32001:447::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32198:11:::1;:20;32210:7;32198:20;;;;;;;;;;;;;;;;;;;;;;;;;32197:21;32189:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;32283:1;32264:7;:16;32272:7;32264:16;;;;;;;;;;;;;;;;:20;32261:108;;;32320:37;32340:7;:16;32348:7;32340:16;;;;;;;;;;;;;;;;32320:19;:37::i;:::-;32301:7;:16;32309:7;32301:16;;;;;;;;;;;;;;;:56;;;;32261:108;32402:4;32379:11;:20;32391:7;32379:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;32417:9;32432:7;32417:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32001:447:::0;:::o;46087:123::-;46151:4;46175:18;:27;46194:7;46175:27;;;;;;;;;;;;;;;;;;;;;;;;;46168:34;;46087:123;;;:::o;26890:32::-;;;;:::o;29160:198::-;29226:7;29250:11;:20;29262:7;29250:20;;;;;;;;;;;;;;;;;;;;;;;;;29246:49;;;29279:7;:16;29287:7;29279:16;;;;;;;;;;;;;;;;29272:23;;;;29246:49;29313:37;29333:7;:16;29341:7;29333:16;;;;;;;;;;;;;;;;29313:19;:37::i;:::-;29306:44;;29160:198;;;;:::o;16422:148::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16529:1:::1;16492:40;;16513:6;::::0;::::1;;;;;;;;16492:40;;;;;;;;;;;;16560:1;16543:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16422:148::o:0;37633:207::-;37680:7;37700:18;37734:13;37700:48;;37759:14;37776:5;:15;;;37800:4;37776:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37759:47;;37826:6;37819:13;;;;37633:207;:::o;27168:41::-;;;;:::o;30685:120::-;30753:4;30777:11;:20;30789:7;30777:20;;;;;;;;;;;;;;;;;;;;;;;;;30770:27;;30685:120;;;:::o;15779:79::-;15817:7;15844:6;;;;;;;;;;;15837:13;;15779:79;:::o;46671:122::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46773:12:::1;46757:13;:28;;;;46671:122:::0;:::o;28871:87::-;28910:13;28943:7;28936:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28871:87;:::o;27492:34::-;;;;:::o;30408:269::-;30501:4;30518:129;30527:12;:10;:12::i;:::-;30541:7;30550:96;30589:15;30550:96;;;;;;;;;;;;;;;;;:11;:25;30562:12;:10;:12::i;:::-;30550:25;;;;;;;;;;;;;;;:34;30576:7;30550:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;30518:8;:129::i;:::-;30665:4;30658:11;;30408:269;;;;:::o;17428:293::-;17498:10;17480:28;;:14;;;;;;;;;;;:28;;;17472:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17573:9;;17567:3;:15;17559:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17664:14;;;;;;;;;;;17635:44;;17656:6;;;;;;;;;;17635:44;;;;;;;;;;;;17699:14;;;;;;;;;;;17690:6;;:23;;;;;;;;;;;;;;;;;;17428:293::o;29366:167::-;29444:4;29461:42;29471:12;:10;:12::i;:::-;29485:9;29496:6;29461:9;:42::i;:::-;29521:4;29514:11;;29366:167;;;;:::o;16977:89::-;17022:7;17049:9;;17042:16;;16977:89;:::o;26716:27::-;;;;:::o;27290:44::-;;;;:::o;47640:171::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47741:8:::1;47717:21;;:32;;;;;;;;;;;;;;;;;;47765:38;47794:8;47765:38;;;;;;;;;;;;;;;;;;;;47640:171:::0;:::o;37848:353::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37965:18:::1;37999:13;37965:48;;38024:14;38041:5;:15;;;38065:4;38041:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;38024:47;;38101:1;38092:6;:10;38084:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38162:5;:14;;;38177:7;:5;:7::i;:::-;38186:6;38162:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;16061:1;;37848:353::o:0;47278:354::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47441:118:::1;47545:1;47514:27;47506:40;47501:2;:46;47441:40;47453:27;47441:7;;:11;;:40;;;;:::i;:::-;:44;;:118;;;;:::i;:::-;47419:19;:140;;;;47576:47;47603:19;;47576:47;;;;;;;;;;;;;;;;;;47278:354:::0;;:::o;46561:102::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46648:7:::1;46637:8;:18;;;;46561:102:::0;:::o;27446:39::-;;;;;;;;;;;;;:::o;17142:214::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17223:6:::1;::::0;::::1;;;;;;;;17206:14;;:23;;;;;;;;;;;;;;;;;;17257:1;17240:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17288:4;17282:3;:10;17270:9;:22;;;;17345:1;17308:40;;17329:6;::::0;::::1;;;;;;;;17308:40;;;;;;;;;;;;17142:214:::0;:::o;29541:143::-;29622:7;29649:11;:18;29661:5;29649:18;;;;;;;;;;;;;;;:27;29668:7;29649:27;;;;;;;;;;;;;;;;29642:34;;29541:143;;;;:::o;46337:110::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46434:5:::1;46404:18;:27;46423:7;46404:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;46337:110:::0;:::o;16725:244::-;16001:12;:10;:12::i;:::-;15991:22;;:6;;;;;;;;;;:22;;;15983:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16834:1:::1;16814:22;;:8;:22;;;;16806:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16924:8;16895:38;;16916:6;::::0;::::1;;;;;;;;16895:38;;;;;;;;;;;;16953:8;16944:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16725:244:::0;:::o;172:106::-;225:15;260:10;253:17;;172:106;:::o;32943:337::-;33053:1;33036:19;;:5;:19;;;;33028:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33134:1;33115:21;;:7;:21;;;;33107:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33218:6;33188:11;:18;33200:5;33188:18;;;;;;;;;;;;;;;:27;33207:7;33188:27;;;;;;;;;;;;;;;:36;;;;33256:7;33240:32;;33249:5;33240:32;;;33265:6;33240:32;;;;;;;;;;;;;;;;;;32943:337;;;:::o;33288:1952::-;33426:1;33410:18;;:4;:18;;;;33402:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33503:1;33489:16;;:2;:16;;;;33481:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33573:1;33564:6;:10;33556:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33642:7;:5;:7::i;:::-;33634:15;;:4;:15;;;;:32;;;;;33659:7;:5;:7::i;:::-;33653:13;;:2;:13;;;;33634:32;33631:125;;;33699:12;;33689:6;:22;;33681:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33631:125;34051:28;34082:24;34100:4;34082:9;:24::i;:::-;34051:55;;34117:24;34168:19;;34144:20;:43;;34117:70;;34216:19;:53;;;;;34253:16;;;;;;;;;;;34252:17;34216:53;:91;;;;;34294:13;34286:21;;:4;:21;;;;34216:91;:129;;;;;34324:21;;;;;;;;;;;34216:129;34198:633;;;34408:22;34433:59;34486:5;34433:48;34458:22;;34433:20;:24;;:48;;;;:::i;:::-;:52;;:59;;;;:::i;:::-;34408:84;;34541:41;34567:14;34541:25;:41::i;:::-;34626:56;34641:40;34666:14;34641:20;:24;;:40;;;;:::i;:::-;34626:14;:56::i;:::-;34767:19;;;;;;;;;;;34764:55;;;34805:14;:12;:14::i;:::-;34764:55;34198:633;;34904:12;34919:4;34904:19;;35023:18;:24;35042:4;35023:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;35051:18;:22;35070:2;35051:22;;;;;;;;;;;;;;;;;;;;;;;;;35023:50;35020:96;;;35099:5;35089:15;;35020:96;35194:38;35209:4;35214:2;35217:6;35224:7;35194:14;:38::i;:::-;33288:1952;;;;;;:::o;4986:192::-;5072:7;5105:1;5100;:6;;5108:12;5092:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5132:9;5148:1;5144;:5;5132:17;;5169:1;5162:8;;;4986:192;;;;;:::o;43582:163::-;43623:7;43644:15;43661;43680:19;:17;:19::i;:::-;43643:56;;;;43717:20;43729:7;43717;:11;;:20;;;;:::i;:::-;43710:27;;;;43582:163;:::o;6384:132::-;6442:7;6469:39;6473:1;6476;6469:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6462:46;;6384:132;;;;:::o;4083:181::-;4141:7;4161:9;4177:1;4173;:5;4161:17;;4202:1;4197;:6;;4189:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4255:1;4248:8;;;4083:181;;;;:::o;42188:457::-;42247:7;42256;42265;42274;42283;42292;42301;42322:23;42347:12;42361:13;42376:18;42398:20;42410:7;42398:11;:20::i;:::-;42321:97;;;;;;;;42430:15;42447:23;42472:12;42488:57;42500:7;42509:4;42515:5;42522:10;42534;:8;:10::i;:::-;42488:11;:57::i;:::-;42429:116;;;;;;42564:7;42573:15;42590:4;42596:15;42613:4;42619:5;42626:10;42556:81;;;;;;;;;;;;;;;;;;;;;42188:457;;;;;;;;;:::o;4547:136::-;4605:7;4632:43;4636:1;4639;4632:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4625:50;;4547:136;;;;:::o;5437:471::-;5495:7;5745:1;5740;:6;5736:47;;;5770:1;5763:8;;;;5736:47;5795:9;5811:1;5807;:5;5795:17;;5840:1;5835;5831;:5;;;;;;:10;5823:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5899:1;5892:8;;;5437:471;;;;;:::o;44679:409::-;44815:68;44838:4;44845:13;44860:16;44877:5;44815:14;:68::i;:::-;44907:13;44894:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44971:51;45005:16;44971:29;;:33;;:51;;;;:::i;:::-;44939:29;:83;;;;45038:42;45063:16;45038:42;;;;;;;;;;;;;;;;;;44679:409;:::o;35248:977::-;28026:4;28007:16;;:23;;;;;;;;;;;;;;;;;;35384:12:::1;35399:27;35424:1;35399:20;:24;;:27;;;;:::i;:::-;35384:42;;35437:17;35457:30;35482:4;35457:20;:24;;:30;;;;:::i;:::-;35437:50;;35765:22;35790:21;35765:46;;35856:22;35873:4;35856:16;:22::i;:::-;36009:18;36030:41;36056:14;36030:21;:25;;:41;;;;:::i;:::-;36009:62;;36121:35;36134:9;36145:10;36121:12;:35::i;:::-;36174:43;36189:4;36195:10;36207:9;36174:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28041:1;;;;28072:5:::0;28053:16;;:24;;;;;;;;;;;;;;;;;;35248:977;:::o;37357:268::-;37400:19;37435:13;37400:49;;37460:14;37477:6;:16;;;37502:4;37477:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37460:48;;37541:31;37565:6;37541:19;;:23;;:31;;;;:::i;:::-;37519:19;:53;;;;37583:6;:15;;;37599:9;;;;;;;;;;;37610:6;37583:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37357:268;;:::o;38282:818::-;38393:7;38389:40;;38415:14;:12;:14::i;:::-;38389:40;38446:11;:19;38458:6;38446:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;38470:11;:22;38482:9;38470:22;;;;;;;;;;;;;;;;;;;;;;;;;38469:23;38446:46;38442:597;;;38509:48;38531:6;38539:9;38550:6;38509:21;:48::i;:::-;38442:597;;;38580:11;:19;38592:6;38580:19;;;;;;;;;;;;;;;;;;;;;;;;;38579:20;:46;;;;;38603:11;:22;38615:9;38603:22;;;;;;;;;;;;;;;;;;;;;;;;;38579:46;38575:464;;;38642:46;38662:6;38670:9;38681:6;38642:19;:46::i;:::-;38575:464;;;38711:11;:19;38723:6;38711:19;;;;;;;;;;;;;;;;;;;;;;;;;38710:20;:47;;;;;38735:11;:22;38747:9;38735:22;;;;;;;;;;;;;;;;;;;;;;;;;38734:23;38710:47;38706:333;;;38774:44;38792:6;38800:9;38811:6;38774:17;:44::i;:::-;38706:333;;;38840:11;:19;38852:6;38840:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;38863:11;:22;38875:9;38863:22;;;;;;;;;;;;;;;;;;;;;;;;;38840:45;38836:203;;;38902:48;38924:6;38932:9;38943:6;38902:21;:48::i;:::-;38836:203;;;38983:44;39001:6;39009:9;39020:6;38983:17;:44::i;:::-;38836:203;38706:333;38575:464;38442:597;39055:7;39051:41;;39077:15;:13;:15::i;:::-;39051:41;38282:818;;;;:::o;43753:555::-;43803:7;43812;43832:15;43850:7;;43832:25;;43868:15;43886:7;;43868:25;;43909:9;43904:289;43928:9;:16;;;;43924:1;:20;43904:289;;;43994:7;43970;:21;43978:9;43988:1;43978:12;;;;;;;;;;;;;;;;;;;;;;;;;43970:21;;;;;;;;;;;;;;;;:31;:66;;;;44029:7;44005;:21;44013:9;44023:1;44013:12;;;;;;;;;;;;;;;;;;;;;;;;;44005:21;;;;;;;;;;;;;;;;:31;43970:66;43966:97;;;44046:7;;44055;;44038:25;;;;;;;;;43966:97;44088:34;44100:7;:21;44108:9;44118:1;44108:12;;;;;;;;;;;;;;;;;;;;;;;;;44100:21;;;;;;;;;;;;;;;;44088:7;:11;;:34;;;;:::i;:::-;44078:44;;44147:34;44159:7;:21;44167:9;44177:1;44167:12;;;;;;;;;;;;;;;;;;;;;;;;;44159:21;;;;;;;;;;;;;;;;44147:7;:11;;:34;;;;:::i;:::-;44137:44;;43946:3;;;;;;;43904:289;;;;44217:20;44229:7;;44217;;:11;;:20;;;;:::i;:::-;44207:7;:30;44203:61;;;44247:7;;44256;;44239:25;;;;;;;;44203:61;44283:7;44292;44275:25;;;;;;43753:555;;;:::o;7012:278::-;7098:7;7130:1;7126;:5;7133:12;7118:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7157:9;7173:1;7169;:5;;;;;;7157:17;;7281:1;7274:8;;;7012:278;;;;;:::o;42653:409::-;42713:7;42722;42731;42740;42760:12;42775:24;42791:7;42775:15;:24::i;:::-;42760:39;;42810:13;42826:25;42843:7;42826:16;:25::i;:::-;42810:41;;42862:18;42883:30;42905:7;42883:21;:30::i;:::-;42862:51;;42924:23;42950:44;42983:10;42950:28;42972:5;42950:17;42962:4;42950:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:44;;;;:::i;:::-;42924:70;;43013:15;43030:4;43036:5;43043:10;43005:49;;;;;;;;;;;;42653:409;;;;;:::o;43070:504::-;43200:7;43209;43218;43238:15;43256:24;43268:11;43256:7;:11;;:24;;;;:::i;:::-;43238:42;;43291:12;43306:21;43315:11;43306:4;:8;;:21;;;;:::i;:::-;43291:36;;43338:13;43354:22;43364:11;43354:5;:9;;:22;;;;:::i;:::-;43338:38;;43387:18;43408:27;43423:11;43408:10;:14;;:27;;;;:::i;:::-;43387:48;;43446:23;43472:44;43505:10;43472:28;43494:5;43472:17;43484:4;43472:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:44;;;;:::i;:::-;43446:70;;43535:7;43544:15;43561:4;43527:39;;;;;;;;;;;43070:504;;;;;;;;;:::o;36233:589::-;36359:21;36397:1;36383:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36359:40;;36428:4;36410;36415:1;36410:7;;;;;;;;;;;;;:23;;;;;;;;;;;36454:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36444:4;36449:1;36444:7;;;;;;;;;;;;;:32;;;;;;;;;;;36489:62;36506:4;36521:15;36539:11;36489:8;:62::i;:::-;36590:15;:66;;;36671:11;36697:1;36741:4;36768;36788:15;36590:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36233:589;;:::o;36830:519::-;36978:62;36995:4;37010:15;37028:11;36978:8;:62::i;:::-;37083:15;:31;;;37122:9;37155:4;37175:11;37201:1;37244;37295:4;37315:15;37083:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36830:519;;:::o;45596:312::-;45653:1;45642:7;;:12;:29;;;;;45670:1;45658:8;;:13;45642:29;:51;;;;;45692:1;45675:13;;:18;45642:51;45639:63;;;45695:7;;45639:63;45732:7;;45714:15;:25;;;;45769:8;;45750:16;:27;;;;45812:13;;45788:21;:37;;;;45848:1;45838:7;:11;;;;45871:1;45860:8;:12;;;;45899:1;45883:13;:17;;;;45596:312;:::o;40447:686::-;40549:19;40572:10;:8;:10::i;:::-;40549:33;;40594:15;40611:23;40636:12;40650:23;40675:12;40689:13;40704:18;40726:19;40737:7;40726:10;:19::i;:::-;40593:152;;;;;;;;;;;;;;40756:13;40773:22;40783:11;40773:5;:9;;:22;;;;:::i;:::-;40756:39;;40824:28;40844:7;40824;:15;40832:6;40824:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40806:7;:15;40814:6;40806:15;;;;;;;;;;;;;;;:46;;;;40881:28;40901:7;40881;:15;40889:6;40881:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40863:7;:15;40871:6;40863:15;;;;;;;;;;;;;;;:46;;;;40941:39;40964:15;40941:7;:18;40949:9;40941:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40920:7;:18;40928:9;40920:18;;;;;;;;;;;;;;;:60;;;;40991:26;41006:10;40991:14;:26::i;:::-;41028:37;41040:4;41046:5;41053:4;41059:5;41028:11;:37::i;:::-;41098:9;41081:44;;41090:6;41081:44;;;41109:15;41081:44;;;;;;;;;;;;;;;;;;40447:686;;;;;;;;;;;;:::o;39741:698::-;39841:19;39864:10;:8;:10::i;:::-;39841:33;;39886:15;39903:23;39928:12;39942:23;39967:12;39981:13;39996:18;40018:19;40029:7;40018:10;:19::i;:::-;39885:152;;;;;;;;;;;;;;40048:13;40065:22;40075:11;40065:5;:9;;:22;;;;:::i;:::-;40048:39;;40116:28;40136:7;40116;:15;40124:6;40116:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40098:7;:15;40106:6;40098:15;;;;;;;;;;;;;;;:46;;;;40176:39;40199:15;40176:7;:18;40184:9;40176:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40155:7;:18;40163:9;40155:18;;;;;;;;;;;;;;;:60;;;;40247:39;40270:15;40247:7;:18;40255:9;40247:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40226:7;:18;40234:9;40226:18;;;;;;;;;;;;;;;:60;;;;40297:26;40312:10;40297:14;:26::i;:::-;40334:37;40346:4;40352:5;40359:4;40365:5;40334:11;:37::i;:::-;40404:9;40387:44;;40396:6;40387:44;;;40415:15;40387:44;;;;;;;;;;;;;;;;;;39741:698;;;;;;;;;;;;:::o;39108:625::-;39206:19;39229:10;:8;:10::i;:::-;39206:33;;39251:15;39268:23;39293:12;39307:23;39332:12;39346:13;39361:18;39383:19;39394:7;39383:10;:19::i;:::-;39250:152;;;;;;;;;;;;;;39413:13;39430:22;39440:11;39430:5;:9;;:22;;;;:::i;:::-;39413:39;;39481:28;39501:7;39481;:15;39489:6;39481:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;39463:7;:15;39471:6;39463:15;;;;;;;;;;;;;;;:46;;;;39541:39;39564:15;39541:7;:18;39549:9;39541:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;39520:7;:18;39528:9;39520:18;;;;;;;;;;;;;;;:60;;;;39591:26;39606:10;39591:14;:26::i;:::-;39628:37;39640:4;39646:5;39653:4;39659:5;39628:11;:37::i;:::-;39698:9;39681:44;;39690:6;39681:44;;;39709:15;39681:44;;;;;;;;;;;;;;;;;;39108:625;;;;;;;;;;;;:::o;41141:757::-;41243:19;41266:10;:8;:10::i;:::-;41243:33;;41288:15;41305:23;41330:12;41344:23;41369:12;41383:13;41398:18;41420:19;41431:7;41420:10;:19::i;:::-;41287:152;;;;;;;;;;;;;;41450:13;41467:22;41477:11;41467:5;:9;;:22;;;;:::i;:::-;41450:39;;41518:28;41538:7;41518;:15;41526:6;41518:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41500:7;:15;41508:6;41500:15;;;;;;;;;;;;;;;:46;;;;41575:28;41595:7;41575;:15;41583:6;41575:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41557:7;:15;41565:6;41557:15;;;;;;;;;;;;;;;:46;;;;41635:39;41658:15;41635:7;:18;41643:9;41635:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41614:7;:18;41622:9;41614:18;;;;;;;;;;;;;;;:60;;;;41706:39;41729:15;41706:7;:18;41714:9;41706:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41685:7;:18;41693:9;41685:18;;;;;;;;;;;;;;;:60;;;;41756:26;41771:10;41756:14;:26::i;:::-;41793:37;41805:4;41811:5;41818:4;41824:5;41793:11;:37::i;:::-;41863:9;41846:44;;41855:6;41846:44;;;41874:15;41846:44;;;;;;;;;;;;;;;;;;41141:757;;;;;;;;;;;;:::o;45916:163::-;45970:15;;45960:7;:25;;;;46007:16;;45996:8;:27;;;;46050:21;;46034:13;:37;;;;45916:163::o;45096:154::-;45160:7;45187:55;45226:5;45187:20;45199:7;;45187;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;45180:62;;45096:154;;;:::o;45258:156::-;45323:7;45350:56;45390:5;45350:21;45362:8;;45350:7;:11;;:21;;;;:::i;:::-;:25;;:56;;;;:::i;:::-;45343:63;;45258:156;;;:::o;45422:166::-;45492:7;45519:61;45564:5;45519:26;45531:13;;45519:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;45512:68;;45422:166;;;:::o;44316:355::-;44379:19;44402:10;:8;:10::i;:::-;44379:33;;44423:18;44444:27;44459:11;44444:10;:14;;:27;;;;:::i;:::-;44423:48;;44507:38;44534:10;44507:7;:22;44523:4;44507:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;44482:7;:22;44498:4;44482:22;;;;;;;;;;;;;;;:63;;;;44559:11;:26;44579:4;44559:26;;;;;;;;;;;;;;;;;;;;;;;;;44556:107;;;44625:38;44652:10;44625:7;:22;44641:4;44625:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;44600:7;:22;44616:4;44600:22;;;;;;;;;;;;;;;:63;;;;44556:107;44316:355;;;:::o;41906:274::-;42014:28;42036:5;42014:17;42026:4;42014:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;42004:7;:38;;;;42066:20;42081:4;42066:10;;:14;;:20;;;;:::i;:::-;42053:10;:33;;;;42111:22;42127:5;42111:11;;:15;;:22;;;;:::i;:::-;42097:11;:36;;;;42154:18;42166:5;42154:7;;:11;;:18;;;;:::i;:::-;42144:7;:28;;;;41906:274;;;;:::o
Swarm Source
ipfs://63601c366a1d5245b9a8f18849e484128bc1c8a4750b9e6d2b9bc2bff00af2b3
Loading...
Loading
Loading...
Loading
OVERVIEW
AutoLP is a self-staking project with profit mechanism of 2% tax returned to holders.Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | BNB Chain (BNB) | 100.00% | $720.17 | 0.0315 | $22.7 |
[ 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.