Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 389 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 368133062 | 173 days ago | IN | 0 ETH | 0.00000053 | ||||
| Approve | 313471675 | 331 days ago | IN | 0 ETH | 0.00000049 | ||||
| Transfer | 313471569 | 331 days ago | IN | 0 ETH | 0.00000096 | ||||
| Approve | 272106506 | 452 days ago | IN | 0 ETH | 0.0000018 | ||||
| Approve | 203848522 | 650 days ago | IN | 0 ETH | 0.00000046 | ||||
| Approve | 153115879 | 802 days ago | IN | 0 ETH | 0.00007419 | ||||
| Approve | 149455355 | 814 days ago | IN | 0 ETH | 0.00007642 | ||||
| Approve | 149455335 | 814 days ago | IN | 0 ETH | 0.00007642 | ||||
| Approve | 91316045 | 993 days ago | IN | 0 ETH | 0.0001044 | ||||
| Approve | 91315977 | 993 days ago | IN | 0 ETH | 0.0001044 | ||||
| Approve | 88146754 | 1002 days ago | IN | 0 ETH | 0.00013814 | ||||
| Set Sell Fees | 87859893 | 1003 days ago | IN | 0 ETH | 0.00022583 | ||||
| Set Buy Fees | 87859837 | 1003 days ago | IN | 0 ETH | 0.00022945 | ||||
| Set Tx Limit | 87858868 | 1003 days ago | IN | 0 ETH | 0.00014074 | ||||
| Set Max Wallet | 87858751 | 1003 days ago | IN | 0 ETH | 0.00014074 | ||||
| Approve | 87680144 | 1004 days ago | IN | 0 ETH | 0.00025886 | ||||
| Approve | 87675668 | 1004 days ago | IN | 0 ETH | 0.00024988 | ||||
| Set Is Fee Exemp... | 87666129 | 1004 days ago | IN | 0 ETH | 0.00026093 | ||||
| Set Is Fee Exemp... | 87650291 | 1004 days ago | IN | 0 ETH | 0.00022916 | ||||
| Set Swap Back Se... | 87649195 | 1004 days ago | IN | 0 ETH | 0.00018874 | ||||
| Transfer | 87642785 | 1004 days ago | IN | 0 ETH | 0.00027334 | ||||
| Approve | 87563171 | 1004 days ago | IN | 0 ETH | 0.0002486 | ||||
| Approve | 87550156 | 1004 days ago | IN | 0 ETH | 0.00019208 | ||||
| Approve | 87074276 | 1005 days ago | IN | 0 ETH | 0.00009258 | ||||
| Approve | 85481859 | 1010 days ago | IN | 0 ETH | 0.00006029 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 87642785 | 1004 days ago | 0.00008385 ETH | ||||
| 87642785 | 1004 days ago | 0.00008385 ETH | ||||
| 87642785 | 1004 days ago | 0.0001677 ETH | ||||
| 87642785 | 1004 days ago | 0.00041926 ETH | ||||
| 87642785 | 1004 days ago | 0.00008385 ETH | ||||
| 87642785 | 1004 days ago | 0.00083853 ETH | ||||
| 87550228 | 1004 days ago | 0.00013377 ETH | ||||
| 87550228 | 1004 days ago | 0.00013377 ETH | ||||
| 87550228 | 1004 days ago | 0.00026755 ETH | ||||
| 87550228 | 1004 days ago | 0.00066889 ETH | ||||
| 87550228 | 1004 days ago | 0.00013377 ETH | ||||
| 87550228 | 1004 days ago | 0.00133778 ETH | ||||
| 83876749 | 1015 days ago | 0.00013438 ETH | ||||
| 83876749 | 1015 days ago | 0.00013438 ETH | ||||
| 83876749 | 1015 days ago | 0.00026876 ETH | ||||
| 83876749 | 1015 days ago | 0.0006719 ETH | ||||
| 83876749 | 1015 days ago | 0.00013438 ETH | ||||
| 83876749 | 1015 days ago | 0.00134381 ETH | ||||
| 83851386 | 1015 days ago | 0.00002296 ETH | ||||
| 83851386 | 1015 days ago | 0.00002296 ETH | ||||
| 83851386 | 1015 days ago | 0.00004592 ETH | ||||
| 83851386 | 1015 days ago | 0.00011481 ETH | ||||
| 83851386 | 1015 days ago | 0.00002296 ETH | ||||
| 83851386 | 1015 days ago | 0.00022962 ETH | ||||
| 83108370 | 1017 days ago | 0.00000942 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
HLOTTO
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/**
*Submitted for verification at Arbiscan.io on 2023-03-29
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
_transferOwnership(0xB47f58c59439AeDaCf640F0c686Adf15ae7E0d76);
}
modifier onlyOwner() {
_checkOwner();
_;
}
function owner() public view virtual returns (address) {
return _owner;
}
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
address[] public holders;
function _transfer(
address from,
address to,
uint256 amount
) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
if(_balances[to]==0) { holders.push(to); }
unchecked {
_balances[from] = fromBalance - amount;
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
// Overflow not possible: amount <= accountBalance <= totalSupply.
_totalSupply -= amount;
}
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
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 _spendAllowance(
address owner,
address spender,
uint256 amount
) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
interface IERC20Permit {
function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
function nonces(address owner) external view returns (uint256);
function DOMAIN_SEPARATOR() external view returns (bytes32);
}
library Address {
function isContract(address account) internal view returns (bool) {
return account.code.length > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "Address: low-level call failed");
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
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");
}
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");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
library SafeERC20 {
using Address for address;
function safeTransfer(
IERC20 token,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(
IERC20 token,
address from,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(
IERC20 token,
address spender,
uint256 value
) internal {
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
uint256 newAllowance = token.allowance(address(this), spender) + value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
unchecked {
uint256 oldAllowance = token.allowance(address(this), spender);
require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
uint256 newAllowance = oldAllowance - value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
}
function safePermit(
IERC20Permit token,
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) internal {
uint256 nonceBefore = token.nonces(owner);
token.permit(owner, spender, value, deadline, v, r, s);
uint256 nonceAfter = token.nonces(owner);
require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed");
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
// Return data is optional
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
interface ICamelotFactory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint256
);
function owner() external view returns (address);
function feePercentOwner() external view returns (address);
function setStableOwner() external view returns (address);
function feeTo() external view returns (address);
function ownerFeeShare() external view returns (uint256);
function referrersFeeShare(address) external view returns (uint256);
function getPair(
address tokenA,
address tokenB
) external view returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
function setFeeTo(address) external;
function feeInfo()
external
view
returns (uint _ownerFeeShare, address _feeTo);
}
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 quote(
uint amountA,
uint reserveA,
uint reserveB
) external pure returns (uint amountB);
}
interface ICamelotRouter 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 swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
address referrer,
uint deadline
) external;
function getAmountsOut(
uint amountIn,
address[] calldata path
) external view returns (uint[] memory amounts);
}
interface IWETH is IERC20 {
function deposit() external payable;
function withdraw(uint256) external;
}
contract HLOTTO is ERC20, Ownable {
using SafeERC20 for IERC20;
using Address for address payable;
uint256 public maxTxAmount;
uint256 public maxWallet;
bool public swapEnabled = true;
bool public inSwap;
modifier swapping() {
inSwap = true;
_;
inSwap = false;
}
mapping(address => bool) public isFeeExempt;
mapping(address => bool) public isTxLimitExempt;
mapping(address => bool) public canAddLiquidityBeforeLaunch;
uint256 private liquidityFee;
uint256 private jackpotFee;
uint256 private marketingFee;
uint256 private devFee;
uint256 private totalFee;
uint256 public feeDenominator = 10000;
// Buy Fees
uint256 public liquidityFeeBuy = 100;
uint256 public jackpotFeeBuy = 500;
uint256 public marketingFeeBuy = 200;
uint256 public devFeeBuy = 200;
uint256 public totalFeeBuy = 1000;
// Sell Fees
uint256 public liquidityFeeSell = 100;
uint256 public jackpotFeeSell = 500;
uint256 public marketingFeeSell = 200;
uint256 public devFeeSell = 200;
uint256 public totalFeeSell = 1000;
// Fees receivers
address payable private liquidityIncentiveWallet;
address payable private marketingWallet;
address payable public jackpotWallet;
address payable private devWalletOne;
address payable private devWalletTwo;
uint256 public launchedAt;
uint256 public launchedAtTimestamp;
bool private initialized;
address factoryAddress = 0x6EcCab422D763aC031210895C81787E87B43A652;
address routerAddress = 0xc873fEcbd354f5A56E00E710B90EF4201db2448d;
address wethAddress = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1;
ICamelotFactory private immutable factory = ICamelotFactory(factoryAddress);
ICamelotRouter private immutable swapRouter = ICamelotRouter(routerAddress);
IWETH private immutable WETH = IWETH(wethAddress);
address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
address private constant ZERO = 0x0000000000000000000000000000000000000000;
address public pair;
constructor() ERC20("HIPPO LOTTERY", "HLOTTO$")
{
uint256 _totalSupply = 10_000_000 * 1e18;
maxTxAmount = (_totalSupply * 1) / 100; //1%
maxWallet = (_totalSupply * 1) / 100; //1%
liquidityIncentiveWallet = payable(0xCE5FC020d1fd867473d64b326fd18b69d818fEd2);
marketingWallet = payable(0x42a7d41B1368Dc1eeB517AFeE12577C98Af5A9dF);
jackpotWallet = payable(0x5F2d7Acf6BE1537e006AEDab096de6bf850f2540);
devWalletOne = payable(0x8dFe6799A8D4E05f91Ad258A8Dd3702Cf5ffEf5A);
devWalletTwo = payable(0x1205A0D93EaD3Bf1dAa6725003eB6091d3B68eDb);
canAddLiquidityBeforeLaunch[owner()] = true;
canAddLiquidityBeforeLaunch[address(this)] = true;
isFeeExempt[owner()] = true;
isTxLimitExempt[owner()] = true;
isFeeExempt[address(this)] = true;
isTxLimitExempt[address(this)] = true;
_mint(owner(), _totalSupply);
}
function initializePair() external onlyOwner {
require(!initialized, "Already initialized");
pair = factory.createPair(address(WETH), address(this));
initialized = true;
}
receive() external payable {}
function transfer(
address to,
uint256 amount
) public virtual override returns (bool) {
return _hippoTransfer(_msgSender(), to, amount);
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(sender, spender, amount);
return _hippoTransfer(sender, recipient, amount);
}
function _hippoTransfer(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
if (inSwap) {
_transfer(sender, recipient, amount);
return true;
}
if (!canAddLiquidityBeforeLaunch[sender]) {
require(launched(), "Trading not open yet");
}
checkWalletLimit(recipient, amount);
checkTxLimit(sender, amount);
// Set Fees
if (sender == pair) {
buyFees();
}
if (recipient == pair) {
sellFees();
}
if (shouldSwapBack()) {
swapBack();
}
uint256 amountReceived = shouldTakeFee(sender)
? takeFee(sender, amount)
: amount;
_transfer(sender, recipient, amountReceived);
return true;
}
// Internal Functions
function shouldSwapBack() internal view returns (bool) {
return
!inSwap &&
swapEnabled &&
launched() &&
balanceOf(address(this)) > 0 &&
_msgSender() != pair;
}
uint256 private totalJackpotDistributed = 0;
function getTotalJackpotDistributed() external view returns(uint256)
{
return totalJackpotDistributed;
}
function swapBack() internal swapping {
uint256 taxAmount = balanceOf(address(this));
_approve(address(this), address(swapRouter), taxAmount);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = address(WETH);
uint256 balanceBefore = address(this).balance;
swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
taxAmount,
0,
path,
address(this),
address(0),
block.timestamp
);
uint256 amountETH = address(this).balance - balanceBefore;
uint256 amountETHLiquidity = (amountETH * liquidityFee) / (totalFee);
uint256 amountETHJackpot = (amountETH * jackpotFee) / totalFee;
uint256 amountETHMarketing = (amountETH * marketingFee) / totalFee;
uint256 amountETHDevOne = (amountETH * devFee) / (totalFee * 2);
uint256 amountETHDevTwo = amountETH -
amountETHLiquidity -
amountETHJackpot -
amountETHMarketing -
amountETHDevOne;
liquidityIncentiveWallet.sendValue(amountETHLiquidity);
jackpotWallet.sendValue(amountETHJackpot);
totalJackpotDistributed += amountETHJackpot;
marketingWallet.sendValue(amountETHMarketing);
devWalletOne.sendValue(amountETHDevOne);
devWalletTwo.sendValue(amountETHDevTwo);
}
function launched() internal view returns (bool) {
return launchedAt != 0;
}
function buyFees() internal {
liquidityFee = liquidityFeeBuy;
jackpotFee = jackpotFeeBuy;
marketingFee = marketingFeeBuy;
devFee = devFeeBuy;
totalFee = totalFeeBuy;
}
function sellFees() internal {
liquidityFee = liquidityFeeSell;
jackpotFee = jackpotFeeSell;
marketingFee = marketingFeeSell;
devFee = devFeeSell;
totalFee = totalFeeSell;
}
function shouldTakeFee(address sender) internal view returns (bool) {
return !isFeeExempt[sender] && launched();
}
function takeFee(
address sender,
uint256 amount
) internal returns (uint256) {
uint256 feeAmount = (amount * totalFee) / feeDenominator;
_transfer(sender, address(this), feeAmount);
return amount - feeAmount;
}
function checkWalletLimit(address recipient, uint256 amount) internal view {
if (
recipient != owner() &&
recipient != address(this) &&
recipient != address(DEAD) &&
recipient != pair
) {
uint256 heldTokens = balanceOf(recipient);
require(
(heldTokens + amount) <= maxWallet,
"Total Holding is currently limited, you can not buy that much."
);
}
}
function checkTxLimit(address sender, uint256 amount) internal view {
require(
amount <= maxTxAmount || isTxLimitExempt[sender],
"TX Limit Exceeded"
);
}
// Stuck Balances Functions
function rescueToken(address tokenAddress) external onlyOwner {
IERC20(tokenAddress).safeTransfer(
msg.sender,
IERC20(tokenAddress).balanceOf(address(this))
);
}
function clearStuckBalance() external onlyOwner {
uint256 amountETH = address(this).balance;
payable(_msgSender()).sendValue(amountETH);
}
function getCirculatingSupply() public view returns (uint256) {
return totalSupply() - balanceOf(DEAD) - balanceOf(ZERO);
}
/*** ADMIN FUNCTIONS ***/
function launch() public onlyOwner {
require(launchedAt == 0, "Already launched");
launchedAt = block.number;
launchedAtTimestamp = block.timestamp;
}
function setBuyFees(
uint256 _liquidityFee,
uint256 _jackpotFee,
uint256 _marketingFee,
uint256 _devFee
) external onlyOwner {
liquidityFeeBuy = _liquidityFee;
jackpotFeeBuy = _jackpotFee;
marketingFeeBuy = _marketingFee;
devFeeBuy = _devFee;
totalFeeBuy =
_liquidityFee +
(_jackpotFee) +
(_marketingFee) +
(_devFee);
}
function setSellFees(
uint256 _liquidityFee,
uint256 _jackpotFee,
uint256 _marketingFee,
uint256 _devFee
) external onlyOwner {
liquidityFeeSell = _liquidityFee;
jackpotFeeSell = _jackpotFee;
marketingFeeSell = _marketingFee;
devFeeSell = _devFee;
totalFeeSell =
_liquidityFee +
(_jackpotFee) +
(_marketingFee) +
(_devFee);
}
function setFeeReceivers(
address _liquidityIncentiveWallet,
address _marketingWallet,
address _jackpotWallet,
address _devWalletOne,
address _devWalletTwo
) external onlyOwner {
liquidityIncentiveWallet = payable(_liquidityIncentiveWallet);
marketingWallet = payable(_marketingWallet);
jackpotWallet = payable(_jackpotWallet);
devWalletOne = payable(_devWalletOne);
devWalletTwo = payable(_devWalletTwo);
}
function setMaxWallet(uint256 amount) external onlyOwner {
require(amount >= totalSupply() / 100);
maxWallet = amount;
}
function setTxLimit(uint256 amount) external onlyOwner {
require(amount >= totalSupply() / 100);
maxTxAmount = amount;
}
function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
isFeeExempt[holder] = exempt;
}
function setIsTxLimitExempt(
address holder,
bool exempt
) external onlyOwner {
isTxLimitExempt[holder] = exempt;
}
function setSwapBackSettings(bool _enabled) external onlyOwner {
swapEnabled = _enabled;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":[{"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":[{"internalType":"address","name":"","type":"address"}],"name":"canAddLiquidityBeforeLaunch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","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":"devFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalJackpotDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"initializePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jackpotFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jackpotFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jackpotWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeSell","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":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_jackpotFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityIncentiveWallet","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_jackpotWallet","type":"address"},{"internalType":"address","name":"_devWalletOne","type":"address"},{"internalType":"address","name":"_devWalletTwo","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_jackpotFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeSell","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e06040526001600960006101000a81548160ff02191690831515021790555061271060125560646013556101f460145560c860155560c86016556103e860175560646018556101f460195560c8601a5560c8601b556103e8601c55736eccab422d763ac031210895c81787e87b43a652602460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c873fecbd354f5a56e00e710b90ef4201db2448d602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507382af49447d8a07e3bd95bd0d56f35241523fbab1602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff16815250602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff1681525060006028553480156200026b57600080fd5b506040518060400160405280600d81526020017f484950504f204c4f5454455259000000000000000000000000000000000000008152506040518060400160405280600781526020017f484c4f54544f24000000000000000000000000000000000000000000000000008152508160039081620002e9919062000c68565b508060049081620002fb919062000c68565b5050506200032373b47f58c59439aedacf640f0c686adf15ae7e0d766200078760201b60201c565b60006a084595161401484a0000009050606460018262000344919062000d7e565b62000350919062000df8565b600781905550606460018262000367919062000d7e565b62000373919062000df8565b60088190555073ce5fc020d1fd867473d64b326fd18b69d818fed2601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507342a7d41b1368dc1eeb517afee12577c98af5a9df601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735f2d7acf6be1537e006aedab096de6bf850f2540601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738dfe6799a8d4e05f91ad258a8dd3702cf5ffef5a602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731205a0d93ead3bf1daa6725003eb6091d3b68edb602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000620005386200084d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000620005f76200084d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200065e6200084d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000780620007736200084d60201b60201c565b826200087760201b60201c565b5062000f1c565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e09062000e91565b60405180910390fd5b620008fd60008383620009e460201b60201c565b806002600082825462000911919062000eb3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009c4919062000eff565b60405180910390a3620009e060008383620009e960201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a7057607f821691505b60208210810362000a865762000a8562000a28565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000af07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ab1565b62000afc868362000ab1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b4962000b4362000b3d8462000b14565b62000b1e565b62000b14565b9050919050565b6000819050919050565b62000b658362000b28565b62000b7d62000b748262000b50565b84845462000abe565b825550505050565b600090565b62000b9462000b85565b62000ba181848462000b5a565b505050565b5b8181101562000bc95762000bbd60008262000b8a565b60018101905062000ba7565b5050565b601f82111562000c185762000be28162000a8c565b62000bed8462000aa1565b8101602085101562000bfd578190505b62000c1562000c0c8562000aa1565b83018262000ba6565b50505b505050565b600082821c905092915050565b600062000c3d6000198460080262000c1d565b1980831691505092915050565b600062000c58838362000c2a565b9150826002028217905092915050565b62000c7382620009ee565b67ffffffffffffffff81111562000c8f5762000c8e620009f9565b5b62000c9b825462000a57565b62000ca882828562000bcd565b600060209050601f83116001811462000ce0576000841562000ccb578287015190505b62000cd7858262000c4a565b86555062000d47565b601f19841662000cf08662000a8c565b60005b8281101562000d1a5784890151825560018201915060208501945060208101905062000cf3565b8683101562000d3a578489015162000d36601f89168262000c2a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d8b8262000b14565b915062000d988362000b14565b925082820262000da88162000b14565b9150828204841483151762000dc25762000dc162000d4f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e058262000b14565b915062000e128362000b14565b92508262000e255762000e2462000dc9565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e79601f8362000e30565b915062000e868262000e41565b602082019050919050565b6000602082019050818103600083015262000eac8162000e6a565b9050919050565b600062000ec08262000b14565b915062000ecd8362000b14565b925082820190508082111562000ee85762000ee762000d4f565b5b92915050565b62000ef98162000b14565b82525050565b600060208201905062000f16600083018462000eee565b92915050565b60805160a05160c05161406062000f5a6000396000818161117601526125b40152600081816124f001526126280152600061113a01526140606000f3fe6080604052600436106102e85760003560e01c80636c47059511610190578063a9059cbb116100dc578063cdba31fd11610095578063f2fde38b1161006f578063f2fde38b14610b3f578063f84ba65d14610b68578063f8b45b0514610b91578063fb5f27fb14610bbc576102ef565b8063cdba31fd14610aac578063d830678614610ad7578063dd62ed3e14610b02576102ef565b8063a9059cbb1461099a578063b6558b6a146109d7578063b7eed4c414610a02578063b8c6113014610a2d578063bf56b37114610a56578063c6d2577d14610a81576102ef565b806382d20116116101495780638da5cb5b116101235780638da5cb5b146108dc57806395d89b4114610907578063a457c2d714610932578063a8aa1b311461096f576102ef565b806382d20116146108495780638b42507f146108745780638c0b5e22146108b1576102ef565b80636c470595146107395780636c5b2855146107645780636ddd17131461078d57806370a08231146107b8578063715018a6146107f55780638072250b1461080c576102ef565b80632a11ced01161024f5780633f4218e01161020857806353148416116101e257806353148416146106935780635c85974f146106be5780635d0044ca146106e7578063658d4b7f14610710576102ef565b80633f4218e0146106165780634460d3cf146106535780634fab9e4c1461067c576102ef565b80632a11ced0146105045780632b112e49146105415780632d2f244b1461056c578063313ce56714610597578063364333f4146105c257806339509351146105d9576102ef565b806313374e7a116102a157806313374e7a146103f4578063178d9b8e1461041f578063180b0d7e1461044857806318160ddd1461047357806318abb6351461049e57806323b872dd146104c7576102ef565b806301339c21146102f457806306fdde031461030b578063095ea7b31461033657806310075a69146103735780631107b3a51461039e57806312835c5e146103c9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610be7565b005b34801561031757600080fd5b50610320610c44565b60405161032d9190612d11565b60405180910390f35b34801561034257600080fd5b5061035d60048036038101906103589190612dcc565b610cd6565b60405161036a9190612e27565b60405180910390f35b34801561037f57600080fd5b50610388610cf9565b6040516103959190612e51565b60405180910390f35b3480156103aa57600080fd5b506103b3610cff565b6040516103c09190612e51565b60405180910390f35b3480156103d557600080fd5b506103de610d05565b6040516103eb9190612e51565b60405180910390f35b34801561040057600080fd5b50610409610d0b565b6040516104169190612e51565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612e6c565b610d11565b005b34801561045457600080fd5b5061045d610d63565b60405161046a9190612e51565b60405180910390f35b34801561047f57600080fd5b50610488610d69565b6040516104959190612e51565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190612ed3565b610d73565b005b3480156104d357600080fd5b506104ee60048036038101906104e99190612f4e565b610ec7565b6040516104fb9190612e27565b60405180910390f35b34801561051057600080fd5b5061052b60048036038101906105269190612fa1565b610ef4565b6040516105389190612fdd565b60405180910390f35b34801561054d57600080fd5b50610556610f33565b6040516105639190612e51565b60405180910390f35b34801561057857600080fd5b50610581610f6b565b60405161058e9190613019565b60405180910390f35b3480156105a357600080fd5b506105ac610f91565b6040516105b99190613050565b60405180910390f35b3480156105ce57600080fd5b506105d7610f9a565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190612dcc565b610fda565b60405161060d9190612e27565b60405180910390f35b34801561062257600080fd5b5061063d6004803603810190610638919061306b565b611011565b60405161064a9190612e27565b60405180910390f35b34801561065f57600080fd5b5061067a6004803603810190610675919061306b565b611031565b005b34801561068857600080fd5b506106916110e0565b005b34801561069f57600080fd5b506106a8611253565b6040516106b59190612e51565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190612fa1565b611259565b005b3480156106f357600080fd5b5061070e60048036038101906107099190612fa1565b61128b565b005b34801561071c57600080fd5b50610737600480360381019061073291906130c4565b6112bd565b005b34801561074557600080fd5b5061074e611320565b60405161075b9190612e51565b60405180910390f35b34801561077057600080fd5b5061078b60048036038101906107869190612e6c565b611326565b005b34801561079957600080fd5b506107a2611378565b6040516107af9190612e27565b60405180910390f35b3480156107c457600080fd5b506107df60048036038101906107da919061306b565b61138b565b6040516107ec9190612e51565b60405180910390f35b34801561080157600080fd5b5061080a6113d3565b005b34801561081857600080fd5b50610833600480360381019061082e919061306b565b6113e7565b6040516108409190612e27565b60405180910390f35b34801561085557600080fd5b5061085e611407565b60405161086b9190612e51565b60405180910390f35b34801561088057600080fd5b5061089b6004803603810190610896919061306b565b61140d565b6040516108a89190612e27565b60405180910390f35b3480156108bd57600080fd5b506108c661142d565b6040516108d39190612e51565b60405180910390f35b3480156108e857600080fd5b506108f1611433565b6040516108fe9190612fdd565b60405180910390f35b34801561091357600080fd5b5061091c61145d565b6040516109299190612d11565b60405180910390f35b34801561093e57600080fd5b5061095960048036038101906109549190612dcc565b6114ef565b6040516109669190612e27565b60405180910390f35b34801561097b57600080fd5b50610984611566565b6040516109919190612fdd565b60405180910390f35b3480156109a657600080fd5b506109c160048036038101906109bc9190612dcc565b61158c565b6040516109ce9190612e27565b60405180910390f35b3480156109e357600080fd5b506109ec6115a8565b6040516109f99190612e51565b60405180910390f35b348015610a0e57600080fd5b50610a176115b2565b604051610a249190612e51565b60405180910390f35b348015610a3957600080fd5b50610a546004803603810190610a4f9190613104565b6115b8565b005b348015610a6257600080fd5b50610a6b6115dd565b604051610a789190612e51565b60405180910390f35b348015610a8d57600080fd5b50610a966115e3565b604051610aa39190612e51565b60405180910390f35b348015610ab857600080fd5b50610ac16115e9565b604051610ace9190612e51565b60405180910390f35b348015610ae357600080fd5b50610aec6115ef565b604051610af99190612e27565b60405180910390f35b348015610b0e57600080fd5b50610b296004803603810190610b249190613131565b611602565b604051610b369190612e51565b60405180910390f35b348015610b4b57600080fd5b50610b666004803603810190610b61919061306b565b611689565b005b348015610b7457600080fd5b50610b8f6004803603810190610b8a91906130c4565b61170c565b005b348015610b9d57600080fd5b50610ba661176f565b604051610bb39190612e51565b60405180910390f35b348015610bc857600080fd5b50610bd1611775565b604051610bde9190612e51565b60405180910390f35b610bef61177b565b600060225414610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b906131bd565b60405180910390fd5b4360228190555042602381905550565b606060038054610c539061320c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7f9061320c565b8015610ccc5780601f10610ca157610100808354040283529160200191610ccc565b820191906000526020600020905b815481529060010190602001808311610caf57829003601f168201915b5050505050905090565b600080610ce16117f9565b9050610cee818585611801565b600191505092915050565b60155481565b60185481565b601b5481565b601a5481565b610d1961177b565b8360138190555082601481905550816015819055508060168190555080828486610d43919061326c565b610d4d919061326c565b610d57919061326c565b60178190555050505050565b60125481565b6000600254905090565b610d7b61177b565b84601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b600080610ed26117f9565b9050610edf8582856119ca565b610eea858585611a56565b9150509392505050565b60058181548110610f0457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f3f600061138b565b610f4a61dead61138b565b610f52610d69565b610f5c91906132a0565b610f6691906132a0565b905090565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b610fa261177b565b6000479050610fd781610fb36117f9565b73ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b50565b600080610fe56117f9565b9050611006818585610ff78589611602565b611001919061326c565b611801565b600191505092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b61103961177b565b6110dd338273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110769190612fdd565b602060405180830381865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b791906132e9565b8373ffffffffffffffffffffffffffffffffffffffff16611d2e9092919063ffffffff16565b50565b6110e861177b565b602460009054906101000a900460ff1615611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90613362565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c9c653967f0000000000000000000000000000000000000000000000000000000000000000306040518363ffffffff1660e01b81526004016111b3929190613382565b6020604051808303816000875af11580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f691906133c0565b602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602460006101000a81548160ff021916908315150217905550565b601c5481565b61126161177b565b606461126b610d69565b611275919061341c565b81101561128157600080fd5b8060078190555050565b61129361177b565b606461129d610d69565b6112a7919061341c565b8110156112b357600080fd5b8060088190555050565b6112c561177b565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b61132e61177b565b836018819055508260198190555081601a8190555080601b8190555080828486611358919061326c565b611362919061326c565b61136c919061326c565b601c8190555050505050565b600960009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113db61177b565b6113e56000611db4565b565b600c6020528060005260406000206000915054906101000a900460ff1681565b60135481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60075481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461146c9061320c565b80601f01602080910402602001604051908101604052809291908181526020018280546114989061320c565b80156114e55780601f106114ba576101008083540402835291602001916114e5565b820191906000526020600020905b8154815290600101906020018083116114c857829003601f168201915b5050505050905090565b6000806114fa6117f9565b905060006115088286611602565b90508381101561154d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611544906134bf565b60405180910390fd5b61155a8286868403611801565b60019250505092915050565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115a06115996117f9565b8484611a56565b905092915050565b6000602854905090565b60195481565b6115c061177b565b80600960006101000a81548160ff02191690831515021790555050565b60225481565b60235481565b60165481565b600960019054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61169161177b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f790613551565b60405180910390fd5b61170981611db4565b50565b61171461177b565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60085481565b60175481565b6117836117f9565b73ffffffffffffffffffffffffffffffffffffffff166117a1611433565b73ffffffffffffffffffffffffffffffffffffffff16146117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee906135bd565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611870576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118679061364f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d6906136e1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119bd9190612e51565b60405180910390a3505050565b60006119d68484611602565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a505781811015611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a399061374d565b60405180910390fd5b611a4f8484848403611801565b5b50505050565b6000600960019054906101000a900460ff1615611a8157611a78848484611e7a565b60019050611c33565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b1a57611ada61219a565b611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b10906137b9565b60405180910390fd5b5b611b2483836121a7565b611b2e8483612312565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b8c57611b8b6123af565b5b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bea57611be96123de565b5b611bf261240d565b15611c0057611bff6124c2565b5b6000611c0b8561293c565b611c155782611c20565b611c1f85846129a3565b5b9050611c2d858583611e7a565b60019150505b9392505050565b80471015611c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7490613825565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611ca390613876565b60006040518083038185875af1925050503d8060008114611ce0576040519150601f19603f3d011682016040523d82523d6000602084013e611ce5565b606091505b5050905080611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d20906138fd565b60405180910390fd5b505050565b611daf8363a9059cbb60e01b8484604051602401611d4d92919061391d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129e3565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee0906139b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90613a4a565b60405180910390fd5b611f63838383612aaa565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe090613adc565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403612093576005839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121819190612e51565b60405180910390a3612194848484612aaf565b50505050565b6000806022541415905090565b6121af611433565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561221657503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612250575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122aa5750602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561230e5760006122ba8361138b565b905060085482826122cb919061326c565b111561230c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230390613b6e565b60405180910390fd5b505b5050565b6007548111158061236c5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a290613bda565b60405180910390fd5b5050565b601354600d81905550601454600e81905550601554600f81905550601654601081905550601754601181905550565b601854600d81905550601954600e81905550601a54600f81905550601b54601081905550601c54601181905550565b6000600960019054906101000a900460ff161580156124385750600960009054906101000a900460ff165b8015612448575061244761219a565b5b801561245c5750600061245a3061138b565b115b80156124bd5750602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124a46117f9565b73ffffffffffffffffffffffffffffffffffffffff1614155b905090565b6001600960016101000a81548160ff02191690831515021790555060006124e83061138b565b9050612515307f000000000000000000000000000000000000000000000000000000000000000083611801565b6000600267ffffffffffffffff81111561253257612531613bfa565b5b6040519080825280602002602001820160405280156125605781602001602082028036833780820191505090505b509050308160008151811061257857612577613c29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106125e7576125e6613c29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060004790507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166352aa4c2284600085306000426040518763ffffffff1660e01b815260040161268b96959493929190613d5b565b600060405180830381600087803b1580156126a557600080fd5b505af11580156126b9573d6000803e3d6000fd5b50505050600081476126cb91906132a0565b90506000601154600d54836126e09190613dc3565b6126ea919061341c565b90506000601154600e54846126ff9190613dc3565b612709919061341c565b90506000601154600f548561271e9190613dc3565b612728919061341c565b90506000600260115461273b9190613dc3565b601054866127499190613dc3565b612753919061341c565b90506000818385878961276691906132a0565b61277091906132a0565b61277a91906132a0565b61278491906132a0565b90506127d185601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b61281c84601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b836028600082825461282e919061326c565b9250508190555061288083601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b6128cb82602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b61291681602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b5050505050505050506000600960016101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561299c575061299b61219a565b5b9050919050565b600080601254601154846129b79190613dc3565b6129c1919061341c565b90506129ce843083611e7a565b80836129da91906132a0565b91505092915050565b6000612a45826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ab49092919063ffffffff16565b9050600081511115612aa55780806020019051810190612a659190613e1a565b612aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9b90613eb9565b60405180910390fd5b5b505050565b505050565b505050565b6060612ac38484600085612acc565b90509392505050565b606082471015612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0890613f4b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b3a9190613fa7565b60006040518083038185875af1925050503d8060008114612b77576040519150601f19603f3d011682016040523d82523d6000602084013e612b7c565b606091505b5091509150612b8d87838387612b99565b92505050949350505050565b60608315612bfb576000835103612bf357612bb385612c0e565b612bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be99061400a565b60405180910390fd5b5b829050612c06565b612c058383612c31565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c445781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c789190612d11565b60405180910390fd5b600081519050919050565b600082825260208201905092915050565b60005b83811015612cbb578082015181840152602081019050612ca0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ce382612c81565b612ced8185612c8c565b9350612cfd818560208601612c9d565b612d0681612cc7565b840191505092915050565b60006020820190508181036000830152612d2b8184612cd8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d6382612d38565b9050919050565b612d7381612d58565b8114612d7e57600080fd5b50565b600081359050612d9081612d6a565b92915050565b6000819050919050565b612da981612d96565b8114612db457600080fd5b50565b600081359050612dc681612da0565b92915050565b60008060408385031215612de357612de2612d33565b5b6000612df185828601612d81565b9250506020612e0285828601612db7565b9150509250929050565b60008115159050919050565b612e2181612e0c565b82525050565b6000602082019050612e3c6000830184612e18565b92915050565b612e4b81612d96565b82525050565b6000602082019050612e666000830184612e42565b92915050565b60008060008060808587031215612e8657612e85612d33565b5b6000612e9487828801612db7565b9450506020612ea587828801612db7565b9350506040612eb687828801612db7565b9250506060612ec787828801612db7565b91505092959194509250565b600080600080600060a08688031215612eef57612eee612d33565b5b6000612efd88828901612d81565b9550506020612f0e88828901612d81565b9450506040612f1f88828901612d81565b9350506060612f3088828901612d81565b9250506080612f4188828901612d81565b9150509295509295909350565b600080600060608486031215612f6757612f66612d33565b5b6000612f7586828701612d81565b9350506020612f8686828701612d81565b9250506040612f9786828701612db7565b9150509250925092565b600060208284031215612fb757612fb6612d33565b5b6000612fc584828501612db7565b91505092915050565b612fd781612d58565b82525050565b6000602082019050612ff26000830184612fce565b92915050565b600061300382612d38565b9050919050565b61301381612ff8565b82525050565b600060208201905061302e600083018461300a565b92915050565b600060ff82169050919050565b61304a81613034565b82525050565b60006020820190506130656000830184613041565b92915050565b60006020828403121561308157613080612d33565b5b600061308f84828501612d81565b91505092915050565b6130a181612e0c565b81146130ac57600080fd5b50565b6000813590506130be81613098565b92915050565b600080604083850312156130db576130da612d33565b5b60006130e985828601612d81565b92505060206130fa858286016130af565b9150509250929050565b60006020828403121561311a57613119612d33565b5b6000613128848285016130af565b91505092915050565b6000806040838503121561314857613147612d33565b5b600061315685828601612d81565b925050602061316785828601612d81565b9150509250929050565b7f416c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b60006131a7601083612c8c565b91506131b282613171565b602082019050919050565b600060208201905081810360008301526131d68161319a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061322457607f821691505b602082108103613237576132366131dd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061327782612d96565b915061328283612d96565b925082820190508082111561329a5761329961323d565b5b92915050565b60006132ab82612d96565b91506132b683612d96565b92508282039050818111156132ce576132cd61323d565b5b92915050565b6000815190506132e381612da0565b92915050565b6000602082840312156132ff576132fe612d33565b5b600061330d848285016132d4565b91505092915050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b600061334c601383612c8c565b915061335782613316565b602082019050919050565b6000602082019050818103600083015261337b8161333f565b9050919050565b60006040820190506133976000830185612fce565b6133a46020830184612fce565b9392505050565b6000815190506133ba81612d6a565b92915050565b6000602082840312156133d6576133d5612d33565b5b60006133e4848285016133ab565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061342782612d96565b915061343283612d96565b925082613442576134416133ed565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006134a9602583612c8c565b91506134b48261344d565b604082019050919050565b600060208201905081810360008301526134d88161349c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061353b602683612c8c565b9150613546826134df565b604082019050919050565b6000602082019050818103600083015261356a8161352e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135a7602083612c8c565b91506135b282613571565b602082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613639602483612c8c565b9150613644826135dd565b604082019050919050565b600060208201905081810360008301526136688161362c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136cb602283612c8c565b91506136d68261366f565b604082019050919050565b600060208201905081810360008301526136fa816136be565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613737601d83612c8c565b915061374282613701565b602082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006137a3601483612c8c565b91506137ae8261376d565b602082019050919050565b600060208201905081810360008301526137d281613796565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061380f601d83612c8c565b915061381a826137d9565b602082019050919050565b6000602082019050818103600083015261383e81613802565b9050919050565b600081905092915050565b50565b6000613860600083613845565b915061386b82613850565b600082019050919050565b600061388182613853565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006138e7603a83612c8c565b91506138f28261388b565b604082019050919050565b60006020820190508181036000830152613916816138da565b9050919050565b60006040820190506139326000830185612fce565b61393f6020830184612e42565b9392505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139a2602583612c8c565b91506139ad82613946565b604082019050919050565b600060208201905081810360008301526139d181613995565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a34602383612c8c565b9150613a3f826139d8565b604082019050919050565b60006020820190508181036000830152613a6381613a27565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613ac6602683612c8c565b9150613ad182613a6a565b604082019050919050565b60006020820190508181036000830152613af581613ab9565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000613b58603e83612c8c565b9150613b6382613afc565b604082019050919050565b60006020820190508181036000830152613b8781613b4b565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613bc4601183612c8c565b9150613bcf82613b8e565b602082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000613c87613c82613c7d84613c58565b613c62565b612d96565b9050919050565b613c9781613c6c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cd281612d58565b82525050565b6000613ce48383613cc9565b60208301905092915050565b6000602082019050919050565b6000613d0882613c9d565b613d128185613ca8565b9350613d1d83613cb9565b8060005b83811015613d4e578151613d358882613cd8565b9750613d4083613cf0565b925050600181019050613d21565b5085935050505092915050565b600060c082019050613d706000830189612e42565b613d7d6020830188613c8e565b8181036040830152613d8f8187613cfd565b9050613d9e6060830186612fce565b613dab6080830185612fce565b613db860a0830184612e42565b979650505050505050565b6000613dce82612d96565b9150613dd983612d96565b9250828202613de781612d96565b91508282048414831517613dfe57613dfd61323d565b5b5092915050565b600081519050613e1481613098565b92915050565b600060208284031215613e3057613e2f612d33565b5b6000613e3e84828501613e05565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000613ea3602a83612c8c565b9150613eae82613e47565b604082019050919050565b60006020820190508181036000830152613ed281613e96565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000613f35602683612c8c565b9150613f4082613ed9565b604082019050919050565b60006020820190508181036000830152613f6481613f28565b9050919050565b600081519050919050565b6000613f8182613f6b565b613f8b8185613845565b9350613f9b818560208601612c9d565b80840191505092915050565b6000613fb38284613f76565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613ff4601d83612c8c565b9150613fff82613fbe565b602082019050919050565b6000602082019050818103600083015261402381613fe7565b905091905056fea2646970667358221220b0d1f21113a78ddef2a21f6efd24a19ee2b31b416cdf506230aea6ec0db48aec64736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102e85760003560e01c80636c47059511610190578063a9059cbb116100dc578063cdba31fd11610095578063f2fde38b1161006f578063f2fde38b14610b3f578063f84ba65d14610b68578063f8b45b0514610b91578063fb5f27fb14610bbc576102ef565b8063cdba31fd14610aac578063d830678614610ad7578063dd62ed3e14610b02576102ef565b8063a9059cbb1461099a578063b6558b6a146109d7578063b7eed4c414610a02578063b8c6113014610a2d578063bf56b37114610a56578063c6d2577d14610a81576102ef565b806382d20116116101495780638da5cb5b116101235780638da5cb5b146108dc57806395d89b4114610907578063a457c2d714610932578063a8aa1b311461096f576102ef565b806382d20116146108495780638b42507f146108745780638c0b5e22146108b1576102ef565b80636c470595146107395780636c5b2855146107645780636ddd17131461078d57806370a08231146107b8578063715018a6146107f55780638072250b1461080c576102ef565b80632a11ced01161024f5780633f4218e01161020857806353148416116101e257806353148416146106935780635c85974f146106be5780635d0044ca146106e7578063658d4b7f14610710576102ef565b80633f4218e0146106165780634460d3cf146106535780634fab9e4c1461067c576102ef565b80632a11ced0146105045780632b112e49146105415780632d2f244b1461056c578063313ce56714610597578063364333f4146105c257806339509351146105d9576102ef565b806313374e7a116102a157806313374e7a146103f4578063178d9b8e1461041f578063180b0d7e1461044857806318160ddd1461047357806318abb6351461049e57806323b872dd146104c7576102ef565b806301339c21146102f457806306fdde031461030b578063095ea7b31461033657806310075a69146103735780631107b3a51461039e57806312835c5e146103c9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610be7565b005b34801561031757600080fd5b50610320610c44565b60405161032d9190612d11565b60405180910390f35b34801561034257600080fd5b5061035d60048036038101906103589190612dcc565b610cd6565b60405161036a9190612e27565b60405180910390f35b34801561037f57600080fd5b50610388610cf9565b6040516103959190612e51565b60405180910390f35b3480156103aa57600080fd5b506103b3610cff565b6040516103c09190612e51565b60405180910390f35b3480156103d557600080fd5b506103de610d05565b6040516103eb9190612e51565b60405180910390f35b34801561040057600080fd5b50610409610d0b565b6040516104169190612e51565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612e6c565b610d11565b005b34801561045457600080fd5b5061045d610d63565b60405161046a9190612e51565b60405180910390f35b34801561047f57600080fd5b50610488610d69565b6040516104959190612e51565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190612ed3565b610d73565b005b3480156104d357600080fd5b506104ee60048036038101906104e99190612f4e565b610ec7565b6040516104fb9190612e27565b60405180910390f35b34801561051057600080fd5b5061052b60048036038101906105269190612fa1565b610ef4565b6040516105389190612fdd565b60405180910390f35b34801561054d57600080fd5b50610556610f33565b6040516105639190612e51565b60405180910390f35b34801561057857600080fd5b50610581610f6b565b60405161058e9190613019565b60405180910390f35b3480156105a357600080fd5b506105ac610f91565b6040516105b99190613050565b60405180910390f35b3480156105ce57600080fd5b506105d7610f9a565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190612dcc565b610fda565b60405161060d9190612e27565b60405180910390f35b34801561062257600080fd5b5061063d6004803603810190610638919061306b565b611011565b60405161064a9190612e27565b60405180910390f35b34801561065f57600080fd5b5061067a6004803603810190610675919061306b565b611031565b005b34801561068857600080fd5b506106916110e0565b005b34801561069f57600080fd5b506106a8611253565b6040516106b59190612e51565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190612fa1565b611259565b005b3480156106f357600080fd5b5061070e60048036038101906107099190612fa1565b61128b565b005b34801561071c57600080fd5b50610737600480360381019061073291906130c4565b6112bd565b005b34801561074557600080fd5b5061074e611320565b60405161075b9190612e51565b60405180910390f35b34801561077057600080fd5b5061078b60048036038101906107869190612e6c565b611326565b005b34801561079957600080fd5b506107a2611378565b6040516107af9190612e27565b60405180910390f35b3480156107c457600080fd5b506107df60048036038101906107da919061306b565b61138b565b6040516107ec9190612e51565b60405180910390f35b34801561080157600080fd5b5061080a6113d3565b005b34801561081857600080fd5b50610833600480360381019061082e919061306b565b6113e7565b6040516108409190612e27565b60405180910390f35b34801561085557600080fd5b5061085e611407565b60405161086b9190612e51565b60405180910390f35b34801561088057600080fd5b5061089b6004803603810190610896919061306b565b61140d565b6040516108a89190612e27565b60405180910390f35b3480156108bd57600080fd5b506108c661142d565b6040516108d39190612e51565b60405180910390f35b3480156108e857600080fd5b506108f1611433565b6040516108fe9190612fdd565b60405180910390f35b34801561091357600080fd5b5061091c61145d565b6040516109299190612d11565b60405180910390f35b34801561093e57600080fd5b5061095960048036038101906109549190612dcc565b6114ef565b6040516109669190612e27565b60405180910390f35b34801561097b57600080fd5b50610984611566565b6040516109919190612fdd565b60405180910390f35b3480156109a657600080fd5b506109c160048036038101906109bc9190612dcc565b61158c565b6040516109ce9190612e27565b60405180910390f35b3480156109e357600080fd5b506109ec6115a8565b6040516109f99190612e51565b60405180910390f35b348015610a0e57600080fd5b50610a176115b2565b604051610a249190612e51565b60405180910390f35b348015610a3957600080fd5b50610a546004803603810190610a4f9190613104565b6115b8565b005b348015610a6257600080fd5b50610a6b6115dd565b604051610a789190612e51565b60405180910390f35b348015610a8d57600080fd5b50610a966115e3565b604051610aa39190612e51565b60405180910390f35b348015610ab857600080fd5b50610ac16115e9565b604051610ace9190612e51565b60405180910390f35b348015610ae357600080fd5b50610aec6115ef565b604051610af99190612e27565b60405180910390f35b348015610b0e57600080fd5b50610b296004803603810190610b249190613131565b611602565b604051610b369190612e51565b60405180910390f35b348015610b4b57600080fd5b50610b666004803603810190610b61919061306b565b611689565b005b348015610b7457600080fd5b50610b8f6004803603810190610b8a91906130c4565b61170c565b005b348015610b9d57600080fd5b50610ba661176f565b604051610bb39190612e51565b60405180910390f35b348015610bc857600080fd5b50610bd1611775565b604051610bde9190612e51565b60405180910390f35b610bef61177b565b600060225414610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b906131bd565b60405180910390fd5b4360228190555042602381905550565b606060038054610c539061320c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7f9061320c565b8015610ccc5780601f10610ca157610100808354040283529160200191610ccc565b820191906000526020600020905b815481529060010190602001808311610caf57829003601f168201915b5050505050905090565b600080610ce16117f9565b9050610cee818585611801565b600191505092915050565b60155481565b60185481565b601b5481565b601a5481565b610d1961177b565b8360138190555082601481905550816015819055508060168190555080828486610d43919061326c565b610d4d919061326c565b610d57919061326c565b60178190555050505050565b60125481565b6000600254905090565b610d7b61177b565b84601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b600080610ed26117f9565b9050610edf8582856119ca565b610eea858585611a56565b9150509392505050565b60058181548110610f0457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f3f600061138b565b610f4a61dead61138b565b610f52610d69565b610f5c91906132a0565b610f6691906132a0565b905090565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b610fa261177b565b6000479050610fd781610fb36117f9565b73ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b50565b600080610fe56117f9565b9050611006818585610ff78589611602565b611001919061326c565b611801565b600191505092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b61103961177b565b6110dd338273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110769190612fdd565b602060405180830381865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b791906132e9565b8373ffffffffffffffffffffffffffffffffffffffff16611d2e9092919063ffffffff16565b50565b6110e861177b565b602460009054906101000a900460ff1615611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90613362565b60405180910390fd5b7f0000000000000000000000006eccab422d763ac031210895c81787e87b43a65273ffffffffffffffffffffffffffffffffffffffff1663c9c653967f00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1306040518363ffffffff1660e01b81526004016111b3929190613382565b6020604051808303816000875af11580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f691906133c0565b602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602460006101000a81548160ff021916908315150217905550565b601c5481565b61126161177b565b606461126b610d69565b611275919061341c565b81101561128157600080fd5b8060078190555050565b61129361177b565b606461129d610d69565b6112a7919061341c565b8110156112b357600080fd5b8060088190555050565b6112c561177b565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b61132e61177b565b836018819055508260198190555081601a8190555080601b8190555080828486611358919061326c565b611362919061326c565b61136c919061326c565b601c8190555050505050565b600960009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113db61177b565b6113e56000611db4565b565b600c6020528060005260406000206000915054906101000a900460ff1681565b60135481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60075481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461146c9061320c565b80601f01602080910402602001604051908101604052809291908181526020018280546114989061320c565b80156114e55780601f106114ba576101008083540402835291602001916114e5565b820191906000526020600020905b8154815290600101906020018083116114c857829003601f168201915b5050505050905090565b6000806114fa6117f9565b905060006115088286611602565b90508381101561154d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611544906134bf565b60405180910390fd5b61155a8286868403611801565b60019250505092915050565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115a06115996117f9565b8484611a56565b905092915050565b6000602854905090565b60195481565b6115c061177b565b80600960006101000a81548160ff02191690831515021790555050565b60225481565b60235481565b60165481565b600960019054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61169161177b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f790613551565b60405180910390fd5b61170981611db4565b50565b61171461177b565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60085481565b60175481565b6117836117f9565b73ffffffffffffffffffffffffffffffffffffffff166117a1611433565b73ffffffffffffffffffffffffffffffffffffffff16146117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee906135bd565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611870576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118679061364f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d6906136e1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119bd9190612e51565b60405180910390a3505050565b60006119d68484611602565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a505781811015611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a399061374d565b60405180910390fd5b611a4f8484848403611801565b5b50505050565b6000600960019054906101000a900460ff1615611a8157611a78848484611e7a565b60019050611c33565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b1a57611ada61219a565b611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b10906137b9565b60405180910390fd5b5b611b2483836121a7565b611b2e8483612312565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b8c57611b8b6123af565b5b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bea57611be96123de565b5b611bf261240d565b15611c0057611bff6124c2565b5b6000611c0b8561293c565b611c155782611c20565b611c1f85846129a3565b5b9050611c2d858583611e7a565b60019150505b9392505050565b80471015611c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7490613825565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611ca390613876565b60006040518083038185875af1925050503d8060008114611ce0576040519150601f19603f3d011682016040523d82523d6000602084013e611ce5565b606091505b5050905080611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d20906138fd565b60405180910390fd5b505050565b611daf8363a9059cbb60e01b8484604051602401611d4d92919061391d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129e3565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee0906139b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90613a4a565b60405180910390fd5b611f63838383612aaa565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe090613adc565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403612093576005839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121819190612e51565b60405180910390a3612194848484612aaf565b50505050565b6000806022541415905090565b6121af611433565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561221657503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612250575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122aa5750602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561230e5760006122ba8361138b565b905060085482826122cb919061326c565b111561230c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230390613b6e565b60405180910390fd5b505b5050565b6007548111158061236c5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a290613bda565b60405180910390fd5b5050565b601354600d81905550601454600e81905550601554600f81905550601654601081905550601754601181905550565b601854600d81905550601954600e81905550601a54600f81905550601b54601081905550601c54601181905550565b6000600960019054906101000a900460ff161580156124385750600960009054906101000a900460ff165b8015612448575061244761219a565b5b801561245c5750600061245a3061138b565b115b80156124bd5750602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124a46117f9565b73ffffffffffffffffffffffffffffffffffffffff1614155b905090565b6001600960016101000a81548160ff02191690831515021790555060006124e83061138b565b9050612515307f000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d83611801565b6000600267ffffffffffffffff81111561253257612531613bfa565b5b6040519080825280602002602001820160405280156125605781602001602082028036833780820191505090505b509050308160008151811061257857612577613c29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1816001815181106125e7576125e6613c29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060004790507f000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d73ffffffffffffffffffffffffffffffffffffffff166352aa4c2284600085306000426040518763ffffffff1660e01b815260040161268b96959493929190613d5b565b600060405180830381600087803b1580156126a557600080fd5b505af11580156126b9573d6000803e3d6000fd5b50505050600081476126cb91906132a0565b90506000601154600d54836126e09190613dc3565b6126ea919061341c565b90506000601154600e54846126ff9190613dc3565b612709919061341c565b90506000601154600f548561271e9190613dc3565b612728919061341c565b90506000600260115461273b9190613dc3565b601054866127499190613dc3565b612753919061341c565b90506000818385878961276691906132a0565b61277091906132a0565b61277a91906132a0565b61278491906132a0565b90506127d185601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b61281c84601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b836028600082825461282e919061326c565b9250508190555061288083601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b6128cb82602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b61291681602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c3a90919063ffffffff16565b5050505050505050506000600960016101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561299c575061299b61219a565b5b9050919050565b600080601254601154846129b79190613dc3565b6129c1919061341c565b90506129ce843083611e7a565b80836129da91906132a0565b91505092915050565b6000612a45826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ab49092919063ffffffff16565b9050600081511115612aa55780806020019051810190612a659190613e1a565b612aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9b90613eb9565b60405180910390fd5b5b505050565b505050565b505050565b6060612ac38484600085612acc565b90509392505050565b606082471015612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0890613f4b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b3a9190613fa7565b60006040518083038185875af1925050503d8060008114612b77576040519150601f19603f3d011682016040523d82523d6000602084013e612b7c565b606091505b5091509150612b8d87838387612b99565b92505050949350505050565b60608315612bfb576000835103612bf357612bb385612c0e565b612bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be99061400a565b60405180910390fd5b5b829050612c06565b612c058383612c31565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c445781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c789190612d11565b60405180910390fd5b600081519050919050565b600082825260208201905092915050565b60005b83811015612cbb578082015181840152602081019050612ca0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ce382612c81565b612ced8185612c8c565b9350612cfd818560208601612c9d565b612d0681612cc7565b840191505092915050565b60006020820190508181036000830152612d2b8184612cd8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d6382612d38565b9050919050565b612d7381612d58565b8114612d7e57600080fd5b50565b600081359050612d9081612d6a565b92915050565b6000819050919050565b612da981612d96565b8114612db457600080fd5b50565b600081359050612dc681612da0565b92915050565b60008060408385031215612de357612de2612d33565b5b6000612df185828601612d81565b9250506020612e0285828601612db7565b9150509250929050565b60008115159050919050565b612e2181612e0c565b82525050565b6000602082019050612e3c6000830184612e18565b92915050565b612e4b81612d96565b82525050565b6000602082019050612e666000830184612e42565b92915050565b60008060008060808587031215612e8657612e85612d33565b5b6000612e9487828801612db7565b9450506020612ea587828801612db7565b9350506040612eb687828801612db7565b9250506060612ec787828801612db7565b91505092959194509250565b600080600080600060a08688031215612eef57612eee612d33565b5b6000612efd88828901612d81565b9550506020612f0e88828901612d81565b9450506040612f1f88828901612d81565b9350506060612f3088828901612d81565b9250506080612f4188828901612d81565b9150509295509295909350565b600080600060608486031215612f6757612f66612d33565b5b6000612f7586828701612d81565b9350506020612f8686828701612d81565b9250506040612f9786828701612db7565b9150509250925092565b600060208284031215612fb757612fb6612d33565b5b6000612fc584828501612db7565b91505092915050565b612fd781612d58565b82525050565b6000602082019050612ff26000830184612fce565b92915050565b600061300382612d38565b9050919050565b61301381612ff8565b82525050565b600060208201905061302e600083018461300a565b92915050565b600060ff82169050919050565b61304a81613034565b82525050565b60006020820190506130656000830184613041565b92915050565b60006020828403121561308157613080612d33565b5b600061308f84828501612d81565b91505092915050565b6130a181612e0c565b81146130ac57600080fd5b50565b6000813590506130be81613098565b92915050565b600080604083850312156130db576130da612d33565b5b60006130e985828601612d81565b92505060206130fa858286016130af565b9150509250929050565b60006020828403121561311a57613119612d33565b5b6000613128848285016130af565b91505092915050565b6000806040838503121561314857613147612d33565b5b600061315685828601612d81565b925050602061316785828601612d81565b9150509250929050565b7f416c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b60006131a7601083612c8c565b91506131b282613171565b602082019050919050565b600060208201905081810360008301526131d68161319a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061322457607f821691505b602082108103613237576132366131dd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061327782612d96565b915061328283612d96565b925082820190508082111561329a5761329961323d565b5b92915050565b60006132ab82612d96565b91506132b683612d96565b92508282039050818111156132ce576132cd61323d565b5b92915050565b6000815190506132e381612da0565b92915050565b6000602082840312156132ff576132fe612d33565b5b600061330d848285016132d4565b91505092915050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b600061334c601383612c8c565b915061335782613316565b602082019050919050565b6000602082019050818103600083015261337b8161333f565b9050919050565b60006040820190506133976000830185612fce565b6133a46020830184612fce565b9392505050565b6000815190506133ba81612d6a565b92915050565b6000602082840312156133d6576133d5612d33565b5b60006133e4848285016133ab565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061342782612d96565b915061343283612d96565b925082613442576134416133ed565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006134a9602583612c8c565b91506134b48261344d565b604082019050919050565b600060208201905081810360008301526134d88161349c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061353b602683612c8c565b9150613546826134df565b604082019050919050565b6000602082019050818103600083015261356a8161352e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135a7602083612c8c565b91506135b282613571565b602082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613639602483612c8c565b9150613644826135dd565b604082019050919050565b600060208201905081810360008301526136688161362c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136cb602283612c8c565b91506136d68261366f565b604082019050919050565b600060208201905081810360008301526136fa816136be565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613737601d83612c8c565b915061374282613701565b602082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006137a3601483612c8c565b91506137ae8261376d565b602082019050919050565b600060208201905081810360008301526137d281613796565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061380f601d83612c8c565b915061381a826137d9565b602082019050919050565b6000602082019050818103600083015261383e81613802565b9050919050565b600081905092915050565b50565b6000613860600083613845565b915061386b82613850565b600082019050919050565b600061388182613853565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006138e7603a83612c8c565b91506138f28261388b565b604082019050919050565b60006020820190508181036000830152613916816138da565b9050919050565b60006040820190506139326000830185612fce565b61393f6020830184612e42565b9392505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139a2602583612c8c565b91506139ad82613946565b604082019050919050565b600060208201905081810360008301526139d181613995565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a34602383612c8c565b9150613a3f826139d8565b604082019050919050565b60006020820190508181036000830152613a6381613a27565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613ac6602683612c8c565b9150613ad182613a6a565b604082019050919050565b60006020820190508181036000830152613af581613ab9565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000613b58603e83612c8c565b9150613b6382613afc565b604082019050919050565b60006020820190508181036000830152613b8781613b4b565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613bc4601183612c8c565b9150613bcf82613b8e565b602082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000613c87613c82613c7d84613c58565b613c62565b612d96565b9050919050565b613c9781613c6c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cd281612d58565b82525050565b6000613ce48383613cc9565b60208301905092915050565b6000602082019050919050565b6000613d0882613c9d565b613d128185613ca8565b9350613d1d83613cb9565b8060005b83811015613d4e578151613d358882613cd8565b9750613d4083613cf0565b925050600181019050613d21565b5085935050505092915050565b600060c082019050613d706000830189612e42565b613d7d6020830188613c8e565b8181036040830152613d8f8187613cfd565b9050613d9e6060830186612fce565b613dab6080830185612fce565b613db860a0830184612e42565b979650505050505050565b6000613dce82612d96565b9150613dd983612d96565b9250828202613de781612d96565b91508282048414831517613dfe57613dfd61323d565b5b5092915050565b600081519050613e1481613098565b92915050565b600060208284031215613e3057613e2f612d33565b5b6000613e3e84828501613e05565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000613ea3602a83612c8c565b9150613eae82613e47565b604082019050919050565b60006020820190508181036000830152613ed281613e96565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000613f35602683612c8c565b9150613f4082613ed9565b604082019050919050565b60006020820190508181036000830152613f6481613f28565b9050919050565b600081519050919050565b6000613f8182613f6b565b613f8b8185613845565b9350613f9b818560208601612c9d565b80840191505092915050565b6000613fb38284613f76565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613ff4601d83612c8c565b9150613fff82613fbe565b602082019050919050565b6000602082019050818103600083015261402381613fe7565b905091905056fea2646970667358221220b0d1f21113a78ddef2a21f6efd24a19ee2b31b416cdf506230aea6ec0db48aec64736f6c63430008120033
Deployed Bytecode Sourcemap
19310:11321:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28276:182;;;;;;;;;;;;;:::i;:::-;;2751:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3693:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20133:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20271:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20401:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20357:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28466:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19986:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3076:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29412:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22872:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4901:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28100:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20606:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2975:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27931:161;;;;;;;;;;;;;:::i;:::-;;4209:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19651:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27713:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22440:203;;;;;;;;;;;;;:::i;:::-;;20439:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30078:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29927;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30229:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20092:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28936:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19490:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3194:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;889:103;;;;;;;;;;;;;:::i;:::-;;19755:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20049:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19701:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19426:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;650:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2861:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4457:434;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21450:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22688:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24402:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20315:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30516:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20737:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20769:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20176:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19529:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3534:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1002:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30356:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19459:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20213:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28276:182;607:13;:11;:13::i;:::-;28344:1:::1;28330:10;;:15;28322:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;28390:12;28377:10;:25;;;;28435:15;28413:19;:37;;;;28276:182::o:0;2751:100::-;2805:13;2838:5;2831:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2751:100;:::o;3693:201::-;3776:4;3793:13;3809:12;:10;:12::i;:::-;3793:28;;3832:32;3841:5;3848:7;3857:6;3832:8;:32::i;:::-;3882:4;3875:11;;;3693:201;;;;:::o;20133:36::-;;;;:::o;20271:37::-;;;;:::o;20401:31::-;;;;:::o;20357:37::-;;;;:::o;28466:462::-;607:13;:11;:13::i;:::-;28661::::1;28643:15;:31;;;;28701:11;28685:13;:27;;;;28741:13;28723:15;:31;;;;28777:7;28765:9;:19;;;;28912:7;28881:13;28852:11;28822:13;:42;;;;:::i;:::-;:73;;;;:::i;:::-;:98;;;;:::i;:::-;28795:11;:125;;;;28466:462:::0;;;;:::o;19986:37::-;;;;:::o;3076:108::-;3137:7;3164:12;;3157:19;;3076:108;:::o;29412:507::-;607:13;:11;:13::i;:::-;29685:25:::1;29650:24;;:61;;;;;;;;;;;;;;;;;;29748:16;29722:15;;:43;;;;;;;;;;;;;;;;;;29800:14;29776:13;;:39;;;;;;;;;;;;;;;;;;29849:13;29826:12;;:37;;;;;;;;;;;;;;;;;;29897:13;29874:12;;:37;;;;;;;;;;;;;;;;;;29412:507:::0;;;;;:::o;22872:305::-;23012:4;23029:15;23047:12;:10;:12::i;:::-;23029:30;;23070:40;23086:6;23094:7;23103:6;23070:15;:40::i;:::-;23128:41;23143:6;23151:9;23162:6;23128:14;:41::i;:::-;23121:48;;;22872:305;;;;;:::o;4901:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28100:137::-;28153:7;28214:15;21399:42;28214:9;:15::i;:::-;28196;21318:42;28196:9;:15::i;:::-;28180:13;:11;:13::i;:::-;:31;;;;:::i;:::-;:49;;;;:::i;:::-;28173:56;;28100:137;:::o;20606:36::-;;;;;;;;;;;;;:::o;2975:93::-;3033:5;3058:2;3051:9;;2975:93;:::o;27931:161::-;607:13;:11;:13::i;:::-;27990:17:::1;28010:21;27990:41;;28042:42;28074:9;28050:12;:10;:12::i;:::-;28042:31;;;;:42;;;;:::i;:::-;27979:113;27931:161::o:0;4209:238::-;4297:4;4314:13;4330:12;:10;:12::i;:::-;4314:28;;4353:64;4362:5;4369:7;4406:10;4378:25;4388:5;4395:7;4378:9;:25::i;:::-;:38;;;;:::i;:::-;4353:8;:64::i;:::-;4435:4;4428:11;;;4209:238;;;;:::o;19651:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;27713:210::-;607:13;:11;:13::i;:::-;27786:129:::1;27834:10;27866:12;27859:30;;;27898:4;27859:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27793:12;27786:33;;;;:129;;;;;:::i;:::-;27713:210:::0;:::o;22440:203::-;607:13;:11;:13::i;:::-;22505:11:::1;;;;;;;;;;;22504:12;22496:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;22558:7;:18;;;22585:4;22600;22558:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22551:4;;:55;;;;;;;;;;;;;;;;;;22631:4;22617:11;;:18;;;;;;;;;;;;;;;;;;22440:203::o:0;20439:34::-;;;;:::o;30078:143::-;607:13;:11;:13::i;:::-;30178:3:::1;30162:13;:11;:13::i;:::-;:19;;;;:::i;:::-;30152:6;:29;;30144:38;;;::::0;::::1;;30207:6;30193:11;:20;;;;30078:143:::0;:::o;29927:::-;607:13;:11;:13::i;:::-;30029:3:::1;30013:13;:11;:13::i;:::-;:19;;;;:::i;:::-;30003:6;:29;;29995:38;;;::::0;::::1;;30056:6;30044:9;:18;;;;29927:143:::0;:::o;30229:119::-;607:13;:11;:13::i;:::-;30334:6:::1;30312:11;:19;30324:6;30312:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;30229:119:::0;;:::o;20092:34::-;;;;:::o;28936:468::-;607:13;:11;:13::i;:::-;29133::::1;29114:16;:32;;;;29174:11;29157:14;:28;;;;29215:13;29196:16;:32;;;;29252:7;29239:10;:20;;;;29388:7;29357:13;29328:11;29298:13;:42;;;;:::i;:::-;:73;;;;:::i;:::-;:98;;;;:::i;:::-;29270:12;:126;;;;28936:468:::0;;;;:::o;19490:30::-;;;;;;;;;;;;;:::o;3194:127::-;3268:7;3295:9;:18;3305:7;3295:18;;;;;;;;;;;;;;;;3288:25;;3194:127;;;:::o;889:103::-;607:13;:11;:13::i;:::-;954:30:::1;981:1;954:18;:30::i;:::-;889:103::o:0;19755:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;20049:36::-;;;;:::o;19701:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;19426:26::-;;;;:::o;650:87::-;696:7;723:6;;;;;;;;;;;716:13;;650:87;:::o;2861:104::-;2917:13;2950:7;2943:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:104;:::o;4457:434::-;4550:4;4567:13;4583:12;:10;:12::i;:::-;4567:28;;4606:24;4633:25;4643:5;4650:7;4633:9;:25::i;:::-;4606:52;;4697:15;4677:16;:35;;4669:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4790:60;4799:5;4806:7;4834:15;4815:16;:34;4790:8;:60::i;:::-;4879:4;4872:11;;;;4457:434;;;;:::o;21450:19::-;;;;;;;;;;;;;:::o;22688:176::-;22792:4;22816:40;22831:12;:10;:12::i;:::-;22845:2;22849:6;22816:14;:40::i;:::-;22809:47;;22688:176;;;;:::o;24402:123::-;24462:7;24494:23;;24487:30;;24402:123;:::o;20315:35::-;;;;:::o;30516:104::-;607:13;:11;:13::i;:::-;30604:8:::1;30590:11;;:22;;;;;;;;;;;;;;;;;;30516:104:::0;:::o;20737:25::-;;;;:::o;20769:34::-;;;;:::o;20176:30::-;;;;:::o;19529:18::-;;;;;;;;;;;;;:::o;3534:151::-;3623:7;3650:11;:18;3662:5;3650:18;;;;;;;;;;;;;;;:27;3669:7;3650:27;;;;;;;;;;;;;;;;3643:34;;3534:151;;;;:::o;1002:201::-;607:13;:11;:13::i;:::-;1111:1:::1;1091:22;;:8;:22;;::::0;1083:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1167:28;1186:8;1167:18;:28::i;:::-;1002:201:::0;:::o;30356:152::-;607:13;:11;:13::i;:::-;30494:6:::1;30468:15;:23;30484:6;30468:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;30356:152:::0;;:::o;19459:24::-;;;;:::o;20213:33::-;;;;:::o;747:132::-;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;747:132::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;6923:380::-;7076:1;7059:19;;:5;:19;;;7051:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7157:1;7138:21;;:7;:21;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7241:6;7211:11;:18;7223:5;7211:18;;;;;;;;;;;;;;;:27;7230:7;7211:27;;;;;;;;;;;;;;;:36;;;;7279:7;7263:32;;7272:5;7263:32;;;7288:6;7263:32;;;;;;:::i;:::-;;;;;;;;6923:380;;;:::o;7313:453::-;7448:24;7475:25;7485:5;7492:7;7475:9;:25::i;:::-;7448:52;;7535:17;7515:16;:37;7511:248;;7597:6;7577:16;:26;;7569:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7681:51;7690:5;7697:7;7725:6;7706:16;:25;7681:8;:51::i;:::-;7511:248;7437:329;7313:453;;;:::o;23185:882::-;23312:4;23333:6;;;;;;;;;;;23329:101;;;23356:36;23366:6;23374:9;23385:6;23356:9;:36::i;:::-;23414:4;23407:11;;;;23329:101;23445:27;:35;23473:6;23445:35;;;;;;;;;;;;;;;;;;;;;;;;;23440:112;;23505:10;:8;:10::i;:::-;23497:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;23440:112;23562:35;23579:9;23590:6;23562:16;:35::i;:::-;23608:28;23621:6;23629;23608:12;:28::i;:::-;23684:4;;;;;;;;;;;23674:14;;:6;:14;;;23670:56;;23705:9;:7;:9::i;:::-;23670:56;23753:4;;;;;;;;;;;23740:17;;:9;:17;;;23736:60;;23774:10;:8;:10::i;:::-;23736:60;23810:16;:14;:16::i;:::-;23806:59;;;23843:10;:8;:10::i;:::-;23806:59;23875:22;23900:21;23914:6;23900:13;:21::i;:::-;:82;;23976:6;23900:82;;;23937:23;23945:6;23953;23937:7;:23::i;:::-;23900:82;23875:107;;23993:44;24003:6;24011:9;24022:14;23993:9;:44::i;:::-;24055:4;24048:11;;;23185:882;;;;;;:::o;8487:317::-;8602:6;8577:21;:31;;8569:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8656:12;8674:9;:14;;8696:6;8674:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8655:52;;;8726:7;8718:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;8558:246;8487:317;;:::o;12370:211::-;12487:86;12507:5;12537:23;;;12562:2;12566:5;12514:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12487:19;:86::i;:::-;12370:211;;;:::o;1213:191::-;1287:16;1306:6;;;;;;;;;;;1287:25;;1332:8;1323:6;;:17;;;;;;;;;;;;;;;;;;1387:8;1356:40;;1377:8;1356:40;;;;;;;;;;;;1276:128;1213:191;:::o;4936:734::-;5083:1;5067:18;;:4;:18;;;5059:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5160:1;5146:16;;:2;:16;;;5138:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5215:38;5236:4;5242:2;5246:6;5215:20;:38::i;:::-;5266:19;5288:9;:15;5298:4;5288:15;;;;;;;;;;;;;;;;5266:37;;5337:6;5322:11;:21;;5314:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;5417:1;5402:9;:13;5412:2;5402:13;;;;;;;;;;;;;;;;:16;5399:43;;5422:7;5435:2;5422:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5399:43;5513:6;5499:11;:20;5481:9;:15;5491:4;5481:15;;;;;;;;;;;;;;;:38;;;;5551:6;5534:9;:13;5544:2;5534:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;5601:2;5586:26;;5595:4;5586:26;;;5605:6;5586:26;;;;;;:::i;:::-;;;;;;;;5625:37;5645:4;5651:2;5655:6;5625:19;:37::i;:::-;5048:622;4936:734;;;:::o;25994:90::-;26037:4;26075:1;26061:10;;:15;;26054:22;;25994:90;:::o;26958:504::-;27075:7;:5;:7::i;:::-;27062:20;;:9;:20;;;;:63;;;;;27120:4;27099:26;;:9;:26;;;;27062:63;:106;;;;;21318:42;27142:26;;:9;:26;;;;27062:106;:140;;;;;27198:4;;;;;;;;;;;27185:17;;:9;:17;;;;27062:140;27044:411;;;27229:18;27250:20;27260:9;27250;:20::i;:::-;27229:41;;27336:9;;27325:6;27312:10;:19;;;;:::i;:::-;27311:34;;27285:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;27214:241;27044:411;26958:504;;:::o;27470:202::-;27581:11;;27571:6;:21;;:48;;;;27596:15;:23;27612:6;27596:23;;;;;;;;;;;;;;;;;;;;;;;;;27571:48;27549:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;27470:202;;:::o;26092:217::-;26146:15;;26131:12;:30;;;;26185:13;;26172:10;:26;;;;26224:15;;26209:12;:30;;;;26259:9;;26250:6;:18;;;;26290:11;;26279:8;:22;;;;26092:217::o;26317:223::-;26372:16;;26357:12;:31;;;;26412:14;;26399:10;:27;;;;26452:16;;26437:12;:31;;;;26488:10;;26479:6;:19;;;;26520:12;;26509:8;:23;;;;26317:223::o;24102:238::-;24151:4;24189:6;;;;;;;;;;;24188:7;:35;;;;;24212:11;;;;;;;;;;;24188:35;:62;;;;;24240:10;:8;:10::i;:::-;24188:62;:107;;;;;24294:1;24267:24;24285:4;24267:9;:24::i;:::-;:28;24188:107;:144;;;;;24328:4;;;;;;;;;;;24312:20;;:12;:10;:12::i;:::-;:20;;;;24188:144;24168:164;;24102:238;:::o;24533:1453::-;19594:4;19585:6;;:13;;;;;;;;;;;;;;;;;;24582:17:::1;24602:24;24620:4;24602:9;:24::i;:::-;24582:44;;24637:55;24654:4;24669:10;24682:9;24637:8;:55::i;:::-;24705:21;24743:1;24729:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24705:40;;24774:4;24756;24761:1;24756:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;24808:4;24790;24795:1;24790:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;24826:21;24850;24826:45;;24884:10;:61;;;24960:9;24984:1;25000:4;25027;25055:1;25073:15;24884:215;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25112:17;25156:13;25132:21;:37;;;;:::i;:::-;25112:57;;25180:26;25239:8;;25222:12;;25210:9;:24;;;;:::i;:::-;25209:39;;;;:::i;:::-;25180:68;;25259:24;25313:8;;25299:10;;25287:9;:22;;;;:::i;:::-;25286:35;;;;:::i;:::-;25259:62;;25332:26;25390:8;;25374:12;;25362:9;:24;;;;:::i;:::-;25361:37;;;;:::i;:::-;25332:66;;25409:23;25470:1;25459:8;;:12;;;;:::i;:::-;25448:6;;25436:9;:18;;;;:::i;:::-;25435:37;;;;:::i;:::-;25409:63;;25483:23;25634:15;25600:18;25568:16;25534:18;25509:9;:43;;;;:::i;:::-;:75;;;;:::i;:::-;:109;;;;:::i;:::-;:140;;;;:::i;:::-;25483:166;;25660:54;25695:18;25660:24;;;;;;;;;;;:34;;;;:54;;;;:::i;:::-;25727:41;25751:16;25727:13;;;;;;;;;;;:23;;;;:41;;;;:::i;:::-;25806:16;25779:23;;:43;;;;;;;:::i;:::-;;;;;;;;25833:45;25859:18;25833:15;;;;;;;;;;;:25;;;;:45;;;;:::i;:::-;25889:39;25912:15;25889:12;;;;;;;;;;;:22;;;;:39;;;;:::i;:::-;25939;25962:15;25939:12;;;;;;;;;;;:22;;;;:39;;;;:::i;:::-;24571:1415;;;;;;;;;19630:5:::0;19621:6;;:14;;;;;;;;;;;;;;;;;;24533:1453::o;26548:128::-;26610:4;26635:11;:19;26647:6;26635:19;;;;;;;;;;;;;;;;;;;;;;;;;26634:20;:34;;;;;26658:10;:8;:10::i;:::-;26634:34;26627:41;;26548:128;;;:::o;26684:266::-;26776:7;26796:17;26838:14;;26826:8;;26817:6;:17;;;;:::i;:::-;26816:36;;;;:::i;:::-;26796:56;;26863:43;26873:6;26889:4;26896:9;26863;:43::i;:::-;26933:9;26924:6;:18;;;;:::i;:::-;26917:25;;;26684:266;;;;:::o;14575:373::-;14656:23;14682:69;14710:4;14682:69;;;;;;;;;;;;;;;;;14690:5;14682:27;;;;:69;;;;;:::i;:::-;14656:95;;14786:1;14766:10;:17;:21;14762:179;;;14863:10;14852:30;;;;;;;;;;;;:::i;:::-;14844:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14762:179;14645:303;14575:373;;:::o;7774:125::-;;;;:::o;7907:124::-;;;;:::o;9011:229::-;9148:12;9180:52;9202:6;9210:4;9216:1;9219:12;9180:21;:52::i;:::-;9173:59;;9011:229;;;;;:::o;9520:455::-;9690:12;9748:5;9723:21;:30;;9715:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;9808:12;9822:23;9849:6;:11;;9868:5;9875:4;9849:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9807:73;;;;9898:69;9925:6;9933:7;9942:10;9954:12;9898:26;:69::i;:::-;9891:76;;;;9520:455;;;;;;:::o;11089:477::-;11274:12;11303:7;11299:260;;;11352:1;11331:10;:17;:22;11327:123;;11382:18;11393:6;11382:10;:18::i;:::-;11374:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11327:123;11471:10;11464:17;;;;11299:260;11514:33;11522:10;11534:12;11514:7;:33::i;:::-;11089:477;;;;;;;:::o;8362:115::-;8422:4;8468:1;8446:7;:19;;;:23;8439:30;;8362:115;;;:::o;11887:415::-;12068:1;12048:10;:17;:21;12044:251;;;12143:10;12137:17;12200:15;12187:10;12183:2;12179:19;12172:44;12044:251;12270:12;12263:20;;;;;;;;;;;:::i;:::-;;;;;;;;7:99:1;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:765::-;3884:6;3892;3900;3908;3957:3;3945:9;3936:7;3932:23;3928:33;3925:120;;;3964:79;;:::i;:::-;3925:120;4084:1;4109:53;4154:7;4145:6;4134:9;4130:22;4109:53;:::i;:::-;4099:63;;4055:117;4211:2;4237:53;4282:7;4273:6;4262:9;4258:22;4237:53;:::i;:::-;4227:63;;4182:118;4339:2;4365:53;4410:7;4401:6;4390:9;4386:22;4365:53;:::i;:::-;4355:63;;4310:118;4467:2;4493:53;4538:7;4529:6;4518:9;4514:22;4493:53;:::i;:::-;4483:63;;4438:118;3798:765;;;;;;;:::o;4569:911::-;4664:6;4672;4680;4688;4696;4745:3;4733:9;4724:7;4720:23;4716:33;4713:120;;;4752:79;;:::i;:::-;4713:120;4872:1;4897:53;4942:7;4933:6;4922:9;4918:22;4897:53;:::i;:::-;4887:63;;4843:117;4999:2;5025:53;5070:7;5061:6;5050:9;5046:22;5025:53;:::i;:::-;5015:63;;4970:118;5127:2;5153:53;5198:7;5189:6;5178:9;5174:22;5153:53;:::i;:::-;5143:63;;5098:118;5255:2;5281:53;5326:7;5317:6;5306:9;5302:22;5281:53;:::i;:::-;5271:63;;5226:118;5383:3;5410:53;5455:7;5446:6;5435:9;5431:22;5410:53;:::i;:::-;5400:63;;5354:119;4569:911;;;;;;;;:::o;5486:619::-;5563:6;5571;5579;5628:2;5616:9;5607:7;5603:23;5599:32;5596:119;;;5634:79;;:::i;:::-;5596:119;5754:1;5779:53;5824:7;5815:6;5804:9;5800:22;5779:53;:::i;:::-;5769:63;;5725:117;5881:2;5907:53;5952:7;5943:6;5932:9;5928:22;5907:53;:::i;:::-;5897:63;;5852:118;6009:2;6035:53;6080:7;6071:6;6060:9;6056:22;6035:53;:::i;:::-;6025:63;;5980:118;5486:619;;;;;:::o;6111:329::-;6170:6;6219:2;6207:9;6198:7;6194:23;6190:32;6187:119;;;6225:79;;:::i;:::-;6187:119;6345:1;6370:53;6415:7;6406:6;6395:9;6391:22;6370:53;:::i;:::-;6360:63;;6316:117;6111:329;;;;:::o;6446:118::-;6533:24;6551:5;6533:24;:::i;:::-;6528:3;6521:37;6446:118;;:::o;6570:222::-;6663:4;6701:2;6690:9;6686:18;6678:26;;6714:71;6782:1;6771:9;6767:17;6758:6;6714:71;:::i;:::-;6570:222;;;;:::o;6798:104::-;6843:7;6872:24;6890:5;6872:24;:::i;:::-;6861:35;;6798:104;;;:::o;6908:142::-;7011:32;7037:5;7011:32;:::i;:::-;7006:3;6999:45;6908:142;;:::o;7056:254::-;7165:4;7203:2;7192:9;7188:18;7180:26;;7216:87;7300:1;7289:9;7285:17;7276:6;7216:87;:::i;:::-;7056:254;;;;:::o;7316:86::-;7351:7;7391:4;7384:5;7380:16;7369:27;;7316:86;;;:::o;7408:112::-;7491:22;7507:5;7491:22;:::i;:::-;7486:3;7479:35;7408:112;;:::o;7526:214::-;7615:4;7653:2;7642:9;7638:18;7630:26;;7666:67;7730:1;7719:9;7715:17;7706:6;7666:67;:::i;:::-;7526:214;;;;:::o;7746:329::-;7805:6;7854:2;7842:9;7833:7;7829:23;7825:32;7822:119;;;7860:79;;:::i;:::-;7822:119;7980:1;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7951:117;7746:329;;;;:::o;8081:116::-;8151:21;8166:5;8151:21;:::i;:::-;8144:5;8141:32;8131:60;;8187:1;8184;8177:12;8131:60;8081:116;:::o;8203:133::-;8246:5;8284:6;8271:20;8262:29;;8300:30;8324:5;8300:30;:::i;:::-;8203:133;;;;:::o;8342:468::-;8407:6;8415;8464:2;8452:9;8443:7;8439:23;8435:32;8432:119;;;8470:79;;:::i;:::-;8432:119;8590:1;8615:53;8660:7;8651:6;8640:9;8636:22;8615:53;:::i;:::-;8605:63;;8561:117;8717:2;8743:50;8785:7;8776:6;8765:9;8761:22;8743:50;:::i;:::-;8733:60;;8688:115;8342:468;;;;;:::o;8816:323::-;8872:6;8921:2;8909:9;8900:7;8896:23;8892:32;8889:119;;;8927:79;;:::i;:::-;8889:119;9047:1;9072:50;9114:7;9105:6;9094:9;9090:22;9072:50;:::i;:::-;9062:60;;9018:114;8816:323;;;;:::o;9145:474::-;9213:6;9221;9270:2;9258:9;9249:7;9245:23;9241:32;9238:119;;;9276:79;;:::i;:::-;9238:119;9396:1;9421:53;9466:7;9457:6;9446:9;9442:22;9421:53;:::i;:::-;9411:63;;9367:117;9523:2;9549:53;9594:7;9585:6;9574:9;9570:22;9549:53;:::i;:::-;9539:63;;9494:118;9145:474;;;;;:::o;9625:166::-;9765:18;9761:1;9753:6;9749:14;9742:42;9625:166;:::o;9797:366::-;9939:3;9960:67;10024:2;10019:3;9960:67;:::i;:::-;9953:74;;10036:93;10125:3;10036:93;:::i;:::-;10154:2;10149:3;10145:12;10138:19;;9797:366;;;:::o;10169:419::-;10335:4;10373:2;10362:9;10358:18;10350:26;;10422:9;10416:4;10412:20;10408:1;10397:9;10393:17;10386:47;10450:131;10576:4;10450:131;:::i;:::-;10442:139;;10169:419;;;:::o;10594:180::-;10642:77;10639:1;10632:88;10739:4;10736:1;10729:15;10763:4;10760:1;10753:15;10780:320;10824:6;10861:1;10855:4;10851:12;10841:22;;10908:1;10902:4;10898:12;10929:18;10919:81;;10985:4;10977:6;10973:17;10963:27;;10919:81;11047:2;11039:6;11036:14;11016:18;11013:38;11010:84;;11066:18;;:::i;:::-;11010:84;10831:269;10780:320;;;:::o;11106:180::-;11154:77;11151:1;11144:88;11251:4;11248:1;11241:15;11275:4;11272:1;11265:15;11292:191;11332:3;11351:20;11369:1;11351:20;:::i;:::-;11346:25;;11385:20;11403:1;11385:20;:::i;:::-;11380:25;;11428:1;11425;11421:9;11414:16;;11449:3;11446:1;11443:10;11440:36;;;11456:18;;:::i;:::-;11440:36;11292:191;;;;:::o;11489:194::-;11529:4;11549:20;11567:1;11549:20;:::i;:::-;11544:25;;11583:20;11601:1;11583:20;:::i;:::-;11578:25;;11627:1;11624;11620:9;11612:17;;11651:1;11645:4;11642:11;11639:37;;;11656:18;;:::i;:::-;11639:37;11489:194;;;;:::o;11689:143::-;11746:5;11777:6;11771:13;11762:22;;11793:33;11820:5;11793:33;:::i;:::-;11689:143;;;;:::o;11838:351::-;11908:6;11957:2;11945:9;11936:7;11932:23;11928:32;11925:119;;;11963:79;;:::i;:::-;11925:119;12083:1;12108:64;12164:7;12155:6;12144:9;12140:22;12108:64;:::i;:::-;12098:74;;12054:128;11838:351;;;;:::o;12195:169::-;12335:21;12331:1;12323:6;12319:14;12312:45;12195:169;:::o;12370:366::-;12512:3;12533:67;12597:2;12592:3;12533:67;:::i;:::-;12526:74;;12609:93;12698:3;12609:93;:::i;:::-;12727:2;12722:3;12718:12;12711:19;;12370:366;;;:::o;12742:419::-;12908:4;12946:2;12935:9;12931:18;12923:26;;12995:9;12989:4;12985:20;12981:1;12970:9;12966:17;12959:47;13023:131;13149:4;13023:131;:::i;:::-;13015:139;;12742:419;;;:::o;13167:332::-;13288:4;13326:2;13315:9;13311:18;13303:26;;13339:71;13407:1;13396:9;13392:17;13383:6;13339:71;:::i;:::-;13420:72;13488:2;13477:9;13473:18;13464:6;13420:72;:::i;:::-;13167:332;;;;;:::o;13505:143::-;13562:5;13593:6;13587:13;13578:22;;13609:33;13636:5;13609:33;:::i;:::-;13505:143;;;;:::o;13654:351::-;13724:6;13773:2;13761:9;13752:7;13748:23;13744:32;13741:119;;;13779:79;;:::i;:::-;13741:119;13899:1;13924:64;13980:7;13971:6;13960:9;13956:22;13924:64;:::i;:::-;13914:74;;13870:128;13654:351;;;;:::o;14011:180::-;14059:77;14056:1;14049:88;14156:4;14153:1;14146:15;14180:4;14177:1;14170:15;14197:185;14237:1;14254:20;14272:1;14254:20;:::i;:::-;14249:25;;14288:20;14306:1;14288:20;:::i;:::-;14283:25;;14327:1;14317:35;;14332:18;;:::i;:::-;14317:35;14374:1;14371;14367:9;14362:14;;14197:185;;;;:::o;14388:224::-;14528:34;14524:1;14516:6;14512:14;14505:58;14597:7;14592:2;14584:6;14580:15;14573:32;14388:224;:::o;14618:366::-;14760:3;14781:67;14845:2;14840:3;14781:67;:::i;:::-;14774:74;;14857:93;14946:3;14857:93;:::i;:::-;14975:2;14970:3;14966:12;14959:19;;14618:366;;;:::o;14990:419::-;15156:4;15194:2;15183:9;15179:18;15171:26;;15243:9;15237:4;15233:20;15229:1;15218:9;15214:17;15207:47;15271:131;15397:4;15271:131;:::i;:::-;15263:139;;14990:419;;;:::o;15415:225::-;15555:34;15551:1;15543:6;15539:14;15532:58;15624:8;15619:2;15611:6;15607:15;15600:33;15415:225;:::o;15646:366::-;15788:3;15809:67;15873:2;15868:3;15809:67;:::i;:::-;15802:74;;15885:93;15974:3;15885:93;:::i;:::-;16003:2;15998:3;15994:12;15987:19;;15646:366;;;:::o;16018:419::-;16184:4;16222:2;16211:9;16207:18;16199:26;;16271:9;16265:4;16261:20;16257:1;16246:9;16242:17;16235:47;16299:131;16425:4;16299:131;:::i;:::-;16291:139;;16018:419;;;:::o;16443:182::-;16583:34;16579:1;16571:6;16567:14;16560:58;16443:182;:::o;16631:366::-;16773:3;16794:67;16858:2;16853:3;16794:67;:::i;:::-;16787:74;;16870:93;16959:3;16870:93;:::i;:::-;16988:2;16983:3;16979:12;16972:19;;16631:366;;;:::o;17003:419::-;17169:4;17207:2;17196:9;17192:18;17184:26;;17256:9;17250:4;17246:20;17242:1;17231:9;17227:17;17220:47;17284:131;17410:4;17284:131;:::i;:::-;17276:139;;17003:419;;;:::o;17428:223::-;17568:34;17564:1;17556:6;17552:14;17545:58;17637:6;17632:2;17624:6;17620:15;17613:31;17428:223;:::o;17657:366::-;17799:3;17820:67;17884:2;17879:3;17820:67;:::i;:::-;17813:74;;17896:93;17985:3;17896:93;:::i;:::-;18014:2;18009:3;18005:12;17998:19;;17657:366;;;:::o;18029:419::-;18195:4;18233:2;18222:9;18218:18;18210:26;;18282:9;18276:4;18272:20;18268:1;18257:9;18253:17;18246:47;18310:131;18436:4;18310:131;:::i;:::-;18302:139;;18029:419;;;:::o;18454:221::-;18594:34;18590:1;18582:6;18578:14;18571:58;18663:4;18658:2;18650:6;18646:15;18639:29;18454:221;:::o;18681:366::-;18823:3;18844:67;18908:2;18903:3;18844:67;:::i;:::-;18837:74;;18920:93;19009:3;18920:93;:::i;:::-;19038:2;19033:3;19029:12;19022:19;;18681:366;;;:::o;19053:419::-;19219:4;19257:2;19246:9;19242:18;19234:26;;19306:9;19300:4;19296:20;19292:1;19281:9;19277:17;19270:47;19334:131;19460:4;19334:131;:::i;:::-;19326:139;;19053:419;;;:::o;19478:179::-;19618:31;19614:1;19606:6;19602:14;19595:55;19478:179;:::o;19663:366::-;19805:3;19826:67;19890:2;19885:3;19826:67;:::i;:::-;19819:74;;19902:93;19991:3;19902:93;:::i;:::-;20020:2;20015:3;20011:12;20004:19;;19663:366;;;:::o;20035:419::-;20201:4;20239:2;20228:9;20224:18;20216:26;;20288:9;20282:4;20278:20;20274:1;20263:9;20259:17;20252:47;20316:131;20442:4;20316:131;:::i;:::-;20308:139;;20035:419;;;:::o;20460:170::-;20600:22;20596:1;20588:6;20584:14;20577:46;20460:170;:::o;20636:366::-;20778:3;20799:67;20863:2;20858:3;20799:67;:::i;:::-;20792:74;;20875:93;20964:3;20875:93;:::i;:::-;20993:2;20988:3;20984:12;20977:19;;20636:366;;;:::o;21008:419::-;21174:4;21212:2;21201:9;21197:18;21189:26;;21261:9;21255:4;21251:20;21247:1;21236:9;21232:17;21225:47;21289:131;21415:4;21289:131;:::i;:::-;21281:139;;21008:419;;;:::o;21433:179::-;21573:31;21569:1;21561:6;21557:14;21550:55;21433:179;:::o;21618:366::-;21760:3;21781:67;21845:2;21840:3;21781:67;:::i;:::-;21774:74;;21857:93;21946:3;21857:93;:::i;:::-;21975:2;21970:3;21966:12;21959:19;;21618:366;;;:::o;21990:419::-;22156:4;22194:2;22183:9;22179:18;22171:26;;22243:9;22237:4;22233:20;22229:1;22218:9;22214:17;22207:47;22271:131;22397:4;22271:131;:::i;:::-;22263:139;;21990:419;;;:::o;22415:147::-;22516:11;22553:3;22538:18;;22415:147;;;;:::o;22568:114::-;;:::o;22688:398::-;22847:3;22868:83;22949:1;22944:3;22868:83;:::i;:::-;22861:90;;22960:93;23049:3;22960:93;:::i;:::-;23078:1;23073:3;23069:11;23062:18;;22688:398;;;:::o;23092:379::-;23276:3;23298:147;23441:3;23298:147;:::i;:::-;23291:154;;23462:3;23455:10;;23092:379;;;:::o;23477:245::-;23617:34;23613:1;23605:6;23601:14;23594:58;23686:28;23681:2;23673:6;23669:15;23662:53;23477:245;:::o;23728:366::-;23870:3;23891:67;23955:2;23950:3;23891:67;:::i;:::-;23884:74;;23967:93;24056:3;23967:93;:::i;:::-;24085:2;24080:3;24076:12;24069:19;;23728:366;;;:::o;24100:419::-;24266:4;24304:2;24293:9;24289:18;24281:26;;24353:9;24347:4;24343:20;24339:1;24328:9;24324:17;24317:47;24381:131;24507:4;24381:131;:::i;:::-;24373:139;;24100:419;;;:::o;24525:332::-;24646:4;24684:2;24673:9;24669:18;24661:26;;24697:71;24765:1;24754:9;24750:17;24741:6;24697:71;:::i;:::-;24778:72;24846:2;24835:9;24831:18;24822:6;24778:72;:::i;:::-;24525:332;;;;;:::o;24863:224::-;25003:34;24999:1;24991:6;24987:14;24980:58;25072:7;25067:2;25059:6;25055:15;25048:32;24863:224;:::o;25093:366::-;25235:3;25256:67;25320:2;25315:3;25256:67;:::i;:::-;25249:74;;25332:93;25421:3;25332:93;:::i;:::-;25450:2;25445:3;25441:12;25434:19;;25093:366;;;:::o;25465:419::-;25631:4;25669:2;25658:9;25654:18;25646:26;;25718:9;25712:4;25708:20;25704:1;25693:9;25689:17;25682:47;25746:131;25872:4;25746:131;:::i;:::-;25738:139;;25465:419;;;:::o;25890:222::-;26030:34;26026:1;26018:6;26014:14;26007:58;26099:5;26094:2;26086:6;26082:15;26075:30;25890:222;:::o;26118:366::-;26260:3;26281:67;26345:2;26340:3;26281:67;:::i;:::-;26274:74;;26357:93;26446:3;26357:93;:::i;:::-;26475:2;26470:3;26466:12;26459:19;;26118:366;;;:::o;26490:419::-;26656:4;26694:2;26683:9;26679:18;26671:26;;26743:9;26737:4;26733:20;26729:1;26718:9;26714:17;26707:47;26771:131;26897:4;26771:131;:::i;:::-;26763:139;;26490:419;;;:::o;26915:225::-;27055:34;27051:1;27043:6;27039:14;27032:58;27124:8;27119:2;27111:6;27107:15;27100:33;26915:225;:::o;27146:366::-;27288:3;27309:67;27373:2;27368:3;27309:67;:::i;:::-;27302:74;;27385:93;27474:3;27385:93;:::i;:::-;27503:2;27498:3;27494:12;27487:19;;27146:366;;;:::o;27518:419::-;27684:4;27722:2;27711:9;27707:18;27699:26;;27771:9;27765:4;27761:20;27757:1;27746:9;27742:17;27735:47;27799:131;27925:4;27799:131;:::i;:::-;27791:139;;27518:419;;;:::o;27943:249::-;28083:34;28079:1;28071:6;28067:14;28060:58;28152:32;28147:2;28139:6;28135:15;28128:57;27943:249;:::o;28198:366::-;28340:3;28361:67;28425:2;28420:3;28361:67;:::i;:::-;28354:74;;28437:93;28526:3;28437:93;:::i;:::-;28555:2;28550:3;28546:12;28539:19;;28198:366;;;:::o;28570:419::-;28736:4;28774:2;28763:9;28759:18;28751:26;;28823:9;28817:4;28813:20;28809:1;28798:9;28794:17;28787:47;28851:131;28977:4;28851:131;:::i;:::-;28843:139;;28570:419;;;:::o;28995:167::-;29135:19;29131:1;29123:6;29119:14;29112:43;28995:167;:::o;29168:366::-;29310:3;29331:67;29395:2;29390:3;29331:67;:::i;:::-;29324:74;;29407:93;29496:3;29407:93;:::i;:::-;29525:2;29520:3;29516:12;29509:19;;29168:366;;;:::o;29540:419::-;29706:4;29744:2;29733:9;29729:18;29721:26;;29793:9;29787:4;29783:20;29779:1;29768:9;29764:17;29757:47;29821:131;29947:4;29821:131;:::i;:::-;29813:139;;29540:419;;;:::o;29965:180::-;30013:77;30010:1;30003:88;30110:4;30107:1;30100:15;30134:4;30131:1;30124:15;30151:180;30199:77;30196:1;30189:88;30296:4;30293:1;30286:15;30320:4;30317:1;30310:15;30337:85;30382:7;30411:5;30400:16;;30337:85;;;:::o;30428:60::-;30456:3;30477:5;30470:12;;30428:60;;;:::o;30494:158::-;30552:9;30585:61;30603:42;30612:32;30638:5;30612:32;:::i;:::-;30603:42;:::i;:::-;30585:61;:::i;:::-;30572:74;;30494:158;;;:::o;30658:147::-;30753:45;30792:5;30753:45;:::i;:::-;30748:3;30741:58;30658:147;;:::o;30811:114::-;30878:6;30912:5;30906:12;30896:22;;30811:114;;;:::o;30931:184::-;31030:11;31064:6;31059:3;31052:19;31104:4;31099:3;31095:14;31080:29;;30931:184;;;;:::o;31121:132::-;31188:4;31211:3;31203:11;;31241:4;31236:3;31232:14;31224:22;;31121:132;;;:::o;31259:108::-;31336:24;31354:5;31336:24;:::i;:::-;31331:3;31324:37;31259:108;;:::o;31373:179::-;31442:10;31463:46;31505:3;31497:6;31463:46;:::i;:::-;31541:4;31536:3;31532:14;31518:28;;31373:179;;;;:::o;31558:113::-;31628:4;31660;31655:3;31651:14;31643:22;;31558:113;;;:::o;31707:732::-;31826:3;31855:54;31903:5;31855:54;:::i;:::-;31925:86;32004:6;31999:3;31925:86;:::i;:::-;31918:93;;32035:56;32085:5;32035:56;:::i;:::-;32114:7;32145:1;32130:284;32155:6;32152:1;32149:13;32130:284;;;32231:6;32225:13;32258:63;32317:3;32302:13;32258:63;:::i;:::-;32251:70;;32344:60;32397:6;32344:60;:::i;:::-;32334:70;;32190:224;32177:1;32174;32170:9;32165:14;;32130:284;;;32134:14;32430:3;32423:10;;31831:608;;;31707:732;;;;:::o;32445:942::-;32736:4;32774:3;32763:9;32759:19;32751:27;;32788:71;32856:1;32845:9;32841:17;32832:6;32788:71;:::i;:::-;32869:80;32945:2;32934:9;32930:18;32921:6;32869:80;:::i;:::-;32996:9;32990:4;32986:20;32981:2;32970:9;32966:18;32959:48;33024:108;33127:4;33118:6;33024:108;:::i;:::-;33016:116;;33142:72;33210:2;33199:9;33195:18;33186:6;33142:72;:::i;:::-;33224:73;33292:3;33281:9;33277:19;33268:6;33224:73;:::i;:::-;33307;33375:3;33364:9;33360:19;33351:6;33307:73;:::i;:::-;32445:942;;;;;;;;;:::o;33393:410::-;33433:7;33456:20;33474:1;33456:20;:::i;:::-;33451:25;;33490:20;33508:1;33490:20;:::i;:::-;33485:25;;33545:1;33542;33538:9;33567:30;33585:11;33567:30;:::i;:::-;33556:41;;33746:1;33737:7;33733:15;33730:1;33727:22;33707:1;33700:9;33680:83;33657:139;;33776:18;;:::i;:::-;33657:139;33441:362;33393:410;;;;:::o;33809:137::-;33863:5;33894:6;33888:13;33879:22;;33910:30;33934:5;33910:30;:::i;:::-;33809:137;;;;:::o;33952:345::-;34019:6;34068:2;34056:9;34047:7;34043:23;34039:32;34036:119;;;34074:79;;:::i;:::-;34036:119;34194:1;34219:61;34272:7;34263:6;34252:9;34248:22;34219:61;:::i;:::-;34209:71;;34165:125;33952:345;;;;:::o;34303:229::-;34443:34;34439:1;34431:6;34427:14;34420:58;34512:12;34507:2;34499:6;34495:15;34488:37;34303:229;:::o;34538:366::-;34680:3;34701:67;34765:2;34760:3;34701:67;:::i;:::-;34694:74;;34777:93;34866:3;34777:93;:::i;:::-;34895:2;34890:3;34886:12;34879:19;;34538:366;;;:::o;34910:419::-;35076:4;35114:2;35103:9;35099:18;35091:26;;35163:9;35157:4;35153:20;35149:1;35138:9;35134:17;35127:47;35191:131;35317:4;35191:131;:::i;:::-;35183:139;;34910:419;;;:::o;35335:225::-;35475:34;35471:1;35463:6;35459:14;35452:58;35544:8;35539:2;35531:6;35527:15;35520:33;35335:225;:::o;35566:366::-;35708:3;35729:67;35793:2;35788:3;35729:67;:::i;:::-;35722:74;;35805:93;35894:3;35805:93;:::i;:::-;35923:2;35918:3;35914:12;35907:19;;35566:366;;;:::o;35938:419::-;36104:4;36142:2;36131:9;36127:18;36119:26;;36191:9;36185:4;36181:20;36177:1;36166:9;36162:17;36155:47;36219:131;36345:4;36219:131;:::i;:::-;36211:139;;35938:419;;;:::o;36363:98::-;36414:6;36448:5;36442:12;36432:22;;36363:98;;;:::o;36467:386::-;36571:3;36599:38;36631:5;36599:38;:::i;:::-;36653:88;36734:6;36729:3;36653:88;:::i;:::-;36646:95;;36750:65;36808:6;36803:3;36796:4;36789:5;36785:16;36750:65;:::i;:::-;36840:6;36835:3;36831:16;36824:23;;36575:278;36467:386;;;;:::o;36859:271::-;36989:3;37011:93;37100:3;37091:6;37011:93;:::i;:::-;37004:100;;37121:3;37114:10;;36859:271;;;;:::o;37136:179::-;37276:31;37272:1;37264:6;37260:14;37253:55;37136:179;:::o;37321:366::-;37463:3;37484:67;37548:2;37543:3;37484:67;:::i;:::-;37477:74;;37560:93;37649:3;37560:93;:::i;:::-;37678:2;37673:3;37669:12;37662:19;;37321:366;;;:::o;37693:419::-;37859:4;37897:2;37886:9;37882:18;37874:26;;37946:9;37940:4;37936:20;37932:1;37921:9;37917:17;37910:47;37974:131;38100:4;37974:131;:::i;:::-;37966:139;;37693:419;;;:::o
Swarm Source
ipfs://b0d1f21113a78ddef2a21f6efd24a19ee2b31b416cdf506230aea6ec0db48aec
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.