More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 115 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 16283453 | 737 days ago | IN | 0 ETH | 0.00136189 | ||||
Approve | 13652875 | 1140 days ago | IN | 0 ETH | 0.00806889 | ||||
Approve | 13485380 | 1166 days ago | IN | 0 ETH | 0.00279277 | ||||
Approve | 13480615 | 1167 days ago | IN | 0 ETH | 0.00261314 | ||||
Approve | 13462990 | 1170 days ago | IN | 0 ETH | 0.00397391 | ||||
Approve | 13462885 | 1170 days ago | IN | 0 ETH | 0.00542238 | ||||
Approve | 13457988 | 1170 days ago | IN | 0 ETH | 0.00528137 | ||||
Approve | 13456449 | 1171 days ago | IN | 0 ETH | 0.00632339 | ||||
Transfer | 13456202 | 1171 days ago | IN | 0 ETH | 0.00901678 | ||||
Approve | 13455636 | 1171 days ago | IN | 0 ETH | 0.00554521 | ||||
Approve | 13455044 | 1171 days ago | IN | 0 ETH | 0.00761655 | ||||
Approve | 13454311 | 1171 days ago | IN | 0 ETH | 0.00276314 | ||||
Approve | 13454311 | 1171 days ago | IN | 0 ETH | 0.00276314 | ||||
Approve | 13454311 | 1171 days ago | IN | 0 ETH | 0.00276314 | ||||
Approve | 13453971 | 1171 days ago | IN | 0 ETH | 0.0018962 | ||||
Approve | 13452364 | 1171 days ago | IN | 0 ETH | 0.00376333 | ||||
Approve | 13452078 | 1171 days ago | IN | 0 ETH | 0.00363023 | ||||
Approve | 13451870 | 1171 days ago | IN | 0 ETH | 0.00234916 | ||||
Approve | 13451814 | 1171 days ago | IN | 0 ETH | 0.00242227 | ||||
Approve | 13451786 | 1171 days ago | IN | 0 ETH | 0.00327782 | ||||
Approve | 13451783 | 1171 days ago | IN | 0 ETH | 0.0029322 | ||||
Approve | 13451757 | 1171 days ago | IN | 0 ETH | 0.00259935 | ||||
Approve | 13451737 | 1171 days ago | IN | 0 ETH | 0.00247222 | ||||
Approve | 13451712 | 1171 days ago | IN | 0 ETH | 0.0029178 | ||||
Approve | 13451680 | 1171 days ago | IN | 0 ETH | 0.00310659 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
13652876 | 1140 days ago | 0.00091963 ETH | ||||
13652876 | 1140 days ago | 0.00091963 ETH | ||||
13652876 | 1140 days ago | 0.00067352 ETH | ||||
13652876 | 1140 days ago | 0.00067352 ETH | ||||
13652876 | 1140 days ago | 0.00093509 ETH | ||||
13652876 | 1140 days ago | 0.00093509 ETH | ||||
13652875 | 1140 days ago | 0.00567926 ETH | ||||
13652875 | 1140 days ago | 0.00567926 ETH | ||||
13652875 | 1140 days ago | 0.00567926 ETH | ||||
13652875 | 1140 days ago | 0.00567926 ETH | ||||
13568959 | 1153 days ago | 0.00880853 ETH | ||||
13568959 | 1153 days ago | 0.00880853 ETH | ||||
13485392 | 1166 days ago | 0.00425329 ETH | ||||
13485392 | 1166 days ago | 0.00425329 ETH | ||||
13480655 | 1167 days ago | 0.00841633 ETH | ||||
13480655 | 1167 days ago | 0.00841633 ETH | ||||
13479236 | 1167 days ago | 0.00282262 ETH | ||||
13479236 | 1167 days ago | 0.00282262 ETH | ||||
13471247 | 1168 days ago | 0.00440867 ETH | ||||
13471247 | 1168 days ago | 0.00440867 ETH | ||||
13466171 | 1169 days ago | 0.02077363 ETH | ||||
13466171 | 1169 days ago | 0.02077363 ETH | ||||
13462994 | 1170 days ago | 0.0144584 ETH | ||||
13462994 | 1170 days ago | 0.0144584 ETH | ||||
13462904 | 1170 days ago | 0.09992811 ETH |
Loading...
Loading
Contract Name:
LUCARIO
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-10-19 */ pragma solidity ^0.8.0; // SPDX-License-Identifier: Unlicensed interface IERC20 { 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; } } abstract contract Context { function _msgSender() internal view virtual returns (address ) { 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 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 () { _owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); } /** * @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 = block.timestamp + 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(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { 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 IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract LUCARIO 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; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000 * 10**6 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "Lucario Inu"; string private _symbol = "LUCARIO"; uint8 private _decimals = 18; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 10; uint256 private _previousLiquidityFee = _liquidityFee; address public marketing = 0xd08D1C1526b8664f1e06fD1B5C8B0F1A2A8cF753; //(10%) IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = _tTotal.mul(3).div(1000); uint256 public numTokensSellToAddToLiquidity = 1 * 10**18; bool public _taxEnabled = true; event SetTaxEnable(bool enabled); event SetLiquidityFeePercent(uint256 liquidityFee); event SetTaxFeePercent(uint256 taxFee); event SetMarketingPercent(uint256 marketingFee); event SetDevPercent(uint256 devFee); event SetCommunityPercent(uint256 charityFee); event SetMaxTxPercent(uint256 maxTxPercent); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event TaxEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[msg.sender] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_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; _isExcluded[uniswapV2Pair] = true; // excluded from rewards emit Transfer(address(0), msg.sender, _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 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 _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _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(sender, tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } 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; emit SetTaxFeePercent(taxFee); } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; emit SetLiquidityFeePercent(liquidityFee); } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**2 ); emit SetMaxTxPercent(maxTxPercent); } function setSwapAmount(uint256 amount) external onlyOwner() { numTokensSellToAddToLiquidity = amount; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setTaxEnable (bool _enable) public onlyOwner { _taxEnabled = _enable; emit SetTaxEnable(_enable); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).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(address sender, 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); emit Transfer(sender, address(this), tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0 ) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } 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(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)); // if(contractTokenBalance >= _maxTxAmount) // { // contractTokenBalance = _maxTxAmount; // } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { // contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = false; if(from == uniswapV2Pair || to == uniswapV2Pair) { takeFee = true; } if(!_taxEnabled || _isExcludedFromFee[from] || _isExcludedFromFee[to]){ //if any account belongs to _isExcludedFromFee account then remove the fee takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // 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(contractTokenBalance); // <- 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); (bool succ, ) = address(marketing).call{value: newBalance}(""); require(succ, "marketing ETH not sent"); emit SwapAndLiquify(contractTokenBalance, newBalance); } 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 ); } //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 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(sender, tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(sender, tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(sender, tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function emergencyWithdrawTokens() public onlyOwner { uint256 balance = balanceOf(address(this)); transfer(msg.sender, balance ); } }
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":"charityFee","type":"uint256"}],"name":"SetCommunityPercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"SetDevPercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"SetLiquidityFeePercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"SetMarketingPercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"SetMaxTxPercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SetTaxEnable","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"SetTaxFeePercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"TaxEnabledUpdated","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":"_liquidityFee","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":"_taxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"emergencyWithdrawTokens","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":"marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setTaxEnable","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":"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 IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526d314dc6448d9338c15b0a00000000600955600954600019620000289190620008f1565b60001962000037919062000958565b600a556040518060400160405280600b81526020017f4c75636172696f20496e75000000000000000000000000000000000000000000815250600c90805190602001906200008792919062000808565b506040518060400160405280600781526020017f4c55434152494f00000000000000000000000000000000000000000000000000815250600d9080519060200190620000d592919062000808565b506012600e60006101000a81548160ff021916908360ff1602179055506000600f55600f54601055600a60115560115460125573d08d1c1526b8664f1e06fd1b5c8b0f1a2a8cf753601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016015806101000a81548160ff021916908315150217905550620001af6103e86200019b6003600954620006a160201b620026121790919060201c565b6200072560201b6200268d1790919060201c565b601655670de0b6b3a76400006017556001601860006101000a81548160ff021916908315150217905550348015620001e657600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600a54600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003639190620009fd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004019190620009fd565b6040518363ffffffff1660e01b81526004016200042092919062000a40565b602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004769190620009fd565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660006200050d6200077760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60095460405162000692919062000a7e565b60405180910390a35062000cf9565b600080831415620006b657600090506200071f565b60008284620006c6919062000a9b565b9050828482620006d7919062000afc565b146200071a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007119062000bbb565b60405180910390fd5b809150505b92915050565b60006200076f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007a060201b60201c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620007ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e1919062000c70565b60405180910390fd5b5060008385620007fb919062000afc565b9050809150509392505050565b828054620008169062000cc3565b90600052602060002090601f0160209004810192826200083a576000855562000886565b82601f106200085557805160ff191683800117855562000886565b8280016001018555821562000886579182015b828111156200088557825182559160200191906001019062000868565b5b50905062000895919062000899565b5090565b5b80821115620008b45760008160009055506001016200089a565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008fe82620008b8565b91506200090b83620008b8565b9250826200091e576200091d620008c2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200096582620008b8565b91506200097283620008b8565b92508282101562000988576200098762000929565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009c58262000998565b9050919050565b620009d781620009b8565b8114620009e357600080fd5b50565b600081519050620009f781620009cc565b92915050565b60006020828403121562000a165762000a1562000993565b5b600062000a2684828501620009e6565b91505092915050565b62000a3a81620009b8565b82525050565b600060408201905062000a57600083018562000a2f565b62000a66602083018462000a2f565b9392505050565b62000a7881620008b8565b82525050565b600060208201905062000a95600083018462000a6d565b92915050565b600062000aa882620008b8565b915062000ab583620008b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000af15762000af062000929565b5b828202905092915050565b600062000b0982620008b8565b915062000b1683620008b8565b92508262000b295762000b28620008c2565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000ba360218362000b34565b915062000bb08262000b45565b604082019050919050565b6000602082019050818103600083015262000bd68162000b94565b9050919050565b600081519050919050565b60005b8381101562000c0857808201518184015260208101905062000beb565b8381111562000c18576000848401525b50505050565b6000601f19601f8301169050919050565b600062000c3c8262000bdd565b62000c48818562000b34565b935062000c5a81856020860162000be8565b62000c658162000c1e565b840191505092915050565b6000602082019050818103600083015262000c8c818462000c2f565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000cdc57607f821691505b6020821081141562000cf35762000cf262000c94565b5b50919050565b6156638062000d096000396000f3fe6080604052600436106102555760003560e01c806370a0823111610139578063a69df4b5116100b6578063d543dbeb1161007a578063d543dbeb146108d7578063dd46706414610900578063dd62ed3e14610929578063e632313c14610966578063ea2f0b371461098f578063f2fde38b146109b85761025c565b8063a69df4b514610804578063a9059cbb1461081b578063b6c5232414610858578063c49b9a8014610883578063d12a7688146108ac5761025c565b80638ee88c53116100fd5780638ee88c531461071f57806395d89b4114610748578063966b47c3146107735780639daeac761461079e578063a457c2d7146107c75761025c565b806370a0823114610638578063715018a6146106755780637d1db4a51461068c57806388f82020146106b75780638da5cb5b146106f45761025c565b80633685d419116101d257806349bd5a5e1161019657806349bd5a5e1461053a5780634a74bb021461056557806352390c02146105905780635342acb4146105b957806369b372f1146105f65780636bc87c3a1461060d5761025c565b80633685d41914610443578063395093511461046c5780633b124fe7146104a9578063437823ec146104d45780634549b039146104fd5761025c565b806318160ddd1161021957806318160ddd1461034857806323b872dd146103735780632d3e474a146103b05780632d838119146103db578063313ce567146104185761025c565b8063061c82d01461026157806306fdde031461028a578063095ea7b3146102b557806313114a9d146102f25780631694505e1461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102886004803603810190610283919061456e565b6109e1565b005b34801561029657600080fd5b5061029f610ab7565b6040516102ac9190614634565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d791906146b4565b610b49565b6040516102e9919061470f565b60405180910390f35b3480156102fe57600080fd5b50610307610b67565b6040516103149190614739565b60405180910390f35b34801561032957600080fd5b50610332610b71565b60405161033f91906147b3565b60405180910390f35b34801561035457600080fd5b5061035d610b97565b60405161036a9190614739565b60405180910390f35b34801561037f57600080fd5b5061039a600480360381019061039591906147ce565b610ba1565b6040516103a7919061470f565b60405180910390f35b3480156103bc57600080fd5b506103c5610c7a565b6040516103d29190614830565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd919061456e565b610ca0565b60405161040f9190614739565b60405180910390f35b34801561042457600080fd5b5061042d610d0e565b60405161043a9190614867565b60405180910390f35b34801561044f57600080fd5b5061046a60048036038101906104659190614882565b610d25565b005b34801561047857600080fd5b50610493600480360381019061048e91906146b4565b611074565b6040516104a0919061470f565b60405180910390f35b3480156104b557600080fd5b506104be611127565b6040516104cb9190614739565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190614882565b61112d565b005b34801561050957600080fd5b50610524600480360381019061051f91906148db565b61121d565b6040516105319190614739565b60405180910390f35b34801561054657600080fd5b5061054f6112a1565b60405161055c9190614830565b60405180910390f35b34801561057157600080fd5b5061057a6112c7565b604051610587919061470f565b60405180910390f35b34801561059c57600080fd5b506105b760048036038101906105b29190614882565b6112d8565b005b3480156105c557600080fd5b506105e060048036038101906105db9190614882565b61158c565b6040516105ed919061470f565b60405180910390f35b34801561060257600080fd5b5061060b6115e2565b005b34801561061957600080fd5b50610622611692565b60405161062f9190614739565b60405180910390f35b34801561064457600080fd5b5061065f600480360381019061065a9190614882565b611698565b60405161066c9190614739565b60405180910390f35b34801561068157600080fd5b5061068a611783565b005b34801561069857600080fd5b506106a16118d6565b6040516106ae9190614739565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190614882565b6118dc565b6040516106eb919061470f565b60405180910390f35b34801561070057600080fd5b50610709611932565b6040516107169190614830565b60405180910390f35b34801561072b57600080fd5b506107466004803603810190610741919061456e565b61195b565b005b34801561075457600080fd5b5061075d611a31565b60405161076a9190614634565b60405180910390f35b34801561077f57600080fd5b50610788611ac3565b604051610795919061470f565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c0919061491b565b611ad6565b005b3480156107d357600080fd5b506107ee60048036038101906107e991906146b4565b611bbf565b6040516107fb919061470f565b60405180910390f35b34801561081057600080fd5b50610819611c8c565b005b34801561082757600080fd5b50610842600480360381019061083d91906146b4565b611e60565b60405161084f919061470f565b60405180910390f35b34801561086457600080fd5b5061086d611e7e565b60405161087a9190614739565b60405180910390f35b34801561088f57600080fd5b506108aa60048036038101906108a5919061491b565b611e88565b005b3480156108b857600080fd5b506108c1611f70565b6040516108ce9190614739565b60405180910390f35b3480156108e357600080fd5b506108fe60048036038101906108f9919061456e565b611f76565b005b34801561090c57600080fd5b506109276004803603810190610922919061456e565b612073565b005b34801561093557600080fd5b50610950600480360381019061094b9190614948565b61223a565b60405161095d9190614739565b60405180910390f35b34801561097257600080fd5b5061098d6004803603810190610988919061456e565b6122c1565b005b34801561099b57600080fd5b506109b660048036038101906109b19190614882565b612360565b005b3480156109c457600080fd5b506109df60048036038101906109da9190614882565b612450565b005b6109e96126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d906149d4565b60405180910390fd5b80600f819055507f19da908cae03512cf29c19a5842b2904a06fd24ef9982759c78f9379831ed70f81604051610aac9190614739565b60405180910390a150565b6060600c8054610ac690614a23565b80601f0160208091040260200160405190810160405280929190818152602001828054610af290614a23565b8015610b3f5780601f10610b1457610100808354040283529160200191610b3f565b820191906000526020600020905b815481529060010190602001808311610b2257829003601f168201915b5050505050905090565b6000610b5d610b566126d7565b84846126df565b6001905092915050565b6000600b54905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b6000610bae8484846128aa565b610c6f84610bba6126d7565b610c6a856040518060600160405280602881526020016155e160289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c206126d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5a9092919063ffffffff16565b6126df565b600190509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54821115610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90614ac7565b60405180910390fd5b6000610cf1612cbe565b9050610d06818461268d90919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b610d2d6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db1906149d4565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d90614b33565b60405180910390fd5b60005b600880549050811015611070578173ffffffffffffffffffffffffffffffffffffffff1660088281548110610e8157610e80614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561105d5760086001600880549050610edc9190614bb1565b81548110610eed57610eec614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110610f2c57610f2b614b53565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061102357611022614be5565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611070565b808061106890614c14565b915050610e49565b5050565b600061111d6110816126d7565b8461111885600560006110926126d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b6126df565b6001905092915050565b600f5481565b6111356126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b9906149d4565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90614ca9565b60405180910390fd5b8161128457600061127484612d47565b505050505090508091505061129b565b600061128f84612d47565b50505050915050809150505b92915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054906101000a900460ff1681565b6112e06126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611364906149d4565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190614b33565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156114ce5761148a600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca0565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6115ea6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e906149d4565b60405180910390fd5b600061168230611698565b905061168e3382611e60565b5050565b60115481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561173357600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061177e565b61177b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca0565b90505b919050565b61178b6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f906149d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119636126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e7906149d4565b60405180910390fd5b806011819055507fa080f06a1e9c2a432b1d35cf0a54ebca051cf5dce7433c3d8e94948436f1035681604051611a269190614739565b60405180910390a150565b6060600d8054611a4090614a23565b80601f0160208091040260200160405190810160405280929190818152602001828054611a6c90614a23565b8015611ab95780601f10611a8e57610100808354040283529160200191611ab9565b820191906000526020600020905b815481529060010190602001808311611a9c57829003601f168201915b5050505050905090565b601860009054906101000a900460ff1681565b611ade6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b62906149d4565b60405180910390fd5b80601860006101000a81548160ff0219169083151502179055507fd4842ff41c1cd38f5ef90a0583f64cf8fa8294a9b0868849a249992139c79a5781604051611bb4919061470f565b60405180910390a150565b6000611c82611bcc6126d7565b84611c7d856040518060600160405280602581526020016156096025913960056000611bf66126d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5a9092919063ffffffff16565b6126df565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1390614d3b565b60405180910390fd5b6002544211611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790614da7565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611e74611e6d6126d7565b84846128aa565b6001905092915050565b6000600254905090565b611e906126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f14906149d4565b60405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611f65919061470f565b60405180910390a150565b60175481565b611f7e6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612002906149d4565b60405180910390fd5b61203360646120258360095461261290919063ffffffff16565b61268d90919063ffffffff16565b6016819055507f570636dca93f35bb5dee1663ad99fe3f70745771395df08a5f7732130618b518816040516120689190614739565b60405180910390a150565b61207b6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ff906149d4565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426121b69190614dc7565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122c96126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d906149d4565b60405180910390fd5b8060178190555050565b6123686126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ec906149d4565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6124586126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc906149d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254c90614e8f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156126255760009050612687565b600082846126339190614eaf565b90508284826126429190614f38565b14612682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267990614fdb565b60405180910390fd5b809150505b92915050565b60006126cf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612da3565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561274f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127469061506d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b6906150ff565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161289d9190614739565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190615191565b60405180910390fd5b6000811161295d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295490615223565b60405180910390fd5b612965611932565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129d357506129a3611932565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a1e57601654811115612a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a14906152b5565b60405180910390fd5b5b6000612a2930611698565b905060006017548210159050808015612a4f5750601560149054906101000a900460ff16155b8015612aa95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612abf575060158054906101000a900460ff165b15612ace57612acd82612e06565b5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480612b795750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15612b8357600190505b601860009054906101000a900460ff161580612be85750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c3c5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c4657600090505b612c5286868684612f6e565b505050505050565b6000838311158290612ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c999190614634565b60405180910390fd5b5060008385612cb19190614bb1565b9050809150509392505050565b6000806000612ccb61327f565b91509150612ce2818361268d90919063ffffffff16565b9250505090565b6000808284612cf89190614dc7565b905083811015612d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3490615321565b60405180910390fd5b8091505092915050565b6000806000806000806000806000612d5e8a613532565b9250925092506000806000612d7c8d8686612d77612cbe565b61358c565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b60008083118290612dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de19190614634565b60405180910390fd5b5060008385612df99190614f38565b9050809150509392505050565b6001601560146101000a81548160ff0219169083151502179055506000479050612e2f82613615565b6000612e44824761386790919063ffffffff16565b90506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612e8e90615372565b60006040518083038185875af1925050503d8060008114612ecb576040519150601f19603f3d011682016040523d82523d6000602084013e612ed0565b606091505b5050905080612f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0b906153d3565b60405180910390fd5b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868483604051612f459291906153f3565b60405180910390a15050506000601560146101000a81548160ff02191690831515021790555050565b80612f7c57612f7b6138b1565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561301f5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130345761302f8484846138f4565b61326b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130d75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130ec576130e7848484613b55565b61326a565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131905750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131a5576131a0848484613db6565b613269565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132475750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561325c57613257848484613f82565b613268565b613267848484613db6565b5b5b5b5b8061327957613278614278565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156134f5578260036000600884815481106132b9576132b8614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806133a7575081600460006008848154811061333f5761333e614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133be57600a546009549450945050505061352e565b61344e60036000600884815481106133d9576133d8614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461386790919063ffffffff16565b92506134e0600460006008848154811061346b5761346a614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361386790919063ffffffff16565b915080806134ed90614c14565b915050613293565b5061350d600954600a5461268d90919063ffffffff16565b82101561352557600a5460095493509350505061352e565b81819350935050505b9091565b6000806000806135418561428c565b9050600061354e866142bd565b9050600061357782613569858a61386790919063ffffffff16565b61386790919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806135a5858961261290919063ffffffff16565b905060006135bc868961261290919063ffffffff16565b905060006135d3878961261290919063ffffffff16565b905060006135fc826135ee858761386790919063ffffffff16565b61386790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff8111156136325761363161541c565b5b6040519080825280602002602001820160405280156136605781602001602082028036833780820191505090505b509050308160008151811061367857613677614b53565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561371a57600080fd5b505afa15801561372e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137529190615460565b8160018151811061376657613765614b53565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137cd30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126df565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613831959493929190615586565b600060405180830381600087803b15801561384b57600080fd5b505af115801561385f573d6000803e3d6000fd5b505050505050565b60006138a983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5a565b905092915050565b6000600f541480156138c557506000601154145b156138cf576138f2565b600f546010819055506011546012819055506000600f8190555060006011819055505b565b60008060008060008061390687612d47565b95509550955095509550955061396487600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139f986600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a8e85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613adb89826142ee565b613ae584836144f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613b429190614739565b60405180910390a3505050505050505050565b600080600080600080613b6787612d47565b955095509550955095509550613bc586600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c5a83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cef85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3c89826142ee565b613d4684836144f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613da39190614739565b60405180910390a3505050505050505050565b600080600080600080613dc887612d47565b955095509550955095509550613e2686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ebb85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f0889826142ee565b613f1284836144f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613f6f9190614739565b60405180910390a3505050505050505050565b600080600080600080613f9487612d47565b955095509550955095509550613ff287600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061408786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061411c83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141b185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141fe89826142ee565b61420884836144f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516142659190614739565b60405180910390a3505050505050505050565b601054600f81905550601254601181905550565b60006142b660646142a8600f548561261290919063ffffffff16565b61268d90919063ffffffff16565b9050919050565b60006142e760646142d96011548561261290919063ffffffff16565b61268d90919063ffffffff16565b9050919050565b60006142f8612cbe565b9050600061430f828461261290919063ffffffff16565b905061436381600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561448e5761444a83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516144eb9190614739565b60405180910390a350505050565b61450e82600a5461386790919063ffffffff16565b600a8190555061452981600b54612ce990919063ffffffff16565b600b819055505050565b600080fd5b6000819050919050565b61454b81614538565b811461455657600080fd5b50565b60008135905061456881614542565b92915050565b60006020828403121561458457614583614533565b5b600061459284828501614559565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145d55780820151818401526020810190506145ba565b838111156145e4576000848401525b50505050565b6000601f19601f8301169050919050565b60006146068261459b565b61461081856145a6565b93506146208185602086016145b7565b614629816145ea565b840191505092915050565b6000602082019050818103600083015261464e81846145fb565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061468182614656565b9050919050565b61469181614676565b811461469c57600080fd5b50565b6000813590506146ae81614688565b92915050565b600080604083850312156146cb576146ca614533565b5b60006146d98582860161469f565b92505060206146ea85828601614559565b9150509250929050565b60008115159050919050565b614709816146f4565b82525050565b60006020820190506147246000830184614700565b92915050565b61473381614538565b82525050565b600060208201905061474e600083018461472a565b92915050565b6000819050919050565b600061477961477461476f84614656565b614754565b614656565b9050919050565b600061478b8261475e565b9050919050565b600061479d82614780565b9050919050565b6147ad81614792565b82525050565b60006020820190506147c860008301846147a4565b92915050565b6000806000606084860312156147e7576147e6614533565b5b60006147f58682870161469f565b93505060206148068682870161469f565b925050604061481786828701614559565b9150509250925092565b61482a81614676565b82525050565b60006020820190506148456000830184614821565b92915050565b600060ff82169050919050565b6148618161484b565b82525050565b600060208201905061487c6000830184614858565b92915050565b60006020828403121561489857614897614533565b5b60006148a68482850161469f565b91505092915050565b6148b8816146f4565b81146148c357600080fd5b50565b6000813590506148d5816148af565b92915050565b600080604083850312156148f2576148f1614533565b5b600061490085828601614559565b9250506020614911858286016148c6565b9150509250929050565b60006020828403121561493157614930614533565b5b600061493f848285016148c6565b91505092915050565b6000806040838503121561495f5761495e614533565b5b600061496d8582860161469f565b925050602061497e8582860161469f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006149be6020836145a6565b91506149c982614988565b602082019050919050565b600060208201905081810360008301526149ed816149b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a3b57607f821691505b60208210811415614a4f57614a4e6149f4565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614ab1602a836145a6565b9150614abc82614a55565b604082019050919050565b60006020820190508181036000830152614ae081614aa4565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614b1d601b836145a6565b9150614b2882614ae7565b602082019050919050565b60006020820190508181036000830152614b4c81614b10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614bbc82614538565b9150614bc783614538565b925082821015614bda57614bd9614b82565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000614c1f82614538565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c5257614c51614b82565b5b600182019050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000614c93601f836145a6565b9150614c9e82614c5d565b602082019050919050565b60006020820190508181036000830152614cc281614c86565b9050919050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6000614d256023836145a6565b9150614d3082614cc9565b604082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b6000614d91601f836145a6565b9150614d9c82614d5b565b602082019050919050565b60006020820190508181036000830152614dc081614d84565b9050919050565b6000614dd282614538565b9150614ddd83614538565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e1257614e11614b82565b5b828201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e796026836145a6565b9150614e8482614e1d565b604082019050919050565b60006020820190508181036000830152614ea881614e6c565b9050919050565b6000614eba82614538565b9150614ec583614538565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614efe57614efd614b82565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f4382614538565b9150614f4e83614538565b925082614f5e57614f5d614f09565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fc56021836145a6565b9150614fd082614f69565b604082019050919050565b60006020820190508181036000830152614ff481614fb8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150576024836145a6565b915061506282614ffb565b604082019050919050565b600060208201905081810360008301526150868161504a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150e96022836145a6565b91506150f48261508d565b604082019050919050565b60006020820190508181036000830152615118816150dc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061517b6025836145a6565b91506151868261511f565b604082019050919050565b600060208201905081810360008301526151aa8161516e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061520d6029836145a6565b9150615218826151b1565b604082019050919050565b6000602082019050818103600083015261523c81615200565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061529f6028836145a6565b91506152aa82615243565b604082019050919050565b600060208201905081810360008301526152ce81615292565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061530b601b836145a6565b9150615316826152d5565b602082019050919050565b6000602082019050818103600083015261533a816152fe565b9050919050565b600081905092915050565b50565b600061535c600083615341565b91506153678261534c565b600082019050919050565b600061537d8261534f565b9150819050919050565b7f6d61726b6574696e6720455448206e6f742073656e7400000000000000000000600082015250565b60006153bd6016836145a6565b91506153c882615387565b602082019050919050565b600060208201905081810360008301526153ec816153b0565b9050919050565b6000604082019050615408600083018561472a565b615415602083018461472a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061545a81614688565b92915050565b60006020828403121561547657615475614533565b5b60006154848482850161544b565b91505092915050565b6000819050919050565b60006154b26154ad6154a88461548d565b614754565b614538565b9050919050565b6154c281615497565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6154fd81614676565b82525050565b600061550f83836154f4565b60208301905092915050565b6000602082019050919050565b6000615533826154c8565b61553d81856154d3565b9350615548836154e4565b8060005b838110156155795781516155608882615503565b975061556b8361551b565b92505060018101905061554c565b5085935050505092915050565b600060a08201905061559b600083018861472a565b6155a860208301876154b9565b81810360408301526155ba8186615528565b90506155c96060830185614821565b6155d6608083018461472a565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220596f08491dd507ccccb5919a0f73af9f6746ed65430de52361f93945404d5ad964736f6c63430008090033
Deployed Bytecode
0x6080604052600436106102555760003560e01c806370a0823111610139578063a69df4b5116100b6578063d543dbeb1161007a578063d543dbeb146108d7578063dd46706414610900578063dd62ed3e14610929578063e632313c14610966578063ea2f0b371461098f578063f2fde38b146109b85761025c565b8063a69df4b514610804578063a9059cbb1461081b578063b6c5232414610858578063c49b9a8014610883578063d12a7688146108ac5761025c565b80638ee88c53116100fd5780638ee88c531461071f57806395d89b4114610748578063966b47c3146107735780639daeac761461079e578063a457c2d7146107c75761025c565b806370a0823114610638578063715018a6146106755780637d1db4a51461068c57806388f82020146106b75780638da5cb5b146106f45761025c565b80633685d419116101d257806349bd5a5e1161019657806349bd5a5e1461053a5780634a74bb021461056557806352390c02146105905780635342acb4146105b957806369b372f1146105f65780636bc87c3a1461060d5761025c565b80633685d41914610443578063395093511461046c5780633b124fe7146104a9578063437823ec146104d45780634549b039146104fd5761025c565b806318160ddd1161021957806318160ddd1461034857806323b872dd146103735780632d3e474a146103b05780632d838119146103db578063313ce567146104185761025c565b8063061c82d01461026157806306fdde031461028a578063095ea7b3146102b557806313114a9d146102f25780631694505e1461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102886004803603810190610283919061456e565b6109e1565b005b34801561029657600080fd5b5061029f610ab7565b6040516102ac9190614634565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d791906146b4565b610b49565b6040516102e9919061470f565b60405180910390f35b3480156102fe57600080fd5b50610307610b67565b6040516103149190614739565b60405180910390f35b34801561032957600080fd5b50610332610b71565b60405161033f91906147b3565b60405180910390f35b34801561035457600080fd5b5061035d610b97565b60405161036a9190614739565b60405180910390f35b34801561037f57600080fd5b5061039a600480360381019061039591906147ce565b610ba1565b6040516103a7919061470f565b60405180910390f35b3480156103bc57600080fd5b506103c5610c7a565b6040516103d29190614830565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd919061456e565b610ca0565b60405161040f9190614739565b60405180910390f35b34801561042457600080fd5b5061042d610d0e565b60405161043a9190614867565b60405180910390f35b34801561044f57600080fd5b5061046a60048036038101906104659190614882565b610d25565b005b34801561047857600080fd5b50610493600480360381019061048e91906146b4565b611074565b6040516104a0919061470f565b60405180910390f35b3480156104b557600080fd5b506104be611127565b6040516104cb9190614739565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190614882565b61112d565b005b34801561050957600080fd5b50610524600480360381019061051f91906148db565b61121d565b6040516105319190614739565b60405180910390f35b34801561054657600080fd5b5061054f6112a1565b60405161055c9190614830565b60405180910390f35b34801561057157600080fd5b5061057a6112c7565b604051610587919061470f565b60405180910390f35b34801561059c57600080fd5b506105b760048036038101906105b29190614882565b6112d8565b005b3480156105c557600080fd5b506105e060048036038101906105db9190614882565b61158c565b6040516105ed919061470f565b60405180910390f35b34801561060257600080fd5b5061060b6115e2565b005b34801561061957600080fd5b50610622611692565b60405161062f9190614739565b60405180910390f35b34801561064457600080fd5b5061065f600480360381019061065a9190614882565b611698565b60405161066c9190614739565b60405180910390f35b34801561068157600080fd5b5061068a611783565b005b34801561069857600080fd5b506106a16118d6565b6040516106ae9190614739565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190614882565b6118dc565b6040516106eb919061470f565b60405180910390f35b34801561070057600080fd5b50610709611932565b6040516107169190614830565b60405180910390f35b34801561072b57600080fd5b506107466004803603810190610741919061456e565b61195b565b005b34801561075457600080fd5b5061075d611a31565b60405161076a9190614634565b60405180910390f35b34801561077f57600080fd5b50610788611ac3565b604051610795919061470f565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c0919061491b565b611ad6565b005b3480156107d357600080fd5b506107ee60048036038101906107e991906146b4565b611bbf565b6040516107fb919061470f565b60405180910390f35b34801561081057600080fd5b50610819611c8c565b005b34801561082757600080fd5b50610842600480360381019061083d91906146b4565b611e60565b60405161084f919061470f565b60405180910390f35b34801561086457600080fd5b5061086d611e7e565b60405161087a9190614739565b60405180910390f35b34801561088f57600080fd5b506108aa60048036038101906108a5919061491b565b611e88565b005b3480156108b857600080fd5b506108c1611f70565b6040516108ce9190614739565b60405180910390f35b3480156108e357600080fd5b506108fe60048036038101906108f9919061456e565b611f76565b005b34801561090c57600080fd5b506109276004803603810190610922919061456e565b612073565b005b34801561093557600080fd5b50610950600480360381019061094b9190614948565b61223a565b60405161095d9190614739565b60405180910390f35b34801561097257600080fd5b5061098d6004803603810190610988919061456e565b6122c1565b005b34801561099b57600080fd5b506109b660048036038101906109b19190614882565b612360565b005b3480156109c457600080fd5b506109df60048036038101906109da9190614882565b612450565b005b6109e96126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d906149d4565b60405180910390fd5b80600f819055507f19da908cae03512cf29c19a5842b2904a06fd24ef9982759c78f9379831ed70f81604051610aac9190614739565b60405180910390a150565b6060600c8054610ac690614a23565b80601f0160208091040260200160405190810160405280929190818152602001828054610af290614a23565b8015610b3f5780601f10610b1457610100808354040283529160200191610b3f565b820191906000526020600020905b815481529060010190602001808311610b2257829003601f168201915b5050505050905090565b6000610b5d610b566126d7565b84846126df565b6001905092915050565b6000600b54905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b6000610bae8484846128aa565b610c6f84610bba6126d7565b610c6a856040518060600160405280602881526020016155e160289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c206126d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5a9092919063ffffffff16565b6126df565b600190509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54821115610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90614ac7565b60405180910390fd5b6000610cf1612cbe565b9050610d06818461268d90919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b610d2d6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db1906149d4565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d90614b33565b60405180910390fd5b60005b600880549050811015611070578173ffffffffffffffffffffffffffffffffffffffff1660088281548110610e8157610e80614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561105d5760086001600880549050610edc9190614bb1565b81548110610eed57610eec614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110610f2c57610f2b614b53565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061102357611022614be5565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611070565b808061106890614c14565b915050610e49565b5050565b600061111d6110816126d7565b8461111885600560006110926126d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b6126df565b6001905092915050565b600f5481565b6111356126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b9906149d4565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90614ca9565b60405180910390fd5b8161128457600061127484612d47565b505050505090508091505061129b565b600061128f84612d47565b50505050915050809150505b92915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054906101000a900460ff1681565b6112e06126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611364906149d4565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190614b33565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156114ce5761148a600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca0565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6115ea6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e906149d4565b60405180910390fd5b600061168230611698565b905061168e3382611e60565b5050565b60115481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561173357600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061177e565b61177b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca0565b90505b919050565b61178b6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f906149d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119636126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e7906149d4565b60405180910390fd5b806011819055507fa080f06a1e9c2a432b1d35cf0a54ebca051cf5dce7433c3d8e94948436f1035681604051611a269190614739565b60405180910390a150565b6060600d8054611a4090614a23565b80601f0160208091040260200160405190810160405280929190818152602001828054611a6c90614a23565b8015611ab95780601f10611a8e57610100808354040283529160200191611ab9565b820191906000526020600020905b815481529060010190602001808311611a9c57829003601f168201915b5050505050905090565b601860009054906101000a900460ff1681565b611ade6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b62906149d4565b60405180910390fd5b80601860006101000a81548160ff0219169083151502179055507fd4842ff41c1cd38f5ef90a0583f64cf8fa8294a9b0868849a249992139c79a5781604051611bb4919061470f565b60405180910390a150565b6000611c82611bcc6126d7565b84611c7d856040518060600160405280602581526020016156096025913960056000611bf66126d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c5a9092919063ffffffff16565b6126df565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1390614d3b565b60405180910390fd5b6002544211611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790614da7565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611e74611e6d6126d7565b84846128aa565b6001905092915050565b6000600254905090565b611e906126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f14906149d4565b60405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611f65919061470f565b60405180910390a150565b60175481565b611f7e6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612002906149d4565b60405180910390fd5b61203360646120258360095461261290919063ffffffff16565b61268d90919063ffffffff16565b6016819055507f570636dca93f35bb5dee1663ad99fe3f70745771395df08a5f7732130618b518816040516120689190614739565b60405180910390a150565b61207b6126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ff906149d4565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426121b69190614dc7565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122c96126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d906149d4565b60405180910390fd5b8060178190555050565b6123686126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ec906149d4565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6124586126d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc906149d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254c90614e8f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156126255760009050612687565b600082846126339190614eaf565b90508284826126429190614f38565b14612682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267990614fdb565b60405180910390fd5b809150505b92915050565b60006126cf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612da3565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561274f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127469061506d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b6906150ff565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161289d9190614739565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190615191565b60405180910390fd5b6000811161295d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295490615223565b60405180910390fd5b612965611932565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129d357506129a3611932565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a1e57601654811115612a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a14906152b5565b60405180910390fd5b5b6000612a2930611698565b905060006017548210159050808015612a4f5750601560149054906101000a900460ff16155b8015612aa95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612abf575060158054906101000a900460ff165b15612ace57612acd82612e06565b5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480612b795750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15612b8357600190505b601860009054906101000a900460ff161580612be85750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c3c5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c4657600090505b612c5286868684612f6e565b505050505050565b6000838311158290612ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c999190614634565b60405180910390fd5b5060008385612cb19190614bb1565b9050809150509392505050565b6000806000612ccb61327f565b91509150612ce2818361268d90919063ffffffff16565b9250505090565b6000808284612cf89190614dc7565b905083811015612d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3490615321565b60405180910390fd5b8091505092915050565b6000806000806000806000806000612d5e8a613532565b9250925092506000806000612d7c8d8686612d77612cbe565b61358c565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b60008083118290612dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de19190614634565b60405180910390fd5b5060008385612df99190614f38565b9050809150509392505050565b6001601560146101000a81548160ff0219169083151502179055506000479050612e2f82613615565b6000612e44824761386790919063ffffffff16565b90506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612e8e90615372565b60006040518083038185875af1925050503d8060008114612ecb576040519150601f19603f3d011682016040523d82523d6000602084013e612ed0565b606091505b5050905080612f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0b906153d3565b60405180910390fd5b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868483604051612f459291906153f3565b60405180910390a15050506000601560146101000a81548160ff02191690831515021790555050565b80612f7c57612f7b6138b1565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561301f5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130345761302f8484846138f4565b61326b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130d75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130ec576130e7848484613b55565b61326a565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131905750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131a5576131a0848484613db6565b613269565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132475750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561325c57613257848484613f82565b613268565b613267848484613db6565b5b5b5b5b8061327957613278614278565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156134f5578260036000600884815481106132b9576132b8614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806133a7575081600460006008848154811061333f5761333e614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133be57600a546009549450945050505061352e565b61344e60036000600884815481106133d9576133d8614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461386790919063ffffffff16565b92506134e0600460006008848154811061346b5761346a614b53565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361386790919063ffffffff16565b915080806134ed90614c14565b915050613293565b5061350d600954600a5461268d90919063ffffffff16565b82101561352557600a5460095493509350505061352e565b81819350935050505b9091565b6000806000806135418561428c565b9050600061354e866142bd565b9050600061357782613569858a61386790919063ffffffff16565b61386790919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806135a5858961261290919063ffffffff16565b905060006135bc868961261290919063ffffffff16565b905060006135d3878961261290919063ffffffff16565b905060006135fc826135ee858761386790919063ffffffff16565b61386790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff8111156136325761363161541c565b5b6040519080825280602002602001820160405280156136605781602001602082028036833780820191505090505b509050308160008151811061367857613677614b53565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561371a57600080fd5b505afa15801561372e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137529190615460565b8160018151811061376657613765614b53565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137cd30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126df565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613831959493929190615586565b600060405180830381600087803b15801561384b57600080fd5b505af115801561385f573d6000803e3d6000fd5b505050505050565b60006138a983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5a565b905092915050565b6000600f541480156138c557506000601154145b156138cf576138f2565b600f546010819055506011546012819055506000600f8190555060006011819055505b565b60008060008060008061390687612d47565b95509550955095509550955061396487600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139f986600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a8e85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613adb89826142ee565b613ae584836144f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613b429190614739565b60405180910390a3505050505050505050565b600080600080600080613b6787612d47565b955095509550955095509550613bc586600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c5a83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cef85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3c89826142ee565b613d4684836144f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613da39190614739565b60405180910390a3505050505050505050565b600080600080600080613dc887612d47565b955095509550955095509550613e2686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ebb85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f0889826142ee565b613f1284836144f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613f6f9190614739565b60405180910390a3505050505050505050565b600080600080600080613f9487612d47565b955095509550955095509550613ff287600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061408786600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386790919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061411c83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141b185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141fe89826142ee565b61420884836144f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516142659190614739565b60405180910390a3505050505050505050565b601054600f81905550601254601181905550565b60006142b660646142a8600f548561261290919063ffffffff16565b61268d90919063ffffffff16565b9050919050565b60006142e760646142d96011548561261290919063ffffffff16565b61268d90919063ffffffff16565b9050919050565b60006142f8612cbe565b9050600061430f828461261290919063ffffffff16565b905061436381600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561448e5761444a83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce990919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516144eb9190614739565b60405180910390a350505050565b61450e82600a5461386790919063ffffffff16565b600a8190555061452981600b54612ce990919063ffffffff16565b600b819055505050565b600080fd5b6000819050919050565b61454b81614538565b811461455657600080fd5b50565b60008135905061456881614542565b92915050565b60006020828403121561458457614583614533565b5b600061459284828501614559565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145d55780820151818401526020810190506145ba565b838111156145e4576000848401525b50505050565b6000601f19601f8301169050919050565b60006146068261459b565b61461081856145a6565b93506146208185602086016145b7565b614629816145ea565b840191505092915050565b6000602082019050818103600083015261464e81846145fb565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061468182614656565b9050919050565b61469181614676565b811461469c57600080fd5b50565b6000813590506146ae81614688565b92915050565b600080604083850312156146cb576146ca614533565b5b60006146d98582860161469f565b92505060206146ea85828601614559565b9150509250929050565b60008115159050919050565b614709816146f4565b82525050565b60006020820190506147246000830184614700565b92915050565b61473381614538565b82525050565b600060208201905061474e600083018461472a565b92915050565b6000819050919050565b600061477961477461476f84614656565b614754565b614656565b9050919050565b600061478b8261475e565b9050919050565b600061479d82614780565b9050919050565b6147ad81614792565b82525050565b60006020820190506147c860008301846147a4565b92915050565b6000806000606084860312156147e7576147e6614533565b5b60006147f58682870161469f565b93505060206148068682870161469f565b925050604061481786828701614559565b9150509250925092565b61482a81614676565b82525050565b60006020820190506148456000830184614821565b92915050565b600060ff82169050919050565b6148618161484b565b82525050565b600060208201905061487c6000830184614858565b92915050565b60006020828403121561489857614897614533565b5b60006148a68482850161469f565b91505092915050565b6148b8816146f4565b81146148c357600080fd5b50565b6000813590506148d5816148af565b92915050565b600080604083850312156148f2576148f1614533565b5b600061490085828601614559565b9250506020614911858286016148c6565b9150509250929050565b60006020828403121561493157614930614533565b5b600061493f848285016148c6565b91505092915050565b6000806040838503121561495f5761495e614533565b5b600061496d8582860161469f565b925050602061497e8582860161469f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006149be6020836145a6565b91506149c982614988565b602082019050919050565b600060208201905081810360008301526149ed816149b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a3b57607f821691505b60208210811415614a4f57614a4e6149f4565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614ab1602a836145a6565b9150614abc82614a55565b604082019050919050565b60006020820190508181036000830152614ae081614aa4565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614b1d601b836145a6565b9150614b2882614ae7565b602082019050919050565b60006020820190508181036000830152614b4c81614b10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614bbc82614538565b9150614bc783614538565b925082821015614bda57614bd9614b82565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000614c1f82614538565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c5257614c51614b82565b5b600182019050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000614c93601f836145a6565b9150614c9e82614c5d565b602082019050919050565b60006020820190508181036000830152614cc281614c86565b9050919050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6000614d256023836145a6565b9150614d3082614cc9565b604082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b6000614d91601f836145a6565b9150614d9c82614d5b565b602082019050919050565b60006020820190508181036000830152614dc081614d84565b9050919050565b6000614dd282614538565b9150614ddd83614538565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e1257614e11614b82565b5b828201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e796026836145a6565b9150614e8482614e1d565b604082019050919050565b60006020820190508181036000830152614ea881614e6c565b9050919050565b6000614eba82614538565b9150614ec583614538565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614efe57614efd614b82565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f4382614538565b9150614f4e83614538565b925082614f5e57614f5d614f09565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fc56021836145a6565b9150614fd082614f69565b604082019050919050565b60006020820190508181036000830152614ff481614fb8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150576024836145a6565b915061506282614ffb565b604082019050919050565b600060208201905081810360008301526150868161504a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150e96022836145a6565b91506150f48261508d565b604082019050919050565b60006020820190508181036000830152615118816150dc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061517b6025836145a6565b91506151868261511f565b604082019050919050565b600060208201905081810360008301526151aa8161516e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061520d6029836145a6565b9150615218826151b1565b604082019050919050565b6000602082019050818103600083015261523c81615200565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061529f6028836145a6565b91506152aa82615243565b604082019050919050565b600060208201905081810360008301526152ce81615292565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061530b601b836145a6565b9150615316826152d5565b602082019050919050565b6000602082019050818103600083015261533a816152fe565b9050919050565b600081905092915050565b50565b600061535c600083615341565b91506153678261534c565b600082019050919050565b600061537d8261534f565b9150819050919050565b7f6d61726b6574696e6720455448206e6f742073656e7400000000000000000000600082015250565b60006153bd6016836145a6565b91506153c882615387565b602082019050919050565b600060208201905081810360008301526153ec816153b0565b9050919050565b6000604082019050615408600083018561472a565b615415602083018461472a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061545a81614688565b92915050565b60006020828403121561547657615475614533565b5b60006154848482850161544b565b91505092915050565b6000819050919050565b60006154b26154ad6154a88461548d565b614754565b614538565b9050919050565b6154c281615497565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6154fd81614676565b82525050565b600061550f83836154f4565b60208301905092915050565b6000602082019050919050565b6000615533826154c8565b61553d81856154d3565b9350615548836154e4565b8060005b838110156155795781516155608882615503565b975061556b8361551b565b92505060018101905061554c565b5085935050505092915050565b600060a08201905061559b600083018861472a565b6155a860208301876154b9565b81810360408301526155ba8186615528565b90506155c96060830185614821565b6155d6608083018461472a565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220596f08491dd507ccccb5919a0f73af9f6746ed65430de52361f93945404d5ad964736f6c63430008090033
Deployed Bytecode Sourcemap
25441:18579:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33030:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28347:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29259:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30380:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26498:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28624:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29428:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26411:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30919:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28533:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31635:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29749:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26218:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32785:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30475:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26546:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26615:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31180:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37413:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43857:154;;;;;;;;;;;;;:::i;:::-;;26305:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28727:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16144:148;;;;;;;;;;;;;:::i;:::-;;26668:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30252:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15501:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33180:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28438:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26799:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33888:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29975:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17166:305;;;;;;;;;;;;;:::i;:::-;;28933:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16699:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33705:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26729:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33365:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16864:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29108:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33580:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32908:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16447:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33030:138;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33114:6:::1;33104:7;:16;;;;33136:24;33153:6;33136:24;;;;;;:::i;:::-;;;;;;;;33030:138:::0;:::o;28347:83::-;28384:13;28417:5;28410:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28347:83;:::o;29259:161::-;29334:4;29351:39;29360:12;:10;:12::i;:::-;29374:7;29383:6;29351:8;:39::i;:::-;29408:4;29401:11;;29259:161;;;;:::o;30380:87::-;30422:7;30449:10;;30442:17;;30380:87;:::o;26498:41::-;;;;;;;;;;;;;:::o;28624:95::-;28677:7;28704;;28697:14;;28624:95;:::o;29428:313::-;29526:4;29543:36;29553:6;29561:9;29572:6;29543:9;:36::i;:::-;29590:121;29599:6;29607:12;:10;:12::i;:::-;29621:89;29659:6;29621:89;;;;;;;;;;;;;;;;;:11;:19;29633:6;29621:19;;;;;;;;;;;;;;;:33;29641:12;:10;:12::i;:::-;29621:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;29590:8;:121::i;:::-;29729:4;29722:11;;29428:313;;;;;:::o;26411:69::-;;;;;;;;;;;;;:::o;30919:253::-;30985:7;31024;;31013;:18;;31005:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31089:19;31112:10;:8;:10::i;:::-;31089:33;;31140:24;31152:11;31140:7;:11;;:24;;;;:::i;:::-;31133:31;;;30919:253;;;:::o;28533:83::-;28574:5;28599:9;;;;;;;;;;;28592:16;;28533:83;:::o;31635:479::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31717:11:::1;:20;31729:7;31717:20;;;;;;;;;;;;;;;;;;;;;;;;;31709:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;31785:9;31780:327;31804:9;:16;;;;31800:1;:20;31780:327;;;31862:7;31846:23;;:9;31856:1;31846:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;31842:254;;;31905:9;31934:1;31915:9;:16;;;;:20;;;;:::i;:::-;31905:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31890:9;31900:1;31890:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;31974:1;31955:7;:16;31963:7;31955:16;;;;;;;;;;;;;;;:20;;;;32017:5;31994:11;:20;32006:7;31994:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;32041:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;32075:5;;31842:254;31822:3;;;;;:::i;:::-;;;;31780:327;;;;31635:479:::0;:::o;29749:218::-;29837:4;29854:83;29863:12;:10;:12::i;:::-;29877:7;29886:50;29925:10;29886:11;:25;29898:12;:10;:12::i;:::-;29886:25;;;;;;;;;;;;;;;:34;29912:7;29886:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;29854:8;:83::i;:::-;29955:4;29948:11;;29749:218;;;;:::o;26218:26::-;;;;:::o;32785:111::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32884:4:::1;32854:18;:27;32873:7;32854:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;32785:111:::0;:::o;30475:436::-;30565:7;30604;;30593;:18;;30585:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;30663:17;30658:246;;30698:15;30722:19;30733:7;30722:10;:19::i;:::-;30697:44;;;;;;;30763:7;30756:14;;;;;30658:246;30805:23;30836:19;30847:7;30836:10;:19::i;:::-;30803:52;;;;;;;30877:15;30870:22;;;30475:436;;;;;:::o;26546:28::-;;;;;;;;;;;;;:::o;26615:40::-;;;;;;;;;;;;:::o;31180:447::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31377:11:::1;:20;31389:7;31377:20;;;;;;;;;;;;;;;;;;;;;;;;;31376:21;31368:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;31462:1;31443:7;:16;31451:7;31443:16;;;;;;;;;;;;;;;;:20;31440:108;;;31499:37;31519:7;:16;31527:7;31519:16;;;;;;;;;;;;;;;;31499:19;:37::i;:::-;31480:7;:16;31488:7;31480:16;;;;;;;;;;;;;;;:56;;;;31440:108;31581:4;31558:11;:20;31570:7;31558:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;31596:9;31611:7;31596:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31180:447:::0;:::o;37413:123::-;37477:4;37501:18;:27;37520:7;37501:27;;;;;;;;;;;;;;;;;;;;;;;;;37494:34;;37413:123;;;:::o;43857:154::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43920:15:::1;43938:24;43956:4;43938:9;:24::i;:::-;43920:42;;43973:30;43982:10;43994:7;43973:8;:30::i;:::-;;43909:102;43857:154::o:0;26305:33::-;;;;:::o;28727:198::-;28793:7;28817:11;:20;28829:7;28817:20;;;;;;;;;;;;;;;;;;;;;;;;;28813:49;;;28846:7;:16;28854:7;28846:16;;;;;;;;;;;;;;;;28839:23;;;;28813:49;28880:37;28900:7;:16;28908:7;28900:16;;;;;;;;;;;;;;;;28880:19;:37::i;:::-;28873:44;;28727:198;;;;:::o;16144:148::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16251:1:::1;16214:40;;16235:6;::::0;::::1;;;;;;;;16214:40;;;;;;;;;;;;16282:1;16265:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16144:148::o:0;26668:54::-;;;;:::o;30252:120::-;30320:4;30344:11;:20;30356:7;30344:20;;;;;;;;;;;;;;;;;;;;;;;;;30337:27;;30252:120;;;:::o;15501:79::-;15539:7;15566:6;;;;;;;;;;;15559:13;;15501:79;:::o;33180:174::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33282:12:::1;33266:13;:28;;;;33310:36;33333:12;33310:36;;;;;;:::i;:::-;;;;;;;;33180:174:::0;:::o;28438:87::-;28477:13;28510:7;28503:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28438:87;:::o;26799:30::-;;;;;;;;;;;;;:::o;33888:131::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33967:7:::1;33953:11;;:21;;;;;;;;;;;;;;;;;;33990;34003:7;33990:21;;;;;;:::i;:::-;;;;;;;;33888:131:::0;:::o;29975:269::-;30068:4;30085:129;30094:12;:10;:12::i;:::-;30108:7;30117:96;30156:15;30117:96;;;;;;;;;;;;;;;;;:11;:25;30129:12;:10;:12::i;:::-;30117:25;;;;;;;;;;;;;;;:34;30143:7;30117:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;30085:8;:129::i;:::-;30232:4;30225:11;;29975:269;;;;:::o;17166:305::-;17236:10;17218:28;;:14;;;;;;;;;;;:28;;;17210:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;17323:9;;17305:15;:27;17297:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;17414:14;;;;;;;;;;;17385:44;;17406:6;;;;;;;;;;17385:44;;;;;;;;;;;;17449:14;;;;;;;;;;;17440:6;;:23;;;;;;;;;;;;;;;;;;17166:305::o;28933:167::-;29011:4;29028:42;29038:12;:10;:12::i;:::-;29052:9;29063:6;29028:9;:42::i;:::-;29088:4;29081:11;;28933:167;;;;:::o;16699:89::-;16744:7;16771:9;;16764:16;;16699:89;:::o;33705:171::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33806:8:::1;33782:21;::::0;:32:::1;;;;;;;;;;;;;;;;;;33830:38;33859:8;33830:38;;;;;;:::i;:::-;;;;;;;;33705:171:::0;:::o;26729:57::-;;;;:::o;33365:207::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33459:60:::1;33503:5;33459:25;33471:12;33459:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;33444:12;:75;;;;33535:29;33551:12;33535:29;;;;;;:::i;:::-;;;;;;;;33365:207:::0;:::o;16864:226::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16945:6:::1;::::0;::::1;;;;;;;;16928:14;;:23;;;;;;;;;;;;;;;;;;16979:1;16962:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17022:4;17004:15;:22;;;;:::i;:::-;16992:9;:34;;;;17079:1;17042:40;;17063:6;::::0;::::1;;;;;;;;17042:40;;;;;;;;;;;;16864:226:::0;:::o;29108:143::-;29189:7;29216:11;:18;29228:5;29216:18;;;;;;;;;;;;;;;:27;29235:7;29216:27;;;;;;;;;;;;;;;;29209:34;;29108:143;;;;:::o;33580:117::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33683:6:::1;33651:29;:38;;;;33580:117:::0;:::o;32908:110::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33005:5:::1;32975:18;:27;32994:7;32975:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;32908:110:::0;:::o;16447:244::-;15723:12;:10;:12::i;:::-;15713:22;;:6;;;;;;;;;;:22;;;15705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16556:1:::1;16536:22;;:8;:22;;;;16528:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16646:8;16617:38;;16638:6;::::0;::::1;;;;;;;;16617:38;;;;;;;;;;;;16675:8;16666:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16447:244:::0;:::o;4829:471::-;4887:7;5137:1;5132;:6;5128:47;;;5162:1;5155:8;;;;5128:47;5187:9;5203:1;5199;:5;;;;:::i;:::-;5187:17;;5232:1;5227;5223;:5;;;;:::i;:::-;:10;5215:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5291:1;5284:8;;;4829:471;;;;;:::o;5776:132::-;5834:7;5861:39;5865:1;5868;5861:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5854:46;;5776:132;;;;:::o;7968:99::-;8021:7;8049:10;8042:17;;7968:99;:::o;37544:337::-;37654:1;37637:19;;:5;:19;;;;37629:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37735:1;37716:21;;:7;:21;;;;37708:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37819:6;37789:11;:18;37801:5;37789:18;;;;;;;;;;;;;;;:27;37808:7;37789:27;;;;;;;;;;;;;;;:36;;;;37857:7;37841:32;;37850:5;37841:32;;;37866:6;37841:32;;;;;;:::i;:::-;;;;;;;;37544:337;;;:::o;37889:1856::-;38027:1;38011:18;;:4;:18;;;;38003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38099:1;38090:6;:10;38082:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38168:7;:5;:7::i;:::-;38160:15;;:4;:15;;;;:32;;;;;38185:7;:5;:7::i;:::-;38179:13;;:2;:13;;;;38160:32;38157:125;;;38225:12;;38215:6;:22;;38207:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;38157:125;38577:28;38608:24;38626:4;38608:9;:24::i;:::-;38577:55;;38797:24;38848:29;;38824:20;:53;;38797:80;;38906:19;:53;;;;;38943:16;;;;;;;;;;;38942:17;38906:53;:91;;;;;38984:13;;;;;;;;;;;38976:21;;:4;:21;;;;38906:91;:129;;;;;39014:21;;;;;;;;;;38906:129;38888:321;;;39161:36;39176:20;39161:14;:36::i;:::-;38888:321;39290:12;39334:13;;;;;;;;;;;39326:21;;:4;:21;;;:44;;;;39357:13;;;;;;;;;;;39351:19;;:2;:19;;;39326:44;39323:90;;;39397:4;39387:14;;39323:90;39429:11;;;;;;;;;;;39428:12;:40;;;;39444:18;:24;39463:4;39444:24;;;;;;;;;;;;;;;;;;;;;;;;;39428:40;:66;;;;39472:18;:22;39491:2;39472:22;;;;;;;;;;;;;;;;;;;;;;;;;39428:66;39425:188;;;39596:5;39586:15;;39425:188;39699:38;39714:4;39719:2;39722:6;39729:7;39699:14;:38::i;:::-;37992:1753;;;37889:1856;;;:::o;4378:192::-;4464:7;4497:1;4492;:6;;4500:12;4484:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4524:9;4540:1;4536;:5;;;;:::i;:::-;4524:17;;4561:1;4554:8;;;4378:192;;;;;:::o;35497:163::-;35538:7;35559:15;35576;35595:19;:17;:19::i;:::-;35558:56;;;;35632:20;35644:7;35632;:11;;:20;;;;:::i;:::-;35625:27;;;;35497:163;:::o;3475:181::-;3533:7;3553:9;3569:1;3565;:5;;;;:::i;:::-;3553:17;;3594:1;3589;:6;;3581:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3647:1;3640:8;;;3475:181;;;;:::o;34274:420::-;34334:7;34343;34352;34361;34370;34379;34400:23;34425:12;34439:18;34461:20;34473:7;34461:11;:20::i;:::-;34399:82;;;;;;34493:15;34510:23;34535:12;34551:50;34563:7;34572:4;34578:10;34590;:8;:10::i;:::-;34551:11;:50::i;:::-;34492:109;;;;;;34620:7;34629:15;34646:4;34652:15;34669:4;34675:10;34612:74;;;;;;;;;;;;;;;;;;34274:420;;;;;;;:::o;6404:278::-;6490:7;6522:1;6518;:5;6525:12;6510:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6549:9;6565:1;6561;:5;;;;:::i;:::-;6549:17;;6673:1;6666:8;;;6404:278;;;;;:::o;39753:877::-;27497:4;27478:16;;:23;;;;;;;;;;;;;;;;;;40111:22:::1;40136:21;40111:46;;40202:38;40219:20;40202:16;:38::i;:::-;40371:18;40392:41;40418:14;40392:21;:25;;:41;;;;:::i;:::-;40371:62;;40447:9;40470;;;;;;;;;;;40462:23;;40493:10;40462:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40446:62;;;40527:4;40519:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;40574:48;40589:20;40611:10;40574:48;;;;;;;:::i;:::-;;;;;;;;39827:803;;;27543:5:::0;27524:16;;:24;;;;;;;;;;;;;;;;;;39753:877;:::o;41310:834::-;41421:7;41417:40;;41443:14;:12;:14::i;:::-;41417:40;41482:11;:19;41494:6;41482:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;41506:11;:22;41518:9;41506:22;;;;;;;;;;;;;;;;;;;;;;;;;41505:23;41482:46;41478:597;;;41545:48;41567:6;41575:9;41586:6;41545:21;:48::i;:::-;41478:597;;;41616:11;:19;41628:6;41616:19;;;;;;;;;;;;;;;;;;;;;;;;;41615:20;:46;;;;;41639:11;:22;41651:9;41639:22;;;;;;;;;;;;;;;;;;;;;;;;;41615:46;41611:464;;;41678:46;41698:6;41706:9;41717:6;41678:19;:46::i;:::-;41611:464;;;41747:11;:19;41759:6;41747:19;;;;;;;;;;;;;;;;;;;;;;;;;41746:20;:47;;;;;41771:11;:22;41783:9;41771:22;;;;;;;;;;;;;;;;;;;;;;;;;41770:23;41746:47;41742:333;;;41810:44;41828:6;41836:9;41847:6;41810:17;:44::i;:::-;41742:333;;;41876:11;:19;41888:6;41876:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;41899:11;:22;41911:9;41899:22;;;;;;;;;;;;;;;;;;;;;;;;;41876:45;41872:203;;;41938:48;41960:6;41968:9;41979:6;41938:21;:48::i;:::-;41872:203;;;42019:44;42037:6;42045:9;42056:6;42019:17;:44::i;:::-;41872:203;41742:333;41611:464;41478:597;42099:7;42095:41;;42121:15;:13;:15::i;:::-;42095:41;41310:834;;;;:::o;35668:561::-;35718:7;35727;35747:15;35765:7;;35747:25;;35783:15;35801:7;;35783:25;;35830:9;35825:289;35849:9;:16;;;;35845:1;:20;35825:289;;;35915:7;35891;:21;35899:9;35909:1;35899:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35891:21;;;;;;;;;;;;;;;;:31;:66;;;;35950:7;35926;:21;35934:9;35944:1;35934:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35926:21;;;;;;;;;;;;;;;;:31;35891:66;35887:97;;;35967:7;;35976;;35959:25;;;;;;;;;35887:97;36009:34;36021:7;:21;36029:9;36039:1;36029:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36021:21;;;;;;;;;;;;;;;;36009:7;:11;;:34;;;;:::i;:::-;35999:44;;36068:34;36080:7;:21;36088:9;36098:1;36088:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36080:21;;;;;;;;;;;;;;;;36068:7;:11;;:34;;;;:::i;:::-;36058:44;;35867:3;;;;;:::i;:::-;;;;35825:289;;;;36138:20;36150:7;;36138;;:11;;:20;;;;:::i;:::-;36128:7;:30;36124:61;;;36168:7;;36177;;36160:25;;;;;;;;36124:61;36204:7;36213;36196:25;;;;;;35668:561;;;:::o;34702:340::-;34762:7;34771;34780;34800:12;34815:24;34831:7;34815:15;:24::i;:::-;34800:39;;34850:18;34871:30;34893:7;34871:21;:30::i;:::-;34850:51;;34922:23;34948:33;34970:10;34948:17;34960:4;34948:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;34922:59;;35000:15;35017:4;35023:10;34992:42;;;;;;;;;34702:340;;;;;:::o;35050:439::-;35165:7;35174;35183;35203:15;35221:24;35233:11;35221:7;:11;;:24;;;;:::i;:::-;35203:42;;35256:12;35271:21;35280:11;35271:4;:8;;:21;;;;:::i;:::-;35256:36;;35303:18;35324:27;35339:11;35324:10;:14;;:27;;;;:::i;:::-;35303:48;;35372:23;35398:33;35420:10;35398:17;35410:4;35398:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;35372:59;;35450:7;35459:15;35476:4;35442:39;;;;;;;;;;35050:439;;;;;;;;:::o;40638:589::-;40764:21;40802:1;40788:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40764:40;;40833:4;40815;40820:1;40815:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;40859:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40849:4;40854:1;40849:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;40894:62;40911:4;40926:15;;;;;;;;;;;40944:11;40894:8;:62::i;:::-;40995:15;;;;;;;;;;;:66;;;41076:11;41102:1;41146:4;41173;41193:15;40995:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40693:534;40638:589;:::o;3939:136::-;3997:7;4024:43;4028:1;4031;4024:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4017:50;;3939:136;;;;:::o;37017:247::-;37074:1;37063:7;;:12;:34;;;;;37096:1;37079:13;;:18;37063:34;37060:47;;;37100:7;;37060:47;37141:7;;37123:15;:25;;;;37183:13;;37159:21;:37;;;;37227:1;37217:7;:11;;;;37255:1;37239:13;:17;;;;37017:247;:::o;43274:575::-;43377:15;43394:23;43419:12;43433:23;43458:12;43472:18;43495:19;43506:7;43495:10;:19::i;:::-;43376:138;;;;;;;;;;;;43543:28;43563:7;43543;:15;43551:6;43543:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43525:7;:15;43533:6;43525:15;;;;;;;;;;;;;;;:46;;;;43600:28;43620:7;43600;:15;43608:6;43600:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43582:7;:15;43590:6;43582:15;;;;;;;;;;;;;;;:46;;;;43660:39;43683:15;43660:7;:18;43668:9;43660:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43639:7;:18;43647:9;43639:18;;;;;;;;;;;;;;;:60;;;;43713:34;43728:6;43736:10;43713:14;:34::i;:::-;43758:23;43770:4;43776;43758:11;:23::i;:::-;43814:9;43797:44;;43806:6;43797:44;;;43825:15;43797:44;;;;;;:::i;:::-;;;;;;;;43365:484;;;;;;43274:575;;;:::o;42671:595::-;42772:15;42789:23;42814:12;42828:23;42853:12;42867:18;42890:19;42901:7;42890:10;:19::i;:::-;42771:138;;;;;;;;;;;;42938:28;42958:7;42938;:15;42946:6;42938:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42920:7;:15;42928:6;42920:15;;;;;;;;;;;;;;;:46;;;;42998:39;43021:15;42998:7;:18;43006:9;42998:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42977:7;:18;42985:9;42977:18;;;;;;;;;;;;;;;:60;;;;43069:39;43092:15;43069:7;:18;43077:9;43069:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43048:7;:18;43056:9;43048:18;;;;;;;;;;;;;;;:60;;;;43130:34;43145:6;43153:10;43130:14;:34::i;:::-;43175:23;43187:4;43193;43175:11;:23::i;:::-;43231:9;43214:44;;43223:6;43214:44;;;43242:15;43214:44;;;;;;:::i;:::-;;;;;;;;42760:506;;;;;;42671:595;;;:::o;42152:511::-;42251:15;42268:23;42293:12;42307:23;42332:12;42346:18;42369:19;42380:7;42369:10;:19::i;:::-;42250:138;;;;;;;;;;;;42417:28;42437:7;42417;:15;42425:6;42417:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42399:7;:15;42407:6;42399:15;;;;;;;;;;;;;;;:46;;;;42477:39;42500:15;42477:7;:18;42485:9;42477:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42456:7;:18;42464:9;42456:18;;;;;;;;;;;;;;;:60;;;;42527:34;42542:6;42550:10;42527:14;:34::i;:::-;42572:23;42584:4;42590;42572:11;:23::i;:::-;42628:9;42611:44;;42620:6;42611:44;;;42639:15;42611:44;;;;;;:::i;:::-;;;;;;;;42239:424;;;;;;42152:511;;;:::o;32122:651::-;32225:15;32242:23;32267:12;32281:23;32306:12;32320:18;32343:19;32354:7;32343:10;:19::i;:::-;32224:138;;;;;;;;;;;;32391:28;32411:7;32391;:15;32399:6;32391:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32373:7;:15;32381:6;32373:15;;;;;;;;;;;;;;;:46;;;;32448:28;32468:7;32448;:15;32456:6;32448:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32430:7;:15;32438:6;32430:15;;;;;;;;;;;;;;;:46;;;;32508:39;32531:15;32508:7;:18;32516:9;32508:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32487:7;:18;32495:9;32487:18;;;;;;;;;;;;;;;:60;;;;32579:39;32602:15;32579:7;:18;32587:9;32579:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32558:7;:18;32566:9;32558:18;;;;;;;;;;;;;;;:60;;;;32637:34;32652:6;32660:10;32637:14;:34::i;:::-;32682:23;32694:4;32700;32682:11;:23::i;:::-;32738:9;32721:44;;32730:6;32721:44;;;32749:15;32721:44;;;;;;:::i;:::-;;;;;;;;32213:560;;;;;;32122:651;;;:::o;37276:125::-;37330:15;;37320:7;:25;;;;37372:21;;37356:13;:37;;;;37276:125::o;36699:132::-;36763:7;36790:31;36815:5;36790:20;36802:7;;36790;:11;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;36783:38;;36699:132;;;:::o;36839:166::-;36909:7;36936:61;36981:5;36936:26;36948:13;;36936:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;36929:68;;36839:166;;;:::o;36241:440::-;36320:19;36343:10;:8;:10::i;:::-;36320:33;;36364:18;36385:27;36400:11;36385:10;:14;;:27;;;;:::i;:::-;36364:48;;36448:38;36475:10;36448:7;:22;36464:4;36448:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;36423:7;:22;36439:4;36423:22;;;;;;;;;;;;;;;:63;;;;36500:11;:26;36520:4;36500:26;;;;;;;;;;;;;;;;;;;;;;;;;36497:107;;;36566:38;36593:10;36566:7;:22;36582:4;36566:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;36541:7;:22;36557:4;36541:22;;;;;;;;;;;;;;;:63;;;;36497:107;36645:4;36620:43;;36629:6;36620:43;;;36652:10;36620:43;;;;;;:::i;:::-;;;;;;;;36309:372;;36241:440;;:::o;34119:147::-;34197:17;34209:4;34197:7;;:11;;:17;;;;:::i;:::-;34187:7;:27;;;;34238:20;34253:4;34238:10;;:14;;:20;;;;:::i;:::-;34225:10;:33;;;;34119:147;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:153::-;4604:9;4637:37;4668:5;4637:37;:::i;:::-;4624:50;;4527:153;;;:::o;4686:185::-;4800:64;4858:5;4800:64;:::i;:::-;4795:3;4788:77;4686:185;;:::o;4877:276::-;4997:4;5035:2;5024:9;5020:18;5012:26;;5048:98;5143:1;5132:9;5128:17;5119:6;5048:98;:::i;:::-;4877:276;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:118::-;5871:24;5889:5;5871:24;:::i;:::-;5866:3;5859:37;5784:118;;:::o;5908:222::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:71;6120:1;6109:9;6105:17;6096:6;6052:71;:::i;:::-;5908:222;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:329::-;6625:6;6674:2;6662:9;6653:7;6649:23;6645:32;6642:119;;;6680:79;;:::i;:::-;6642:119;6800:1;6825:53;6870:7;6861:6;6850:9;6846:22;6825:53;:::i;:::-;6815:63;;6771:117;6566:329;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:323::-;7692:6;7741:2;7729:9;7720:7;7716:23;7712:32;7709:119;;;7747:79;;:::i;:::-;7709:119;7867:1;7892:50;7934:7;7925:6;7914:9;7910:22;7892:50;:::i;:::-;7882:60;;7838:114;7636:323;;;;:::o;7965:474::-;8033:6;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;7965:474;;;;;:::o;8445:182::-;8585:34;8581:1;8573:6;8569:14;8562:58;8445:182;:::o;8633:366::-;8775:3;8796:67;8860:2;8855:3;8796:67;:::i;:::-;8789:74;;8872:93;8961:3;8872:93;:::i;:::-;8990:2;8985:3;8981:12;8974:19;;8633:366;;;:::o;9005:419::-;9171:4;9209:2;9198:9;9194:18;9186:26;;9258:9;9252:4;9248:20;9244:1;9233:9;9229:17;9222:47;9286:131;9412:4;9286:131;:::i;:::-;9278:139;;9005:419;;;:::o;9430:180::-;9478:77;9475:1;9468:88;9575:4;9572:1;9565:15;9599:4;9596:1;9589:15;9616:320;9660:6;9697:1;9691:4;9687:12;9677:22;;9744:1;9738:4;9734:12;9765:18;9755:81;;9821:4;9813:6;9809:17;9799:27;;9755:81;9883:2;9875:6;9872:14;9852:18;9849:38;9846:84;;;9902:18;;:::i;:::-;9846:84;9667:269;9616:320;;;:::o;9942:229::-;10082:34;10078:1;10070:6;10066:14;10059:58;10151:12;10146:2;10138:6;10134:15;10127:37;9942:229;:::o;10177:366::-;10319:3;10340:67;10404:2;10399:3;10340:67;:::i;:::-;10333:74;;10416:93;10505:3;10416:93;:::i;:::-;10534:2;10529:3;10525:12;10518:19;;10177:366;;;:::o;10549:419::-;10715:4;10753:2;10742:9;10738:18;10730:26;;10802:9;10796:4;10792:20;10788:1;10777:9;10773:17;10766:47;10830:131;10956:4;10830:131;:::i;:::-;10822:139;;10549:419;;;:::o;10974:177::-;11114:29;11110:1;11102:6;11098:14;11091:53;10974:177;:::o;11157:366::-;11299:3;11320:67;11384:2;11379:3;11320:67;:::i;:::-;11313:74;;11396:93;11485:3;11396:93;:::i;:::-;11514:2;11509:3;11505:12;11498:19;;11157:366;;;:::o;11529:419::-;11695:4;11733:2;11722:9;11718:18;11710:26;;11782:9;11776:4;11772:20;11768:1;11757:9;11753:17;11746:47;11810:131;11936:4;11810:131;:::i;:::-;11802:139;;11529:419;;;:::o;11954:180::-;12002:77;11999:1;11992:88;12099:4;12096:1;12089:15;12123:4;12120:1;12113:15;12140:180;12188:77;12185:1;12178:88;12285:4;12282:1;12275:15;12309:4;12306:1;12299:15;12326:191;12366:4;12386:20;12404:1;12386:20;:::i;:::-;12381:25;;12420:20;12438:1;12420:20;:::i;:::-;12415:25;;12459:1;12456;12453:8;12450:34;;;12464:18;;:::i;:::-;12450:34;12509:1;12506;12502:9;12494:17;;12326:191;;;;:::o;12523:180::-;12571:77;12568:1;12561:88;12668:4;12665:1;12658:15;12692:4;12689:1;12682:15;12709:233;12748:3;12771:24;12789:5;12771:24;:::i;:::-;12762:33;;12817:66;12810:5;12807:77;12804:103;;;12887:18;;:::i;:::-;12804:103;12934:1;12927:5;12923:13;12916:20;;12709:233;;;:::o;12948:181::-;13088:33;13084:1;13076:6;13072:14;13065:57;12948:181;:::o;13135:366::-;13277:3;13298:67;13362:2;13357:3;13298:67;:::i;:::-;13291:74;;13374:93;13463:3;13374:93;:::i;:::-;13492:2;13487:3;13483:12;13476:19;;13135:366;;;:::o;13507:419::-;13673:4;13711:2;13700:9;13696:18;13688:26;;13760:9;13754:4;13750:20;13746:1;13735:9;13731:17;13724:47;13788:131;13914:4;13788:131;:::i;:::-;13780:139;;13507:419;;;:::o;13932:222::-;14072:34;14068:1;14060:6;14056:14;14049:58;14141:5;14136:2;14128:6;14124:15;14117:30;13932:222;:::o;14160:366::-;14302:3;14323:67;14387:2;14382:3;14323:67;:::i;:::-;14316:74;;14399:93;14488:3;14399:93;:::i;:::-;14517:2;14512:3;14508:12;14501:19;;14160:366;;;:::o;14532:419::-;14698:4;14736:2;14725:9;14721:18;14713:26;;14785:9;14779:4;14775:20;14771:1;14760:9;14756:17;14749:47;14813:131;14939:4;14813:131;:::i;:::-;14805:139;;14532:419;;;:::o;14957:181::-;15097:33;15093:1;15085:6;15081:14;15074:57;14957:181;:::o;15144:366::-;15286:3;15307:67;15371:2;15366:3;15307:67;:::i;:::-;15300:74;;15383:93;15472:3;15383:93;:::i;:::-;15501:2;15496:3;15492:12;15485:19;;15144:366;;;:::o;15516:419::-;15682:4;15720:2;15709:9;15705:18;15697:26;;15769:9;15763:4;15759:20;15755:1;15744:9;15740:17;15733:47;15797:131;15923:4;15797:131;:::i;:::-;15789:139;;15516:419;;;:::o;15941:305::-;15981:3;16000:20;16018:1;16000:20;:::i;:::-;15995:25;;16034:20;16052:1;16034:20;:::i;:::-;16029:25;;16188:1;16120:66;16116:74;16113:1;16110:81;16107:107;;;16194:18;;:::i;:::-;16107:107;16238:1;16235;16231:9;16224:16;;15941:305;;;;:::o;16252:225::-;16392:34;16388:1;16380:6;16376:14;16369:58;16461:8;16456:2;16448:6;16444:15;16437:33;16252:225;:::o;16483:366::-;16625:3;16646:67;16710:2;16705:3;16646:67;:::i;:::-;16639:74;;16722:93;16811:3;16722:93;:::i;:::-;16840:2;16835:3;16831:12;16824:19;;16483:366;;;:::o;16855:419::-;17021:4;17059:2;17048:9;17044:18;17036:26;;17108:9;17102:4;17098:20;17094:1;17083:9;17079:17;17072:47;17136:131;17262:4;17136:131;:::i;:::-;17128:139;;16855:419;;;:::o;17280:348::-;17320:7;17343:20;17361:1;17343:20;:::i;:::-;17338:25;;17377:20;17395:1;17377:20;:::i;:::-;17372:25;;17565:1;17497:66;17493:74;17490:1;17487:81;17482:1;17475:9;17468:17;17464:105;17461:131;;;17572:18;;:::i;:::-;17461:131;17620:1;17617;17613:9;17602:20;;17280:348;;;;:::o;17634:180::-;17682:77;17679:1;17672:88;17779:4;17776:1;17769:15;17803:4;17800:1;17793:15;17820:185;17860:1;17877:20;17895:1;17877:20;:::i;:::-;17872:25;;17911:20;17929:1;17911:20;:::i;:::-;17906:25;;17950:1;17940:35;;17955:18;;:::i;:::-;17940:35;17997:1;17994;17990:9;17985:14;;17820:185;;;;:::o;18011:220::-;18151:34;18147:1;18139:6;18135:14;18128:58;18220:3;18215:2;18207:6;18203:15;18196:28;18011:220;:::o;18237:366::-;18379:3;18400:67;18464:2;18459:3;18400:67;:::i;:::-;18393:74;;18476:93;18565:3;18476:93;:::i;:::-;18594:2;18589:3;18585:12;18578:19;;18237:366;;;:::o;18609:419::-;18775:4;18813:2;18802:9;18798:18;18790:26;;18862:9;18856:4;18852:20;18848:1;18837:9;18833:17;18826:47;18890:131;19016:4;18890:131;:::i;:::-;18882:139;;18609:419;;;:::o;19034:223::-;19174:34;19170:1;19162:6;19158:14;19151:58;19243:6;19238:2;19230:6;19226:15;19219:31;19034:223;:::o;19263:366::-;19405:3;19426:67;19490:2;19485:3;19426:67;:::i;:::-;19419:74;;19502:93;19591:3;19502:93;:::i;:::-;19620:2;19615:3;19611:12;19604:19;;19263:366;;;:::o;19635:419::-;19801:4;19839:2;19828:9;19824:18;19816:26;;19888:9;19882:4;19878:20;19874:1;19863:9;19859:17;19852:47;19916:131;20042:4;19916:131;:::i;:::-;19908:139;;19635:419;;;:::o;20060:221::-;20200:34;20196:1;20188:6;20184:14;20177:58;20269:4;20264:2;20256:6;20252:15;20245:29;20060:221;:::o;20287:366::-;20429:3;20450:67;20514:2;20509:3;20450:67;:::i;:::-;20443:74;;20526:93;20615:3;20526:93;:::i;:::-;20644:2;20639:3;20635:12;20628:19;;20287:366;;;:::o;20659:419::-;20825:4;20863:2;20852:9;20848:18;20840:26;;20912:9;20906:4;20902:20;20898:1;20887:9;20883:17;20876:47;20940:131;21066:4;20940:131;:::i;:::-;20932:139;;20659:419;;;:::o;21084:224::-;21224:34;21220:1;21212:6;21208:14;21201:58;21293:7;21288:2;21280:6;21276:15;21269:32;21084:224;:::o;21314:366::-;21456:3;21477:67;21541:2;21536:3;21477:67;:::i;:::-;21470:74;;21553:93;21642:3;21553:93;:::i;:::-;21671:2;21666:3;21662:12;21655:19;;21314:366;;;:::o;21686:419::-;21852:4;21890:2;21879:9;21875:18;21867:26;;21939:9;21933:4;21929:20;21925:1;21914:9;21910:17;21903:47;21967:131;22093:4;21967:131;:::i;:::-;21959:139;;21686:419;;;:::o;22111:228::-;22251:34;22247:1;22239:6;22235:14;22228:58;22320:11;22315:2;22307:6;22303:15;22296:36;22111:228;:::o;22345:366::-;22487:3;22508:67;22572:2;22567:3;22508:67;:::i;:::-;22501:74;;22584:93;22673:3;22584:93;:::i;:::-;22702:2;22697:3;22693:12;22686:19;;22345:366;;;:::o;22717:419::-;22883:4;22921:2;22910:9;22906:18;22898:26;;22970:9;22964:4;22960:20;22956:1;22945:9;22941:17;22934:47;22998:131;23124:4;22998:131;:::i;:::-;22990:139;;22717:419;;;:::o;23142:227::-;23282:34;23278:1;23270:6;23266:14;23259:58;23351:10;23346:2;23338:6;23334:15;23327:35;23142:227;:::o;23375:366::-;23517:3;23538:67;23602:2;23597:3;23538:67;:::i;:::-;23531:74;;23614:93;23703:3;23614:93;:::i;:::-;23732:2;23727:3;23723:12;23716:19;;23375:366;;;:::o;23747:419::-;23913:4;23951:2;23940:9;23936:18;23928:26;;24000:9;23994:4;23990:20;23986:1;23975:9;23971:17;23964:47;24028:131;24154:4;24028:131;:::i;:::-;24020:139;;23747:419;;;:::o;24172:177::-;24312:29;24308:1;24300:6;24296:14;24289:53;24172:177;:::o;24355:366::-;24497:3;24518:67;24582:2;24577:3;24518:67;:::i;:::-;24511:74;;24594:93;24683:3;24594:93;:::i;:::-;24712:2;24707:3;24703:12;24696:19;;24355:366;;;:::o;24727:419::-;24893:4;24931:2;24920:9;24916:18;24908:26;;24980:9;24974:4;24970:20;24966:1;24955:9;24951:17;24944:47;25008:131;25134:4;25008:131;:::i;:::-;25000:139;;24727:419;;;:::o;25152:147::-;25253:11;25290:3;25275:18;;25152:147;;;;:::o;25305:114::-;;:::o;25425:398::-;25584:3;25605:83;25686:1;25681:3;25605:83;:::i;:::-;25598:90;;25697:93;25786:3;25697:93;:::i;:::-;25815:1;25810:3;25806:11;25799:18;;25425:398;;;:::o;25829:379::-;26013:3;26035:147;26178:3;26035:147;:::i;:::-;26028:154;;26199:3;26192:10;;25829:379;;;:::o;26214:172::-;26354:24;26350:1;26342:6;26338:14;26331:48;26214:172;:::o;26392:366::-;26534:3;26555:67;26619:2;26614:3;26555:67;:::i;:::-;26548:74;;26631:93;26720:3;26631:93;:::i;:::-;26749:2;26744:3;26740:12;26733:19;;26392:366;;;:::o;26764:419::-;26930:4;26968:2;26957:9;26953:18;26945:26;;27017:9;27011:4;27007:20;27003:1;26992:9;26988:17;26981:47;27045:131;27171:4;27045:131;:::i;:::-;27037:139;;26764:419;;;:::o;27189:332::-;27310:4;27348:2;27337:9;27333:18;27325:26;;27361:71;27429:1;27418:9;27414:17;27405:6;27361:71;:::i;:::-;27442:72;27510:2;27499:9;27495:18;27486:6;27442:72;:::i;:::-;27189:332;;;;;:::o;27527:180::-;27575:77;27572:1;27565:88;27672:4;27669:1;27662:15;27696:4;27693:1;27686:15;27713:143;27770:5;27801:6;27795:13;27786:22;;27817:33;27844:5;27817:33;:::i;:::-;27713:143;;;;:::o;27862:351::-;27932:6;27981:2;27969:9;27960:7;27956:23;27952:32;27949:119;;;27987:79;;:::i;:::-;27949:119;28107:1;28132:64;28188:7;28179:6;28168:9;28164:22;28132:64;:::i;:::-;28122:74;;28078:128;27862:351;;;;:::o;28219:85::-;28264:7;28293:5;28282:16;;28219:85;;;:::o;28310:158::-;28368:9;28401:61;28419:42;28428:32;28454:5;28428:32;:::i;:::-;28419:42;:::i;:::-;28401:61;:::i;:::-;28388:74;;28310:158;;;:::o;28474:147::-;28569:45;28608:5;28569:45;:::i;:::-;28564:3;28557:58;28474:147;;:::o;28627:114::-;28694:6;28728:5;28722:12;28712:22;;28627:114;;;:::o;28747:184::-;28846:11;28880:6;28875:3;28868:19;28920:4;28915:3;28911:14;28896:29;;28747:184;;;;:::o;28937:132::-;29004:4;29027:3;29019:11;;29057:4;29052:3;29048:14;29040:22;;28937:132;;;:::o;29075:108::-;29152:24;29170:5;29152:24;:::i;:::-;29147:3;29140:37;29075:108;;:::o;29189:179::-;29258:10;29279:46;29321:3;29313:6;29279:46;:::i;:::-;29357:4;29352:3;29348:14;29334:28;;29189:179;;;;:::o;29374:113::-;29444:4;29476;29471:3;29467:14;29459:22;;29374:113;;;:::o;29523:732::-;29642:3;29671:54;29719:5;29671:54;:::i;:::-;29741:86;29820:6;29815:3;29741:86;:::i;:::-;29734:93;;29851:56;29901:5;29851:56;:::i;:::-;29930:7;29961:1;29946:284;29971:6;29968:1;29965:13;29946:284;;;30047:6;30041:13;30074:63;30133:3;30118:13;30074:63;:::i;:::-;30067:70;;30160:60;30213:6;30160:60;:::i;:::-;30150:70;;30006:224;29993:1;29990;29986:9;29981:14;;29946:284;;;29950:14;30246:3;30239:10;;29647:608;;;29523:732;;;;:::o;30261:831::-;30524:4;30562:3;30551:9;30547:19;30539:27;;30576:71;30644:1;30633:9;30629:17;30620:6;30576:71;:::i;:::-;30657:80;30733:2;30722:9;30718:18;30709:6;30657:80;:::i;:::-;30784:9;30778:4;30774:20;30769:2;30758:9;30754:18;30747:48;30812:108;30915:4;30906:6;30812:108;:::i;:::-;30804:116;;30930:72;30998:2;30987:9;30983:18;30974:6;30930:72;:::i;:::-;31012:73;31080:3;31069:9;31065:19;31056:6;31012:73;:::i;:::-;30261:831;;;;;;;;:::o
Swarm Source
ipfs://596f08491dd507ccccb5919a0f73af9f6746ed65430de52361f93945404d5ad9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.