Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
There are no matching entriesUpdate your filters to view other transactions | |||||||||
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
QuantumUSDT
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-04-30
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
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 value) external returns (bool);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) 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);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
interface IERC20Errors {
error ERC20InsufficientBalance(
address sender,
uint256 balance,
uint256 needed
);
error ERC20InvalidSender(address sender);
error ERC20InvalidReceiver(address receiver);
error ERC20InsufficientAllowance(
address spender,
uint256 allowance,
uint256 needed
);
error ERC20InvalidApprover(address approver);
error ERC20InvalidSpender(address spender);
}
interface IUniswapV2Router {
function factory() external returns (address);
function WETH() external returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
}
interface IUniswapV2Factory {
function getPair(
address tokenA,
address tokenB
) external view returns (address);
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
}
interface IUniswapV2Pair {
function getReserves()
external
view
returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function token0() external view returns (address);
function token1() external view returns (address);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
_owner = _msgSender();
emit OwnershipTransferred(address(0), _owner);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract QuantumUSDT is Ownable, IERC20, IERC20Metadata, IERC20Errors {
IUniswapV2Router public router;
IUniswapV2Pair public pair; // Pair information fetched during addInitialLiquidity
address public usdt;
uint256 public constant TARGET_PRICE = 10 ** 18; // $1 in 18 decimals
bool public tradeStarted = false; // Tracks whether trading has started
string public condition;
uint256 public tolerance = 0;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(address _usdt) {
_name = "Quantum";
_symbol = "qUSDT";
usdt = _usdt;
if (block.chainid == 56) {
router = IUniswapV2Router(0x10ED43C718714eb63d5aA57B78B54704E256024E); // BSC Pancake Mainnet Router
} else if (block.chainid == 97) {
router = IUniswapV2Router(0xD99D1c33F9fC3444f8101754aBC46c52416550D1); // BSC Pancake Testnet Router
} else if (block.chainid == 1) {
router = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // ETH Uniswap Mainnet
} else {
revert();
}
address _uniswapV2Pair = IUniswapV2Factory(router.factory()).createPair(
address(this),
usdt
);
_mint(msg.sender, 100000000000 * (10 ** 18));
pair = IUniswapV2Pair(_uniswapV2Pair);
}
function setTolerace(uint _new) public onlyOwner {
tolerance = _new;
}
function setPair(address _new) public onlyOwner {
pair = IUniswapV2Pair(_new);
}
function startTrade() public onlyOwner {
tradeStarted = true;
}
function stopTrade() public onlyOwner {
tradeStarted = false;
}
function name() public view virtual returns (string memory) {
return _name;
}
function symbol() public view virtual returns (string memory) {
return _symbol;
}
function decimals() public view virtual returns (uint8) {
return 18;
}
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 value) public virtual returns (bool) {
address _owner = _msgSender();
_transfer(_owner, to, value);
return true;
}
function allowance(
address _owner,
address spender
) public view virtual returns (uint256) {
return _allowances[_owner][spender];
}
function approve(
address spender,
uint256 value
) public virtual returns (bool) {
address _owner = _msgSender();
_approve(_owner, spender, value);
return true;
}
function transferFrom(
address from,
address to,
uint256 value
) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
function _transfer(address from, address to, uint256 value) internal {
if (from == address(pair) || to == address(pair)) {
require(tradeStarted, "Trade not started");
}
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(from, to, value);
// if (tradeStarted && (from == address(pair) || to == address(pair))) {
// condition = "condition 1 called";
// _performCounterSwap(value);
// }
}
uint256 public price;
uint256 public deviation;
uint256 public tokenToAdd;
uint256 public usdtToAdd;
uint256 public totalLiquidity;
uint256 public liquidityToRemove;
function _performCounterSwap(
// address _sender,
// address _recipient,
uint256 amount
) internal {
tradeStarted = false;
condition = "condition 2 called";
uint256 currentPrice = _getPrice();
if (currentPrice > TARGET_PRICE) {
// Price is above target: Sell tokenA for tokenB
uint256 sellAmount = _calculateSwapAmount(
amount,
currentPrice,
"SELL"
);
_swap(address(this), usdt, sellAmount, address(this));
} else if (currentPrice < TARGET_PRICE) {
// Price is below target: Buy tokenA with tokenB
uint256 buyAmount = _calculateSwapAmount(
amount,
currentPrice,
"BUY"
);
_swap(usdt, address(this), buyAmount, address(this));
}
tradeStarted = true;
}
/**
* @notice Perform the token swap via the swap router.
*/
function _swap(
address fromToken,
address toToken,
uint256 amount,
address _recipient
) public {
condition = "condition 3 called";
require(amount > 0, "Swap amount must be greater than 0");
// Approve router to spend tokens
IERC20(fromToken).approve(address(router), amount);
address[] memory path;
path[0] = fromToken;
path[1] = toToken;
uint256 deadline = block.timestamp + 300; // 5 minutes deadline
router.swapExactTokensForTokens(
amount,
1, // Minimum amount out
path,
_recipient,
deadline
);
}
/**
* @notice Get the current price of the token.
*/
function _getPrice() internal pure returns (uint256) {
// Placeholder: Replace with logic to fetch price from an oracle or AMM
return TARGET_PRICE;
}
/**
* @notice Calculate the amount for the swap based on the deviation.
*/
function _calculateSwapAmount(
uint256 transferAmount,
uint256 currentPrice,
string memory direction
) internal pure returns (uint256) {
uint256 _deviation;
if (
keccak256(abi.encodePacked(direction)) ==
keccak256(abi.encodePacked("SELL"))
) {
_deviation = currentPrice - TARGET_PRICE;
} else {
_deviation = TARGET_PRICE - currentPrice;
}
// Scale the deviation by the transfer amount
return (transferAmount * _deviation) / TARGET_PRICE;
}
/**
* @notice Update the target price (owner only).
*/
/**
* @notice Update the tolerance (owner only).
*/
function setTolerance(uint256 newTolerance) external onlyOwner {
tolerance = newTolerance;
}
/**
* @notice Update the swap router (owner only).
*/
function rebalance(uint256 _tokenToAdd, uint256 _usdtToAdd) public {
price = getPrice();
// condition = "condition 2 called";
if (price > TARGET_PRICE) {
// Price above $1, add liquidity
deviation = price - TARGET_PRICE;
bool addL = addLiquidity(deviation, _tokenToAdd, _usdtToAdd);
require(addL, "addLiquidity not working");
} else if (price < TARGET_PRICE) {
// Price below $1, remove liquidity
deviation = TARGET_PRICE - price;
bool addL = removeLiquidity(deviation, 0);
require(addL, "removeLiquidity not working");
}
}
function getPrice() public view returns (uint256 _price) {
(uint112 reserve0, uint112 reserve1, ) = pair.getReserves();
require(reserve0 > 0, "Reserve0 is zero"); // Prevent division by zero
if (pair.token0() == usdt) {
_price = (uint256(reserve0) * (10 ** 18)) / uint256(reserve1);
} else {
_price = (uint256(reserve1) * (10 ** 18)) / uint256(reserve0);
}
}
function addLiquidity(
uint256 _deviation,
uint256 _tokenToAdd,
uint256 _usdtToAdd
) public returns (bool) {
tradeStarted = false;
// condition = "condition 3 called";
// (uint112 reserve0, uint112 reserve1, ) = pair.getReserves();
// uint256 tokenReserve = pair.token0() == address(this)
// ? reserve0
// : reserve1;
// uint256 usdtReserve = pair.token0() == usdt ? reserve0 : reserve1;
// tokenToAdd = (tokenReserve * _deviation) / TARGET_PRICE;
// usdtToAdd = (usdtReserve * _deviation) / TARGET_PRICE;
IERC20(address(this)).approve(address(router), _tokenToAdd);
IERC20(usdt).approve(address(router), _usdtToAdd);
router.addLiquidity(
address(this),
usdt,
_tokenToAdd,
_usdtToAdd,
1, // Minimum token amount (slippage)
1, // Minimum USDT amount (slippage)
address(this),
block.timestamp + 300
);
return true;
}
function removeLiquidity(
uint256 _deviation,
uint256 _liquidityToRemove
) public returns (bool) {
// Ensure sufficient liquidity tokens are held by the contract
uint256 contractLiquidityBalance = IUniswapV2Pair(pair).balanceOf(
address(this)
);
require(
_liquidityToRemove <= contractLiquidityBalance,
"Not enough liquidity tokens"
);
// Approve the router to use LP tokens (if not already approved)
IUniswapV2Pair(pair).approve(address(router), _liquidityToRemove);
try
router.removeLiquidity(
address(this),
usdt,
_liquidityToRemove,
1, // Minimum token amount
1, // Minimum USDT amount
address(this),
block.timestamp + 300
)
{} catch {
// Handle errors gracefully
revert("Liquidity removal failed");
}
return true;
}
function _update(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
_balances[from] = fromBalance - value;
}
}
if (to == address(0)) {
unchecked {
_totalSupply -= value;
}
} else {
unchecked {
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
function _approve(address _owner, address spender, uint256 value) internal {
_approve(_owner, spender, value, true);
}
function _approve(
address _owner,
address spender,
uint256 value,
bool emitEvent
) internal virtual {
if (_owner == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
_allowances[_owner][spender] = value;
if (emitEvent) {
emit Approval(_owner, spender, value);
}
}
function _spendAllowance(
address _owner,
address spender,
uint256 value
) internal virtual {
uint256 currentAllowance = allowance(_owner, spender);
if (currentAllowance < type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(
spender,
currentAllowance,
value
);
}
unchecked {
_approve(_owner, spender, currentAllowance - value, false);
}
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_usdt","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"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":[],"name":"TARGET_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"_swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deviation","type":"uint256"},{"internalType":"uint256","name":"_tokenToAdd","type":"uint256"},{"internalType":"uint256","name":"_usdtToAdd","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"condition","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deviation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPrice","outputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityToRemove","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":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenToAdd","type":"uint256"},{"internalType":"uint256","name":"_usdtToAdd","type":"uint256"}],"name":"rebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deviation","type":"uint256"},{"internalType":"uint256","name":"_liquidityToRemove","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new","type":"uint256"}],"name":"setTolerace","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTolerance","type":"uint256"}],"name":"setTolerance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenToAdd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tolerance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdtToAdd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040525f600360146101000a81548160ff0219169083151502179055505f60055534801561002d575f5ffd5b50604051614003380380614003833981810160405281019061004f919061079f565b61005d61049960201b60201c565b5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36040518060400160405280600781526020017f5175616e74756d00000000000000000000000000000000000000000000000000815250600990816101599190610a07565b506040518060400160405280600581526020017f7155534454000000000000000000000000000000000000000000000000000000815250600a908161019e9190610a07565b508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060384603610240577310ed43c718714eb63d5aa57b78b54704e256024e60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610308565b606146036102a15773d99d1c33f9fc3444f8101754abc46c52416550d160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610307565b6001460361030257737a250d5630b4cf539739df2c5dacb4c659f2488d60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610306565b5f5ffd5b5b5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610374573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610398919061079f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016103f3929190610ae5565b6020604051808303815f875af115801561040f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610433919061079f565b9050610452336c01431e0fae6d7217caa00000006104a060201b60201c565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610be2565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610510575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016105079190610b0c565b60405180910390fd5b6105215f838361052560201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610575578060085f8282546105699190610b52565b92505081905550610645565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156105ff578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016105f693929190610b94565b60405180910390fd5b81810360065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361068c578060085f82825403925050819055506106d7565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107349190610bc9565b60405180910390a3505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61076e82610745565b9050919050565b61077e81610764565b8114610788575f5ffd5b50565b5f8151905061079981610775565b92915050565b5f602082840312156107b4576107b3610741565b5b5f6107c18482850161078b565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061084557607f821691505b60208210810361085857610857610801565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026108ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261087f565b6108c4868361087f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6109086109036108fe846108dc565b6108e5565b6108dc565b9050919050565b5f819050919050565b610921836108ee565b61093561092d8261090f565b84845461088b565b825550505050565b5f5f905090565b61094c61093d565b610957818484610918565b505050565b5b8181101561097a5761096f5f82610944565b60018101905061095d565b5050565b601f8211156109bf576109908161085e565b61099984610870565b810160208510156109a8578190505b6109bc6109b485610870565b83018261095c565b50505b505050565b5f82821c905092915050565b5f6109df5f19846008026109c4565b1980831691505092915050565b5f6109f783836109d0565b9150826002028217905092915050565b610a10826107ca565b67ffffffffffffffff811115610a2957610a286107d4565b5b610a33825461082e565b610a3e82828561097e565b5f60209050601f831160018114610a6f575f8415610a5d578287015190505b610a6785826109ec565b865550610ace565b601f198416610a7d8661085e565b5f5b82811015610aa457848901518255600182019150602085019450602081019050610a7f565b86831015610ac15784890151610abd601f8916826109d0565b8355505b6001600288020188555050505b505050505050565b610adf81610764565b82525050565b5f604082019050610af85f830185610ad6565b610b056020830184610ad6565b9392505050565b5f602082019050610b1f5f830184610ad6565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610b5c826108dc565b9150610b67836108dc565b9250828201905080821115610b7f57610b7e610b25565b5b92915050565b610b8e816108dc565b82525050565b5f606082019050610ba75f830186610ad6565b610bb46020830185610b85565b610bc16040830184610b85565b949350505050565b5f602082019050610bdc5f830184610b85565b92915050565b61341480610bef5f395ff3fe608060405234801561000f575f5ffd5b5060043610610204575f3560e01c80638baeefce11610118578063c5031331116100ab578063ee2a89bc1161007a578063ee2a89bc146105be578063f2fde38b146105da578063f407587d146105f6578063f6fab17f14610614578063f887ea401461063057610204565b8063c503133114610536578063dce52dfa14610554578063dd62ed3e14610572578063df8879b8146105a257610204565b80639d7de6b3116100e75780639d7de6b31461049a578063a035b1fe146104ca578063a8aa1b31146104e8578063a9059cbb1461050657610204565b80638baeefce146104365780638da5cb5b1461044057806395d89b411461045e57806398d5fdca1461047c57610204565b8063313ce5671161019b578063639097a11161016a578063639097a1146103a45780636c580801146103c257806370a08231146103cc5780637e99ce59146103fc5780638187f5161461041a57610204565b8063313ce5671461031c578063325afb8a1461033a5780633c5fd98214610358578063422f10431461037457610204565b806318160ddd116101d757806318160ddd1461029257806323b872dd146102b057806329d42dbd146102e05780632f48ab7d146102fe57610204565b806306fdde0314610208578063095ea7b3146102265780631149b5d61461025657806315770f9214610274575b5f5ffd5b61021061064e565b60405161021d9190612152565b60405180910390f35b610240600480360381019061023b9190612210565b6106de565b60405161024d9190612268565b60405180910390f35b61025e610700565b60405161026b9190612290565b60405180910390f35b61027c610706565b6040516102899190612290565b60405180910390f35b61029a61070c565b6040516102a79190612290565b60405180910390f35b6102ca60048036038101906102c591906122a9565b610715565b6040516102d79190612268565b60405180910390f35b6102e8610743565b6040516102f59190612268565b60405180910390f35b610306610756565b6040516103139190612308565b60405180910390f35b61032461077b565b604051610331919061233c565b60405180910390f35b610342610783565b60405161034f9190612290565b60405180910390f35b610372600480360381019061036d9190612355565b610789565b005b61038e60048036038101906103899190612380565b610828565b60405161039b9190612268565b60405180910390f35b6103ac610a83565b6040516103b99190612290565b60405180910390f35b6103ca610a89565b005b6103e660048036038101906103e191906123d0565b610b3b565b6040516103f39190612290565b60405180910390f35b610404610b81565b6040516104119190612290565b60405180910390f35b610434600480360381019061042f91906123d0565b610b8d565b005b61043e610c65565b005b610448610d16565b6040516104559190612308565b60405180910390f35b610466610d3d565b6040516104739190612152565b60405180910390f35b610484610dcd565b6040516104919190612290565b60405180910390f35b6104b460048036038101906104af91906123fb565b611023565b6040516104c19190612268565b60405180910390f35b6104d26112dc565b6040516104df9190612290565b60405180910390f35b6104f06112e2565b6040516104fd9190612494565b60405180910390f35b610520600480360381019061051b9190612210565b611307565b60405161052d9190612268565b60405180910390f35b61053e611329565b60405161054b9190612152565b60405180910390f35b61055c6113b5565b6040516105699190612290565b60405180910390f35b61058c600480360381019061058791906124ad565b6113bb565b6040516105999190612290565b60405180910390f35b6105bc60048036038101906105b791906123fb565b61143d565b005b6105d860048036038101906105d391906124eb565b611553565b005b6105f460048036038101906105ef91906123d0565b6117d6565b005b6105fe611995565b60405161060b9190612290565b60405180910390f35b61062e60048036038101906106299190612355565b61199b565b005b610638611a3a565b604051610645919061256f565b60405180910390f35b60606009805461065d906125b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610689906125b5565b80156106d45780601f106106ab576101008083540402835291602001916106d4565b820191905f5260205f20905b8154815290600101906020018083116106b757829003601f168201915b5050505050905090565b5f5f6106e8611a5f565b90506106f5818585611a66565b600191505092915050565b600d5481565b600f5481565b5f600854905090565b5f5f61071f611a5f565b905061072c858285611a78565b610737858585611b0b565b60019150509392505050565b600360149054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b600e5481565b610791611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461081e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108159061262f565b60405180910390fd5b8060058190555050565b5f5f600360146101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b815260040161089f92919061264d565b6020604051808303815f875af11580156108bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108df919061269e565b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161095d92919061264d565b6020604051808303815f875af1158015610979573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d919061269e565b5060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e337003060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686866001803061012c42610a1291906126f6565b6040518963ffffffff1660e01b8152600401610a35989796959493929190612762565b6060604051808303815f875af1158015610a51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7591906127f2565b505050600190509392505050565b600c5481565b610a91611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b159061262f565b60405180910390fd5b6001600360146101000a81548160ff021916908315150217905550565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b670de0b6b3a764000081565b610b95611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c199061262f565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c6d611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf19061262f565b60405180910390fd5b5f600360146101000a81548160ff021916908315150217905550565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610d4c906125b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d78906125b5565b8015610dc35780601f10610d9a57610100808354040283529160200191610dc3565b820191905f5260205f20905b815481529060010190602001808311610da657829003601f168201915b5050505050905090565b5f5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610e3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5e91906128be565b50915091505f826dffffffffffffffffffffffffffff1611610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac90612958565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7b919061298a565b73ffffffffffffffffffffffffffffffffffffffff1603610fdc57806dffffffffffffffffffffffffffff16670de0b6b3a7640000836dffffffffffffffffffffffffffff16610fcb91906129b5565b610fd59190612a23565b925061101e565b816dffffffffffffffffffffffffffff16670de0b6b3a7640000826dffffffffffffffffffffffffffff1661101191906129b5565b61101b9190612a23565b92505b505090565b5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161107f9190612308565b602060405180830381865afa15801561109a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be9190612a53565b905080831115611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90612ac8565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b815260040161118092919061264d565b6020604051808303815f875af115801561119c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c0919061269e565b5060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde3060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001803061012c4261123491906126f6565b6040518863ffffffff1660e01b81526004016112569796959493929190612ae6565b60408051808303815f875af192505050801561129057506040513d601f19601f8201168201806040525081019061128d9190612b53565b60015b6112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690612bdb565b60405180910390fd5b5050600191505092915050565b600b5481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f611311611a5f565b905061131e818585611b0b565b600191505092915050565b60048054611336906125b5565b80601f0160208091040260200160405190810160405280929190818152602001828054611362906125b5565b80156113ad5780601f10611384576101008083540402835291602001916113ad565b820191905f5260205f20905b81548152906001019060200180831161139057829003601f168201915b505050505081565b60055481565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611445610dcd565b600b81905550670de0b6b3a7640000600b5411156114cf57670de0b6b3a7640000600b546114739190612bf9565b600c819055505f611487600c548484610828565b9050806114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090612c76565b60405180910390fd5b5061154f565b670de0b6b3a7640000600b54101561154e57600b54670de0b6b3a76400006114f79190612bf9565b600c819055505f61150a600c545f611023565b90508061154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390612cde565b60405180910390fd5b505b5b5050565b6040518060400160405280601281526020017f636f6e646974696f6e20332063616c6c65640000000000000000000000000000815250600490816115979190612ec0565b505f82116115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190612fff565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161163692919061264d565b6020604051808303815f875af1158015611652573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611676919061269e565b50606084815f8151811061168d5761168c61301d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816001815181106116dc576116db61301d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f61012c4261172591906126f6565b905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed17398560018587866040518663ffffffff1660e01b815260040161178a959493929190613101565b5f604051808303815f875af11580156117a5573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906117cd919061326c565b50505050505050565b6117de611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118629061262f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d090613323565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b6119a3611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a279061262f565b60405180910390fd5b8060058190555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b611a738383836001611cf7565b505050565b5f611a8384846113bb565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015611b055781811015611af6578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611aed93929190613341565b60405180910390fd5b611b0484848484035f611cf7565b5b50505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611bb2575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611c0757600360149054906101000a900460ff16611c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfd906133c0565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c77575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611c6e9190612308565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ce7575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611cde9190612308565b60405180910390fd5b611cf2838383611ec6565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d67575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611d5e9190612308565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dd7575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611dce9190612308565b60405180910390fd5b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611ec0578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611eb79190612290565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f16578060085f828254611f0a91906126f6565b92505081905550611fe6565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611fa0578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611f9793929190613341565b60405180910390fd5b81810360065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361202d578060085f8282540392505081905550612078565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120d59190612290565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612124826120e2565b61212e81856120ec565b935061213e8185602086016120fc565b6121478161210a565b840191505092915050565b5f6020820190508181035f83015261216a818461211a565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121ac82612183565b9050919050565b6121bc816121a2565b81146121c6575f5ffd5b50565b5f813590506121d7816121b3565b92915050565b5f819050919050565b6121ef816121dd565b81146121f9575f5ffd5b50565b5f8135905061220a816121e6565b92915050565b5f5f604083850312156122265761222561217b565b5b5f612233858286016121c9565b9250506020612244858286016121fc565b9150509250929050565b5f8115159050919050565b6122628161224e565b82525050565b5f60208201905061227b5f830184612259565b92915050565b61228a816121dd565b82525050565b5f6020820190506122a35f830184612281565b92915050565b5f5f5f606084860312156122c0576122bf61217b565b5b5f6122cd868287016121c9565b93505060206122de868287016121c9565b92505060406122ef868287016121fc565b9150509250925092565b612302816121a2565b82525050565b5f60208201905061231b5f8301846122f9565b92915050565b5f60ff82169050919050565b61233681612321565b82525050565b5f60208201905061234f5f83018461232d565b92915050565b5f6020828403121561236a5761236961217b565b5b5f612377848285016121fc565b91505092915050565b5f5f5f606084860312156123975761239661217b565b5b5f6123a4868287016121fc565b93505060206123b5868287016121fc565b92505060406123c6868287016121fc565b9150509250925092565b5f602082840312156123e5576123e461217b565b5b5f6123f2848285016121c9565b91505092915050565b5f5f604083850312156124115761241061217b565b5b5f61241e858286016121fc565b925050602061242f858286016121fc565b9150509250929050565b5f819050919050565b5f61245c61245761245284612183565b612439565b612183565b9050919050565b5f61246d82612442565b9050919050565b5f61247e82612463565b9050919050565b61248e81612474565b82525050565b5f6020820190506124a75f830184612485565b92915050565b5f5f604083850312156124c3576124c261217b565b5b5f6124d0858286016121c9565b92505060206124e1858286016121c9565b9150509250929050565b5f5f5f5f608085870312156125035761250261217b565b5b5f612510878288016121c9565b9450506020612521878288016121c9565b9350506040612532878288016121fc565b9250506060612543878288016121c9565b91505092959194509250565b5f61255982612463565b9050919050565b6125698161254f565b82525050565b5f6020820190506125825f830184612560565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806125cc57607f821691505b6020821081036125df576125de612588565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126196020836120ec565b9150612624826125e5565b602082019050919050565b5f6020820190508181035f8301526126468161260d565b9050919050565b5f6040820190506126605f8301856122f9565b61266d6020830184612281565b9392505050565b61267d8161224e565b8114612687575f5ffd5b50565b5f8151905061269881612674565b92915050565b5f602082840312156126b3576126b261217b565b5b5f6126c08482850161268a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612700826121dd565b915061270b836121dd565b9250828201905080821115612723576127226126c9565b5b92915050565b5f819050919050565b5f61274c61274761274284612729565b612439565b6121dd565b9050919050565b61275c81612732565b82525050565b5f610100820190506127765f83018b6122f9565b612783602083018a6122f9565b6127906040830189612281565b61279d6060830188612281565b6127aa6080830187612753565b6127b760a0830186612753565b6127c460c08301856122f9565b6127d160e0830184612281565b9998505050505050505050565b5f815190506127ec816121e6565b92915050565b5f5f5f606084860312156128095761280861217b565b5b5f612816868287016127de565b9350506020612827868287016127de565b9250506040612838868287016127de565b9150509250925092565b5f6dffffffffffffffffffffffffffff82169050919050565b61286481612842565b811461286e575f5ffd5b50565b5f8151905061287f8161285b565b92915050565b5f63ffffffff82169050919050565b61289d81612885565b81146128a7575f5ffd5b50565b5f815190506128b881612894565b92915050565b5f5f5f606084860312156128d5576128d461217b565b5b5f6128e286828701612871565b93505060206128f386828701612871565b9250506040612904868287016128aa565b9150509250925092565b7f5265736572766530206973207a65726f000000000000000000000000000000005f82015250565b5f6129426010836120ec565b915061294d8261290e565b602082019050919050565b5f6020820190508181035f83015261296f81612936565b9050919050565b5f81519050612984816121b3565b92915050565b5f6020828403121561299f5761299e61217b565b5b5f6129ac84828501612976565b91505092915050565b5f6129bf826121dd565b91506129ca836121dd565b92508282026129d8816121dd565b915082820484148315176129ef576129ee6126c9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612a2d826121dd565b9150612a38836121dd565b925082612a4857612a476129f6565b5b828204905092915050565b5f60208284031215612a6857612a6761217b565b5b5f612a75848285016127de565b91505092915050565b7f4e6f7420656e6f756768206c697175696469747920746f6b656e7300000000005f82015250565b5f612ab2601b836120ec565b9150612abd82612a7e565b602082019050919050565b5f6020820190508181035f830152612adf81612aa6565b9050919050565b5f60e082019050612af95f83018a6122f9565b612b0660208301896122f9565b612b136040830188612281565b612b206060830187612753565b612b2d6080830186612753565b612b3a60a08301856122f9565b612b4760c0830184612281565b98975050505050505050565b5f5f60408385031215612b6957612b6861217b565b5b5f612b76858286016127de565b9250506020612b87858286016127de565b9150509250929050565b7f4c69717569646974792072656d6f76616c206661696c656400000000000000005f82015250565b5f612bc56018836120ec565b9150612bd082612b91565b602082019050919050565b5f6020820190508181035f830152612bf281612bb9565b9050919050565b5f612c03826121dd565b9150612c0e836121dd565b9250828203905081811115612c2657612c256126c9565b5b92915050565b7f6164644c6971756964697479206e6f7420776f726b696e6700000000000000005f82015250565b5f612c606018836120ec565b9150612c6b82612c2c565b602082019050919050565b5f6020820190508181035f830152612c8d81612c54565b9050919050565b7f72656d6f76654c6971756964697479206e6f7420776f726b696e6700000000005f82015250565b5f612cc8601b836120ec565b9150612cd382612c94565b602082019050919050565b5f6020820190508181035f830152612cf581612cbc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612d857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612d4a565b612d8f8683612d4a565b95508019841693508086168417925050509392505050565b5f612dc1612dbc612db7846121dd565b612439565b6121dd565b9050919050565b5f819050919050565b612dda83612da7565b612dee612de682612dc8565b848454612d56565b825550505050565b5f5f905090565b612e05612df6565b612e10818484612dd1565b505050565b5b81811015612e3357612e285f82612dfd565b600181019050612e16565b5050565b601f821115612e7857612e4981612d29565b612e5284612d3b565b81016020851015612e61578190505b612e75612e6d85612d3b565b830182612e15565b50505b505050565b5f82821c905092915050565b5f612e985f1984600802612e7d565b1980831691505092915050565b5f612eb08383612e89565b9150826002028217905092915050565b612ec9826120e2565b67ffffffffffffffff811115612ee257612ee1612cfc565b5b612eec82546125b5565b612ef7828285612e37565b5f60209050601f831160018114612f28575f8415612f16578287015190505b612f208582612ea5565b865550612f87565b601f198416612f3686612d29565b5f5b82811015612f5d57848901518255600182019150602085019450602081019050612f38565b86831015612f7a5784890151612f76601f891682612e89565b8355505b6001600288020188555050505b505050505050565b7f5377617020616d6f756e74206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fe96022836120ec565b9150612ff482612f8f565b604082019050919050565b5f6020820190508181035f83015261301681612fdd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61307c816121a2565b82525050565b5f61308d8383613073565b60208301905092915050565b5f602082019050919050565b5f6130af8261304a565b6130b98185613054565b93506130c483613064565b805f5b838110156130f45781516130db8882613082565b97506130e683613099565b9250506001810190506130c7565b5085935050505092915050565b5f60a0820190506131145f830188612281565b6131216020830187612753565b818103604083015261313381866130a5565b905061314260608301856122f9565b61314f6080830184612281565b9695505050505050565b5f5ffd5b6131668261210a565b810181811067ffffffffffffffff8211171561318557613184612cfc565b5b80604052505050565b5f613197612172565b90506131a3828261315d565b919050565b5f67ffffffffffffffff8211156131c2576131c1612cfc565b5b602082029050602081019050919050565b5f5ffd5b5f6131e96131e4846131a8565b61318e565b9050808382526020820190506020840283018581111561320c5761320b6131d3565b5b835b81811015613235578061322188826127de565b84526020840193505060208101905061320e565b5050509392505050565b5f82601f83011261325357613252613159565b5b81516132638482602086016131d7565b91505092915050565b5f602082840312156132815761328061217b565b5b5f82015167ffffffffffffffff81111561329e5761329d61217f565b5b6132aa8482850161323f565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61330d6026836120ec565b9150613318826132b3565b604082019050919050565b5f6020820190508181035f83015261333a81613301565b9050919050565b5f6060820190506133545f8301866122f9565b6133616020830185612281565b61336e6040830184612281565b949350505050565b7f5472616465206e6f7420737461727465640000000000000000000000000000005f82015250565b5f6133aa6011836120ec565b91506133b582613376565b602082019050919050565b5f6020820190508181035f8301526133d78161339e565b905091905056fea26469706673582212202b5b100831e013a63ea7bdb229d78518957f627b25e8a35be7b5ee4807ca873e64736f6c634300081c0033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Deployed Bytecode
0x608060405234801561000f575f5ffd5b5060043610610204575f3560e01c80638baeefce11610118578063c5031331116100ab578063ee2a89bc1161007a578063ee2a89bc146105be578063f2fde38b146105da578063f407587d146105f6578063f6fab17f14610614578063f887ea401461063057610204565b8063c503133114610536578063dce52dfa14610554578063dd62ed3e14610572578063df8879b8146105a257610204565b80639d7de6b3116100e75780639d7de6b31461049a578063a035b1fe146104ca578063a8aa1b31146104e8578063a9059cbb1461050657610204565b80638baeefce146104365780638da5cb5b1461044057806395d89b411461045e57806398d5fdca1461047c57610204565b8063313ce5671161019b578063639097a11161016a578063639097a1146103a45780636c580801146103c257806370a08231146103cc5780637e99ce59146103fc5780638187f5161461041a57610204565b8063313ce5671461031c578063325afb8a1461033a5780633c5fd98214610358578063422f10431461037457610204565b806318160ddd116101d757806318160ddd1461029257806323b872dd146102b057806329d42dbd146102e05780632f48ab7d146102fe57610204565b806306fdde0314610208578063095ea7b3146102265780631149b5d61461025657806315770f9214610274575b5f5ffd5b61021061064e565b60405161021d9190612152565b60405180910390f35b610240600480360381019061023b9190612210565b6106de565b60405161024d9190612268565b60405180910390f35b61025e610700565b60405161026b9190612290565b60405180910390f35b61027c610706565b6040516102899190612290565b60405180910390f35b61029a61070c565b6040516102a79190612290565b60405180910390f35b6102ca60048036038101906102c591906122a9565b610715565b6040516102d79190612268565b60405180910390f35b6102e8610743565b6040516102f59190612268565b60405180910390f35b610306610756565b6040516103139190612308565b60405180910390f35b61032461077b565b604051610331919061233c565b60405180910390f35b610342610783565b60405161034f9190612290565b60405180910390f35b610372600480360381019061036d9190612355565b610789565b005b61038e60048036038101906103899190612380565b610828565b60405161039b9190612268565b60405180910390f35b6103ac610a83565b6040516103b99190612290565b60405180910390f35b6103ca610a89565b005b6103e660048036038101906103e191906123d0565b610b3b565b6040516103f39190612290565b60405180910390f35b610404610b81565b6040516104119190612290565b60405180910390f35b610434600480360381019061042f91906123d0565b610b8d565b005b61043e610c65565b005b610448610d16565b6040516104559190612308565b60405180910390f35b610466610d3d565b6040516104739190612152565b60405180910390f35b610484610dcd565b6040516104919190612290565b60405180910390f35b6104b460048036038101906104af91906123fb565b611023565b6040516104c19190612268565b60405180910390f35b6104d26112dc565b6040516104df9190612290565b60405180910390f35b6104f06112e2565b6040516104fd9190612494565b60405180910390f35b610520600480360381019061051b9190612210565b611307565b60405161052d9190612268565b60405180910390f35b61053e611329565b60405161054b9190612152565b60405180910390f35b61055c6113b5565b6040516105699190612290565b60405180910390f35b61058c600480360381019061058791906124ad565b6113bb565b6040516105999190612290565b60405180910390f35b6105bc60048036038101906105b791906123fb565b61143d565b005b6105d860048036038101906105d391906124eb565b611553565b005b6105f460048036038101906105ef91906123d0565b6117d6565b005b6105fe611995565b60405161060b9190612290565b60405180910390f35b61062e60048036038101906106299190612355565b61199b565b005b610638611a3a565b604051610645919061256f565b60405180910390f35b60606009805461065d906125b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610689906125b5565b80156106d45780601f106106ab576101008083540402835291602001916106d4565b820191905f5260205f20905b8154815290600101906020018083116106b757829003601f168201915b5050505050905090565b5f5f6106e8611a5f565b90506106f5818585611a66565b600191505092915050565b600d5481565b600f5481565b5f600854905090565b5f5f61071f611a5f565b905061072c858285611a78565b610737858585611b0b565b60019150509392505050565b600360149054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b600e5481565b610791611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461081e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108159061262f565b60405180910390fd5b8060058190555050565b5f5f600360146101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b815260040161089f92919061264d565b6020604051808303815f875af11580156108bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108df919061269e565b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161095d92919061264d565b6020604051808303815f875af1158015610979573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d919061269e565b5060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e337003060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686866001803061012c42610a1291906126f6565b6040518963ffffffff1660e01b8152600401610a35989796959493929190612762565b6060604051808303815f875af1158015610a51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7591906127f2565b505050600190509392505050565b600c5481565b610a91611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b159061262f565b60405180910390fd5b6001600360146101000a81548160ff021916908315150217905550565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b670de0b6b3a764000081565b610b95611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c199061262f565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c6d611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf19061262f565b60405180910390fd5b5f600360146101000a81548160ff021916908315150217905550565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610d4c906125b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d78906125b5565b8015610dc35780601f10610d9a57610100808354040283529160200191610dc3565b820191905f5260205f20905b815481529060010190602001808311610da657829003601f168201915b5050505050905090565b5f5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610e3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5e91906128be565b50915091505f826dffffffffffffffffffffffffffff1611610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac90612958565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7b919061298a565b73ffffffffffffffffffffffffffffffffffffffff1603610fdc57806dffffffffffffffffffffffffffff16670de0b6b3a7640000836dffffffffffffffffffffffffffff16610fcb91906129b5565b610fd59190612a23565b925061101e565b816dffffffffffffffffffffffffffff16670de0b6b3a7640000826dffffffffffffffffffffffffffff1661101191906129b5565b61101b9190612a23565b92505b505090565b5f5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161107f9190612308565b602060405180830381865afa15801561109a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be9190612a53565b905080831115611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90612ac8565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b815260040161118092919061264d565b6020604051808303815f875af115801561119c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c0919061269e565b5060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde3060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001803061012c4261123491906126f6565b6040518863ffffffff1660e01b81526004016112569796959493929190612ae6565b60408051808303815f875af192505050801561129057506040513d601f19601f8201168201806040525081019061128d9190612b53565b60015b6112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690612bdb565b60405180910390fd5b5050600191505092915050565b600b5481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f611311611a5f565b905061131e818585611b0b565b600191505092915050565b60048054611336906125b5565b80601f0160208091040260200160405190810160405280929190818152602001828054611362906125b5565b80156113ad5780601f10611384576101008083540402835291602001916113ad565b820191905f5260205f20905b81548152906001019060200180831161139057829003601f168201915b505050505081565b60055481565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611445610dcd565b600b81905550670de0b6b3a7640000600b5411156114cf57670de0b6b3a7640000600b546114739190612bf9565b600c819055505f611487600c548484610828565b9050806114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090612c76565b60405180910390fd5b5061154f565b670de0b6b3a7640000600b54101561154e57600b54670de0b6b3a76400006114f79190612bf9565b600c819055505f61150a600c545f611023565b90508061154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390612cde565b60405180910390fd5b505b5b5050565b6040518060400160405280601281526020017f636f6e646974696f6e20332063616c6c65640000000000000000000000000000815250600490816115979190612ec0565b505f82116115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190612fff565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161163692919061264d565b6020604051808303815f875af1158015611652573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611676919061269e565b50606084815f8151811061168d5761168c61301d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816001815181106116dc576116db61301d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f61012c4261172591906126f6565b905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed17398560018587866040518663ffffffff1660e01b815260040161178a959493929190613101565b5f604051808303815f875af11580156117a5573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906117cd919061326c565b50505050505050565b6117de611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118629061262f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d090613323565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b6119a3611a5f565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a279061262f565b60405180910390fd5b8060058190555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b611a738383836001611cf7565b505050565b5f611a8384846113bb565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015611b055781811015611af6578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611aed93929190613341565b60405180910390fd5b611b0484848484035f611cf7565b5b50505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611bb2575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611c0757600360149054906101000a900460ff16611c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfd906133c0565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c77575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611c6e9190612308565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ce7575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611cde9190612308565b60405180910390fd5b611cf2838383611ec6565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d67575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611d5e9190612308565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dd7575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611dce9190612308565b60405180910390fd5b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611ec0578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611eb79190612290565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f16578060085f828254611f0a91906126f6565b92505081905550611fe6565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611fa0578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611f9793929190613341565b60405180910390fd5b81810360065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361202d578060085f8282540392505081905550612078565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120d59190612290565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612124826120e2565b61212e81856120ec565b935061213e8185602086016120fc565b6121478161210a565b840191505092915050565b5f6020820190508181035f83015261216a818461211a565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121ac82612183565b9050919050565b6121bc816121a2565b81146121c6575f5ffd5b50565b5f813590506121d7816121b3565b92915050565b5f819050919050565b6121ef816121dd565b81146121f9575f5ffd5b50565b5f8135905061220a816121e6565b92915050565b5f5f604083850312156122265761222561217b565b5b5f612233858286016121c9565b9250506020612244858286016121fc565b9150509250929050565b5f8115159050919050565b6122628161224e565b82525050565b5f60208201905061227b5f830184612259565b92915050565b61228a816121dd565b82525050565b5f6020820190506122a35f830184612281565b92915050565b5f5f5f606084860312156122c0576122bf61217b565b5b5f6122cd868287016121c9565b93505060206122de868287016121c9565b92505060406122ef868287016121fc565b9150509250925092565b612302816121a2565b82525050565b5f60208201905061231b5f8301846122f9565b92915050565b5f60ff82169050919050565b61233681612321565b82525050565b5f60208201905061234f5f83018461232d565b92915050565b5f6020828403121561236a5761236961217b565b5b5f612377848285016121fc565b91505092915050565b5f5f5f606084860312156123975761239661217b565b5b5f6123a4868287016121fc565b93505060206123b5868287016121fc565b92505060406123c6868287016121fc565b9150509250925092565b5f602082840312156123e5576123e461217b565b5b5f6123f2848285016121c9565b91505092915050565b5f5f604083850312156124115761241061217b565b5b5f61241e858286016121fc565b925050602061242f858286016121fc565b9150509250929050565b5f819050919050565b5f61245c61245761245284612183565b612439565b612183565b9050919050565b5f61246d82612442565b9050919050565b5f61247e82612463565b9050919050565b61248e81612474565b82525050565b5f6020820190506124a75f830184612485565b92915050565b5f5f604083850312156124c3576124c261217b565b5b5f6124d0858286016121c9565b92505060206124e1858286016121c9565b9150509250929050565b5f5f5f5f608085870312156125035761250261217b565b5b5f612510878288016121c9565b9450506020612521878288016121c9565b9350506040612532878288016121fc565b9250506060612543878288016121c9565b91505092959194509250565b5f61255982612463565b9050919050565b6125698161254f565b82525050565b5f6020820190506125825f830184612560565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806125cc57607f821691505b6020821081036125df576125de612588565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126196020836120ec565b9150612624826125e5565b602082019050919050565b5f6020820190508181035f8301526126468161260d565b9050919050565b5f6040820190506126605f8301856122f9565b61266d6020830184612281565b9392505050565b61267d8161224e565b8114612687575f5ffd5b50565b5f8151905061269881612674565b92915050565b5f602082840312156126b3576126b261217b565b5b5f6126c08482850161268a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612700826121dd565b915061270b836121dd565b9250828201905080821115612723576127226126c9565b5b92915050565b5f819050919050565b5f61274c61274761274284612729565b612439565b6121dd565b9050919050565b61275c81612732565b82525050565b5f610100820190506127765f83018b6122f9565b612783602083018a6122f9565b6127906040830189612281565b61279d6060830188612281565b6127aa6080830187612753565b6127b760a0830186612753565b6127c460c08301856122f9565b6127d160e0830184612281565b9998505050505050505050565b5f815190506127ec816121e6565b92915050565b5f5f5f606084860312156128095761280861217b565b5b5f612816868287016127de565b9350506020612827868287016127de565b9250506040612838868287016127de565b9150509250925092565b5f6dffffffffffffffffffffffffffff82169050919050565b61286481612842565b811461286e575f5ffd5b50565b5f8151905061287f8161285b565b92915050565b5f63ffffffff82169050919050565b61289d81612885565b81146128a7575f5ffd5b50565b5f815190506128b881612894565b92915050565b5f5f5f606084860312156128d5576128d461217b565b5b5f6128e286828701612871565b93505060206128f386828701612871565b9250506040612904868287016128aa565b9150509250925092565b7f5265736572766530206973207a65726f000000000000000000000000000000005f82015250565b5f6129426010836120ec565b915061294d8261290e565b602082019050919050565b5f6020820190508181035f83015261296f81612936565b9050919050565b5f81519050612984816121b3565b92915050565b5f6020828403121561299f5761299e61217b565b5b5f6129ac84828501612976565b91505092915050565b5f6129bf826121dd565b91506129ca836121dd565b92508282026129d8816121dd565b915082820484148315176129ef576129ee6126c9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612a2d826121dd565b9150612a38836121dd565b925082612a4857612a476129f6565b5b828204905092915050565b5f60208284031215612a6857612a6761217b565b5b5f612a75848285016127de565b91505092915050565b7f4e6f7420656e6f756768206c697175696469747920746f6b656e7300000000005f82015250565b5f612ab2601b836120ec565b9150612abd82612a7e565b602082019050919050565b5f6020820190508181035f830152612adf81612aa6565b9050919050565b5f60e082019050612af95f83018a6122f9565b612b0660208301896122f9565b612b136040830188612281565b612b206060830187612753565b612b2d6080830186612753565b612b3a60a08301856122f9565b612b4760c0830184612281565b98975050505050505050565b5f5f60408385031215612b6957612b6861217b565b5b5f612b76858286016127de565b9250506020612b87858286016127de565b9150509250929050565b7f4c69717569646974792072656d6f76616c206661696c656400000000000000005f82015250565b5f612bc56018836120ec565b9150612bd082612b91565b602082019050919050565b5f6020820190508181035f830152612bf281612bb9565b9050919050565b5f612c03826121dd565b9150612c0e836121dd565b9250828203905081811115612c2657612c256126c9565b5b92915050565b7f6164644c6971756964697479206e6f7420776f726b696e6700000000000000005f82015250565b5f612c606018836120ec565b9150612c6b82612c2c565b602082019050919050565b5f6020820190508181035f830152612c8d81612c54565b9050919050565b7f72656d6f76654c6971756964697479206e6f7420776f726b696e6700000000005f82015250565b5f612cc8601b836120ec565b9150612cd382612c94565b602082019050919050565b5f6020820190508181035f830152612cf581612cbc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612d857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612d4a565b612d8f8683612d4a565b95508019841693508086168417925050509392505050565b5f612dc1612dbc612db7846121dd565b612439565b6121dd565b9050919050565b5f819050919050565b612dda83612da7565b612dee612de682612dc8565b848454612d56565b825550505050565b5f5f905090565b612e05612df6565b612e10818484612dd1565b505050565b5b81811015612e3357612e285f82612dfd565b600181019050612e16565b5050565b601f821115612e7857612e4981612d29565b612e5284612d3b565b81016020851015612e61578190505b612e75612e6d85612d3b565b830182612e15565b50505b505050565b5f82821c905092915050565b5f612e985f1984600802612e7d565b1980831691505092915050565b5f612eb08383612e89565b9150826002028217905092915050565b612ec9826120e2565b67ffffffffffffffff811115612ee257612ee1612cfc565b5b612eec82546125b5565b612ef7828285612e37565b5f60209050601f831160018114612f28575f8415612f16578287015190505b612f208582612ea5565b865550612f87565b601f198416612f3686612d29565b5f5b82811015612f5d57848901518255600182019150602085019450602081019050612f38565b86831015612f7a5784890151612f76601f891682612e89565b8355505b6001600288020188555050505b505050505050565b7f5377617020616d6f756e74206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fe96022836120ec565b9150612ff482612f8f565b604082019050919050565b5f6020820190508181035f83015261301681612fdd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61307c816121a2565b82525050565b5f61308d8383613073565b60208301905092915050565b5f602082019050919050565b5f6130af8261304a565b6130b98185613054565b93506130c483613064565b805f5b838110156130f45781516130db8882613082565b97506130e683613099565b9250506001810190506130c7565b5085935050505092915050565b5f60a0820190506131145f830188612281565b6131216020830187612753565b818103604083015261313381866130a5565b905061314260608301856122f9565b61314f6080830184612281565b9695505050505050565b5f5ffd5b6131668261210a565b810181811067ffffffffffffffff8211171561318557613184612cfc565b5b80604052505050565b5f613197612172565b90506131a3828261315d565b919050565b5f67ffffffffffffffff8211156131c2576131c1612cfc565b5b602082029050602081019050919050565b5f5ffd5b5f6131e96131e4846131a8565b61318e565b9050808382526020820190506020840283018581111561320c5761320b6131d3565b5b835b81811015613235578061322188826127de565b84526020840193505060208101905061320e565b5050509392505050565b5f82601f83011261325357613252613159565b5b81516132638482602086016131d7565b91505092915050565b5f602082840312156132815761328061217b565b5b5f82015167ffffffffffffffff81111561329e5761329d61217f565b5b6132aa8482850161323f565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61330d6026836120ec565b9150613318826132b3565b604082019050919050565b5f6020820190508181035f83015261333a81613301565b9050919050565b5f6060820190506133545f8301866122f9565b6133616020830185612281565b61336e6040830184612281565b949350505050565b7f5472616465206e6f7420737461727465640000000000000000000000000000005f82015250565b5f6133aa6011836120ec565b91506133b582613376565b602082019050919050565b5f6020820190508181035f8301526133d78161339e565b905091905056fea26469706673582212202b5b100831e013a63ea7bdb229d78518957f627b25e8a35be7b5ee4807ca873e64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
-----Decoded View---------------
Arg [0] : _usdt (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Deployed Bytecode Sourcemap
4421:12924:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6322:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7218:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8429:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8492:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6616:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7443:283;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4724:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4623:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6524:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8461:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11422:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12747:1097;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8398:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6152:77;;;:::i;:::-;;6723:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4649:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6050:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6237:77;;;:::i;:::-;;3919:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6421:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12303:436;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13852:1061;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8371:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4535:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6849:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4801:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4831:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7041:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11609:686;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9616:710;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4133:281;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8528:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5958:84;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4498:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6322:91;6367:13;6400:5;6393:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6322:91;:::o;7218:217::-;7316:4;7333:14;7350:12;:10;:12::i;:::-;7333:29;;7373:32;7382:6;7390:7;7399:5;7373:8;:32::i;:::-;7423:4;7416:11;;;7218:217;;;;:::o;8429:25::-;;;;:::o;8492:29::-;;;;:::o;6616:99::-;6668:7;6695:12;;6688:19;;6616:99;:::o;7443:283::-;7564:4;7581:15;7599:12;:10;:12::i;:::-;7581:30;;7622:37;7638:4;7644:7;7653:5;7622:15;:37::i;:::-;7670:26;7680:4;7686:2;7690:5;7670:9;:26::i;:::-;7714:4;7707:11;;;7443:283;;;;;:::o;4724:32::-;;;;;;;;;;;;;:::o;4623:19::-;;;;;;;;;;;;;:::o;6524:84::-;6573:5;6598:2;6591:9;;6524:84;:::o;8461:24::-;;;;:::o;11422:106::-;4056:12;:10;:12::i;:::-;4046:22;;:6;;;;;;;;;;;:22;;;4038:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11508:12:::1;11496:9;:24;;;;11422:106:::0;:::o;12747:1097::-;12880:4;12912:5;12897:12;;:20;;;;;;;;;;;;;;;;;;13402:4;13387:29;;;13425:6;;;;;;;;;;;13434:11;13387:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13464:4;;;;;;;;;;;13457:20;;;13486:6;;;;;;;;;;;13495:10;13457:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13519:6;;;;;;;;;;;:19;;;13561:4;13581;;;;;;;;;;;13600:11;13626:10;13651:1;13702;13760:4;13798:3;13780:15;:21;;;;:::i;:::-;13519:293;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13832:4;13825:11;;12747:1097;;;;;:::o;8398:24::-;;;;:::o;6152:77::-;4056:12;:10;:12::i;:::-;4046:22;;:6;;;;;;;;;;;:22;;;4038:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6217:4:::1;6202:12;;:19;;;;;;;;;;;;;;;;;;6152:77::o:0;6723:118::-;6788:7;6815:9;:18;6825:7;6815:18;;;;;;;;;;;;;;;;6808:25;;6723:118;;;:::o;4649:47::-;4688:8;4649:47;:::o;6050:94::-;4056:12;:10;:12::i;:::-;4046:22;;:6;;;;;;;;;;;:22;;;4038:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6131:4:::1;6109;;:27;;;;;;;;;;;;;;;;;;6050:94:::0;:::o;6237:77::-;4056:12;:10;:12::i;:::-;4046:22;;:6;;;;;;;;;;;:22;;;4038:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6301:5:::1;6286:12;;:20;;;;;;;;;;;;;;;;;;6237:77::o:0;3919:79::-;3957:7;3984:6;;;;;;;;;;;3977:13;;3919:79;:::o;6421:95::-;6468:13;6501:7;6494:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6421:95;:::o;12303:436::-;12344:14;12372:16;12390;12412:4;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12371:59;;;;;12462:1;12451:8;:12;;;12443:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;12544:4;;;;;;;;;;;12527:21;;:4;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:21;;;12523:209;;12617:8;12609:17;;12596:8;12583;12575:17;;:30;;;;:::i;:::-;12574:52;;;;:::i;:::-;12565:61;;12523:209;;;12711:8;12703:17;;12690:8;12677;12669:17;;:30;;;;:::i;:::-;12668:52;;;;:::i;:::-;12659:61;;12523:209;12360:379;;12303:436;:::o;13852:1061::-;13966:4;14055:32;14105:4;;;;;;;;;;;14090:30;;;14143:4;14090:69;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14055:104;;14214:24;14192:18;:46;;14170:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;14395:4;;;;;;;;;;;14380:28;;;14417:6;;;;;;;;;;;14426:18;14380:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14475:6;;;;;;;;;;;:22;;;14524:4;14548;;;;;;;;;;;14571:18;14608:1;14652;14703:4;14745:3;14727:15;:21;;;;:::i;:::-;14475:288;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14458:426;;14838:34;;;;;;;;;;:::i;:::-;;;;;;;;14458:426;;;14901:4;14894:11;;;13852:1061;;;;:::o;8371:20::-;;;;:::o;4535:26::-;;;;;;;;;;;;;:::o;6849:184::-;6918:4;6935:14;6952:12;:10;:12::i;:::-;6935:29;;6975:28;6985:6;6993:2;6997:5;6975:9;:28::i;:::-;7021:4;7014:11;;;6849:184;;;;:::o;4801:23::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4831:28::-;;;;:::o;7041:169::-;7147:7;7174:11;:19;7186:6;7174:19;;;;;;;;;;;;;;;:28;7194:7;7174:28;;;;;;;;;;;;;;;;7167:35;;7041:169;;;;:::o;11609:686::-;11695:10;:8;:10::i;:::-;11687:5;:18;;;;4688:8;11775:5;;:20;11771:517;;;4688:8;11870:5;;:20;;;;:::i;:::-;11858:9;:32;;;;11905:9;11917:48;11930:9;;11941:11;11954:10;11917:12;:48::i;:::-;11905:60;;11988:4;11980:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11797:236;11771:517;;;4688:8;12043:5;;:20;12039:249;;;12156:5;;4688:8;12141:20;;;;:::i;:::-;12129:9;:32;;;;12176:9;12188:29;12204:9;;12215:1;12188:15;:29::i;:::-;12176:41;;12240:4;12232:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12065:223;12039:249;11771:517;11609:686;;:::o;9616:710::-;9764:32;;;;;;;;;;;;;;;;;:9;:32;;;;;;:::i;:::-;;9824:1;9815:6;:10;9807:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9927:9;9920:25;;;9954:6;;;;;;;;;;;9963;9920:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9983:21;10025:9;10015:4;10020:1;10015:7;;;;;;;;:::i;:::-;;;;;;;:19;;;;;;;;;;;10055:7;10045:4;10050:1;10045:7;;;;;;;;:::i;:::-;;;;;;;:17;;;;;;;;;;;10075:16;10112:3;10094:15;:21;;;;:::i;:::-;10075:40;;10150:6;;;;;;;;;;;:31;;;10196:6;10217:1;10255:4;10274:10;10299:8;10150:168;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9753:573;;9616:710;;;;:::o;4133:281::-;4056:12;:10;:12::i;:::-;4046:22;;:6;;;;;;;;;;;:22;;;4038:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4256:1:::1;4236:22;;:8;:22;;::::0;4214:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4369:8;4340:38;;4361:6;;;;;;;;;;;4340:38;;;;;;;;;;;;4398:8;4389:6;;:17;;;;;;;;;;;;;;;;;;4133:281:::0;:::o;8528:32::-;;;;:::o;5958:84::-;4056:12;:10;:12::i;:::-;4046:22;;:6;;;;;;;;;;;:22;;;4038:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6030:4:::1;6018:9;:16;;;;5958:84:::0;:::o;4498:30::-;;;;;;;;;;;;;:::o;1082:98::-;1135:7;1162:10;1155:17;;1082:98;:::o;16099:132::-;16185:38;16194:6;16202:7;16211:5;16218:4;16185:8;:38::i;:::-;16099:132;;;:::o;16737:605::-;16872:24;16899:26;16909:6;16917:7;16899:9;:26::i;:::-;16872:53;;16959:17;16940:16;:36;16936:399;;;17016:5;16997:16;:24;16993:214;;;17098:7;17128:16;17167:5;17049:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;16993:214;17250:58;17259:6;17267:7;17295:5;17276:16;:24;17302:5;17250:8;:58::i;:::-;16936:399;16861:481;16737:605;;;:::o;7734:629::-;7834:4;;;;;;;;;;;7818:21;;:4;:21;;;:44;;;;7857:4;;;;;;;;;;;7843:19;;:2;:19;;;7818:44;7814:119;;;7887:12;;;;;;;;;;;7879:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;7814:119;7963:1;7947:18;;:4;:18;;;7943:88;;8016:1;7989:30;;;;;;;;;;;:::i;:::-;;;;;;;;7943:88;8059:1;8045:16;;:2;:16;;;8041:88;;8114:1;8085:32;;;;;;;;;;;:::i;:::-;;;;;;;;8041:88;8139:24;8147:4;8153:2;8157:5;8139:7;:24::i;:::-;7734:629;;;:::o;16239:490::-;16414:1;16396:20;;:6;:20;;;16392:92;;16469:1;16440:32;;;;;;;;;;;:::i;:::-;;;;;;;;16392:92;16517:1;16498:21;;:7;:21;;;16494:92;;16571:1;16543:31;;;;;;;;;;;:::i;:::-;;;;;;;;16494:92;16627:5;16596:11;:19;16608:6;16596:19;;;;;;;;;;;;;;;:28;16616:7;16596:28;;;;;;;;;;;;;;;:36;;;;16647:9;16643:79;;;16695:7;16678:32;;16687:6;16678:32;;;16704:5;16678:32;;;;;;:::i;:::-;;;;;;;;16643:79;16239:490;;;;:::o;14921:730::-;15027:1;15011:18;;:4;:18;;;15007:369;;15062:5;15046:12;;:21;;;;;;;:::i;:::-;;;;;;;;15007:369;;;15100:19;15122:9;:15;15132:4;15122:15;;;;;;;;;;;;;;;;15100:37;;15170:5;15156:11;:19;15152:117;;;15228:4;15234:11;15247:5;15203:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;15152:117;15344:5;15330:11;:19;15312:9;:15;15322:4;15312:15;;;;;;;;;;;;;;;:37;;;;15085:291;15007:369;15406:1;15392:16;;:2;:16;;;15388:213;;15470:5;15454:12;;:21;;;;;;;;;;;15388:213;;;15569:5;15552:9;:13;15562:2;15552:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;15388:213;15633:2;15618:25;;15627:4;15618:25;;;15637:5;15618:25;;;;;;:::i;:::-;;;;;;;;14921:730;;;:::o;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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:118::-;4403:24;4421:5;4403:24;:::i;:::-;4398:3;4391:37;4316:118;;:::o;4440:222::-;4533:4;4571:2;4560:9;4556:18;4548:26;;4584:71;4652:1;4641:9;4637:17;4628:6;4584:71;:::i;:::-;4440:222;;;;:::o;4668:86::-;4703:7;4743:4;4736:5;4732:16;4721:27;;4668:86;;;:::o;4760:112::-;4843:22;4859:5;4843:22;:::i;:::-;4838:3;4831:35;4760:112;;:::o;4878:214::-;4967:4;5005:2;4994:9;4990:18;4982:26;;5018:67;5082:1;5071:9;5067:17;5058:6;5018:67;:::i;:::-;4878:214;;;;:::o;5098:329::-;5157:6;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5098:329;;;;:::o;5433:619::-;5510:6;5518;5526;5575:2;5563:9;5554:7;5550:23;5546:32;5543:119;;;5581:79;;:::i;:::-;5543:119;5701:1;5726:53;5771:7;5762:6;5751:9;5747:22;5726:53;:::i;:::-;5716:63;;5672:117;5828:2;5854:53;5899:7;5890:6;5879:9;5875:22;5854:53;:::i;:::-;5844:63;;5799:118;5956:2;5982:53;6027:7;6018:6;6007:9;6003:22;5982:53;:::i;:::-;5972:63;;5927:118;5433:619;;;;;:::o;6058:329::-;6117:6;6166:2;6154:9;6145:7;6141:23;6137:32;6134:119;;;6172:79;;:::i;:::-;6134:119;6292:1;6317:53;6362:7;6353:6;6342:9;6338:22;6317:53;:::i;:::-;6307:63;;6263:117;6058:329;;;;:::o;6393:474::-;6461:6;6469;6518:2;6506:9;6497:7;6493:23;6489:32;6486:119;;;6524:79;;:::i;:::-;6486:119;6644:1;6669:53;6714:7;6705:6;6694:9;6690:22;6669:53;:::i;:::-;6659:63;;6615:117;6771:2;6797:53;6842:7;6833:6;6822:9;6818:22;6797:53;:::i;:::-;6787:63;;6742:118;6393:474;;;;;:::o;6873:60::-;6901:3;6922:5;6915:12;;6873:60;;;:::o;6939:142::-;6989:9;7022:53;7040:34;7049:24;7067:5;7049:24;:::i;:::-;7040:34;:::i;:::-;7022:53;:::i;:::-;7009:66;;6939:142;;;:::o;7087:126::-;7137:9;7170:37;7201:5;7170:37;:::i;:::-;7157:50;;7087:126;;;:::o;7219:148::-;7291:9;7324:37;7355:5;7324:37;:::i;:::-;7311:50;;7219:148;;;:::o;7373:175::-;7482:59;7535:5;7482:59;:::i;:::-;7477:3;7470:72;7373:175;;:::o;7554:266::-;7669:4;7707:2;7696:9;7692:18;7684:26;;7720:93;7810:1;7799:9;7795:17;7786:6;7720:93;:::i;:::-;7554:266;;;;:::o;7826:474::-;7894:6;7902;7951:2;7939:9;7930:7;7926:23;7922:32;7919:119;;;7957:79;;:::i;:::-;7919:119;8077:1;8102:53;8147:7;8138:6;8127:9;8123:22;8102:53;:::i;:::-;8092:63;;8048:117;8204:2;8230:53;8275:7;8266:6;8255:9;8251:22;8230:53;:::i;:::-;8220:63;;8175:118;7826:474;;;;;:::o;8306:765::-;8392:6;8400;8408;8416;8465:3;8453:9;8444:7;8440:23;8436:33;8433:120;;;8472:79;;:::i;:::-;8433:120;8592:1;8617:53;8662:7;8653:6;8642:9;8638:22;8617:53;:::i;:::-;8607:63;;8563:117;8719:2;8745:53;8790:7;8781:6;8770:9;8766:22;8745:53;:::i;:::-;8735:63;;8690:118;8847:2;8873:53;8918:7;8909:6;8898:9;8894:22;8873:53;:::i;:::-;8863:63;;8818:118;8975:2;9001:53;9046:7;9037:6;9026:9;9022:22;9001:53;:::i;:::-;8991:63;;8946:118;8306:765;;;;;;;:::o;9077:150::-;9151:9;9184:37;9215:5;9184:37;:::i;:::-;9171:50;;9077:150;;;:::o;9233:179::-;9344:61;9399:5;9344:61;:::i;:::-;9339:3;9332:74;9233:179;;:::o;9418:270::-;9535:4;9573:2;9562:9;9558:18;9550:26;;9586:95;9678:1;9667:9;9663:17;9654:6;9586:95;:::i;:::-;9418:270;;;;:::o;9694:180::-;9742:77;9739:1;9732:88;9839:4;9836:1;9829:15;9863:4;9860:1;9853:15;9880:320;9924:6;9961:1;9955:4;9951:12;9941:22;;10008:1;10002:4;9998:12;10029:18;10019:81;;10085:4;10077:6;10073:17;10063:27;;10019:81;10147:2;10139:6;10136:14;10116:18;10113:38;10110:84;;10166:18;;:::i;:::-;10110:84;9931:269;9880:320;;;:::o;10206:182::-;10346:34;10342:1;10334:6;10330:14;10323:58;10206:182;:::o;10394:366::-;10536:3;10557:67;10621:2;10616:3;10557:67;:::i;:::-;10550:74;;10633:93;10722:3;10633:93;:::i;:::-;10751:2;10746:3;10742:12;10735:19;;10394:366;;;:::o;10766:419::-;10932:4;10970:2;10959:9;10955:18;10947:26;;11019:9;11013:4;11009:20;11005:1;10994:9;10990:17;10983:47;11047:131;11173:4;11047:131;:::i;:::-;11039:139;;10766:419;;;:::o;11191:332::-;11312:4;11350:2;11339:9;11335:18;11327:26;;11363:71;11431:1;11420:9;11416:17;11407:6;11363:71;:::i;:::-;11444:72;11512:2;11501:9;11497:18;11488:6;11444:72;:::i;:::-;11191:332;;;;;:::o;11529:116::-;11599:21;11614:5;11599:21;:::i;:::-;11592:5;11589:32;11579:60;;11635:1;11632;11625:12;11579:60;11529:116;:::o;11651:137::-;11705:5;11736:6;11730:13;11721:22;;11752:30;11776:5;11752:30;:::i;:::-;11651:137;;;;:::o;11794:345::-;11861:6;11910:2;11898:9;11889:7;11885:23;11881:32;11878:119;;;11916:79;;:::i;:::-;11878:119;12036:1;12061:61;12114:7;12105:6;12094:9;12090:22;12061:61;:::i;:::-;12051:71;;12007:125;11794:345;;;;:::o;12145:180::-;12193:77;12190:1;12183:88;12290:4;12287:1;12280:15;12314:4;12311:1;12304:15;12331:191;12371:3;12390:20;12408:1;12390:20;:::i;:::-;12385:25;;12424:20;12442:1;12424:20;:::i;:::-;12419:25;;12467:1;12464;12460:9;12453:16;;12488:3;12485:1;12482:10;12479:36;;;12495:18;;:::i;:::-;12479:36;12331:191;;;;:::o;12528:85::-;12573:7;12602:5;12591:16;;12528:85;;;:::o;12619:158::-;12677:9;12710:61;12728:42;12737:32;12763:5;12737:32;:::i;:::-;12728:42;:::i;:::-;12710:61;:::i;:::-;12697:74;;12619:158;;;:::o;12783:147::-;12878:45;12917:5;12878:45;:::i;:::-;12873:3;12866:58;12783:147;;:::o;12936:1029::-;13241:4;13279:3;13268:9;13264:19;13256:27;;13293:71;13361:1;13350:9;13346:17;13337:6;13293:71;:::i;:::-;13374:72;13442:2;13431:9;13427:18;13418:6;13374:72;:::i;:::-;13456;13524:2;13513:9;13509:18;13500:6;13456:72;:::i;:::-;13538;13606:2;13595:9;13591:18;13582:6;13538:72;:::i;:::-;13620:81;13696:3;13685:9;13681:19;13672:6;13620:81;:::i;:::-;13711;13787:3;13776:9;13772:19;13763:6;13711:81;:::i;:::-;13802:73;13870:3;13859:9;13855:19;13846:6;13802:73;:::i;:::-;13885;13953:3;13942:9;13938:19;13929:6;13885:73;:::i;:::-;12936:1029;;;;;;;;;;;:::o;13971:143::-;14028:5;14059:6;14053:13;14044:22;;14075:33;14102:5;14075:33;:::i;:::-;13971:143;;;;:::o;14120:663::-;14208:6;14216;14224;14273:2;14261:9;14252:7;14248:23;14244:32;14241:119;;;14279:79;;:::i;:::-;14241:119;14399:1;14424:64;14480:7;14471:6;14460:9;14456:22;14424:64;:::i;:::-;14414:74;;14370:128;14537:2;14563:64;14619:7;14610:6;14599:9;14595:22;14563:64;:::i;:::-;14553:74;;14508:129;14676:2;14702:64;14758:7;14749:6;14738:9;14734:22;14702:64;:::i;:::-;14692:74;;14647:129;14120:663;;;;;:::o;14789:114::-;14826:7;14866:30;14859:5;14855:42;14844:53;;14789:114;;;:::o;14909:122::-;14982:24;15000:5;14982:24;:::i;:::-;14975:5;14972:35;14962:63;;15021:1;15018;15011:12;14962:63;14909:122;:::o;15037:143::-;15094:5;15125:6;15119:13;15110:22;;15141:33;15168:5;15141:33;:::i;:::-;15037:143;;;;:::o;15186:93::-;15222:7;15262:10;15255:5;15251:22;15240:33;;15186:93;;;:::o;15285:120::-;15357:23;15374:5;15357:23;:::i;:::-;15350:5;15347:34;15337:62;;15395:1;15392;15385:12;15337:62;15285:120;:::o;15411:141::-;15467:5;15498:6;15492:13;15483:22;;15514:32;15540:5;15514:32;:::i;:::-;15411:141;;;;:::o;15558:661::-;15645:6;15653;15661;15710:2;15698:9;15689:7;15685:23;15681:32;15678:119;;;15716:79;;:::i;:::-;15678:119;15836:1;15861:64;15917:7;15908:6;15897:9;15893:22;15861:64;:::i;:::-;15851:74;;15807:128;15974:2;16000:64;16056:7;16047:6;16036:9;16032:22;16000:64;:::i;:::-;15990:74;;15945:129;16113:2;16139:63;16194:7;16185:6;16174:9;16170:22;16139:63;:::i;:::-;16129:73;;16084:128;15558:661;;;;;:::o;16225:166::-;16365:18;16361:1;16353:6;16349:14;16342:42;16225:166;:::o;16397:366::-;16539:3;16560:67;16624:2;16619:3;16560:67;:::i;:::-;16553:74;;16636:93;16725:3;16636:93;:::i;:::-;16754:2;16749:3;16745:12;16738:19;;16397:366;;;:::o;16769:419::-;16935:4;16973:2;16962:9;16958:18;16950:26;;17022:9;17016:4;17012:20;17008:1;16997:9;16993:17;16986:47;17050:131;17176:4;17050:131;:::i;:::-;17042:139;;16769:419;;;:::o;17194:143::-;17251:5;17282:6;17276:13;17267:22;;17298:33;17325:5;17298:33;:::i;:::-;17194:143;;;;:::o;17343:351::-;17413:6;17462:2;17450:9;17441:7;17437:23;17433:32;17430:119;;;17468:79;;:::i;:::-;17430:119;17588:1;17613:64;17669:7;17660:6;17649:9;17645:22;17613:64;:::i;:::-;17603:74;;17559:128;17343:351;;;;:::o;17700:410::-;17740:7;17763:20;17781:1;17763:20;:::i;:::-;17758:25;;17797:20;17815:1;17797:20;:::i;:::-;17792:25;;17852:1;17849;17845:9;17874:30;17892:11;17874:30;:::i;:::-;17863:41;;18053:1;18044:7;18040:15;18037:1;18034:22;18014:1;18007:9;17987:83;17964:139;;18083:18;;:::i;:::-;17964:139;17748:362;17700:410;;;;:::o;18116:180::-;18164:77;18161:1;18154:88;18261:4;18258:1;18251:15;18285:4;18282:1;18275:15;18302:185;18342:1;18359:20;18377:1;18359:20;:::i;:::-;18354:25;;18393:20;18411:1;18393:20;:::i;:::-;18388:25;;18432:1;18422:35;;18437:18;;:::i;:::-;18422:35;18479:1;18476;18472:9;18467:14;;18302:185;;;;:::o;18493:351::-;18563:6;18612:2;18600:9;18591:7;18587:23;18583:32;18580:119;;;18618:79;;:::i;:::-;18580:119;18738:1;18763:64;18819:7;18810:6;18799:9;18795:22;18763:64;:::i;:::-;18753:74;;18709:128;18493:351;;;;:::o;18850:177::-;18990:29;18986:1;18978:6;18974:14;18967:53;18850:177;:::o;19033:366::-;19175:3;19196:67;19260:2;19255:3;19196:67;:::i;:::-;19189:74;;19272:93;19361:3;19272:93;:::i;:::-;19390:2;19385:3;19381:12;19374:19;;19033:366;;;:::o;19405:419::-;19571:4;19609:2;19598:9;19594:18;19586:26;;19658:9;19652:4;19648:20;19644:1;19633:9;19629:17;19622:47;19686:131;19812:4;19686:131;:::i;:::-;19678:139;;19405:419;;;:::o;19830:918::-;20107:4;20145:3;20134:9;20130:19;20122:27;;20159:71;20227:1;20216:9;20212:17;20203:6;20159:71;:::i;:::-;20240:72;20308:2;20297:9;20293:18;20284:6;20240:72;:::i;:::-;20322;20390:2;20379:9;20375:18;20366:6;20322:72;:::i;:::-;20404:80;20480:2;20469:9;20465:18;20456:6;20404:80;:::i;:::-;20494:81;20570:3;20559:9;20555:19;20546:6;20494:81;:::i;:::-;20585:73;20653:3;20642:9;20638:19;20629:6;20585:73;:::i;:::-;20668;20736:3;20725:9;20721:19;20712:6;20668:73;:::i;:::-;19830:918;;;;;;;;;;:::o;20754:507::-;20833:6;20841;20890:2;20878:9;20869:7;20865:23;20861:32;20858:119;;;20896:79;;:::i;:::-;20858:119;21016:1;21041:64;21097:7;21088:6;21077:9;21073:22;21041:64;:::i;:::-;21031:74;;20987:128;21154:2;21180:64;21236:7;21227:6;21216:9;21212:22;21180:64;:::i;:::-;21170:74;;21125:129;20754:507;;;;;:::o;21267:174::-;21407:26;21403:1;21395:6;21391:14;21384:50;21267:174;:::o;21447:366::-;21589:3;21610:67;21674:2;21669:3;21610:67;:::i;:::-;21603:74;;21686:93;21775:3;21686:93;:::i;:::-;21804:2;21799:3;21795:12;21788:19;;21447:366;;;:::o;21819:419::-;21985:4;22023:2;22012:9;22008:18;22000:26;;22072:9;22066:4;22062:20;22058:1;22047:9;22043:17;22036:47;22100:131;22226:4;22100:131;:::i;:::-;22092:139;;21819:419;;;:::o;22244:194::-;22284:4;22304:20;22322:1;22304:20;:::i;:::-;22299:25;;22338:20;22356:1;22338:20;:::i;:::-;22333:25;;22382:1;22379;22375:9;22367:17;;22406:1;22400:4;22397:11;22394:37;;;22411:18;;:::i;:::-;22394:37;22244:194;;;;:::o;22444:174::-;22584:26;22580:1;22572:6;22568:14;22561:50;22444:174;:::o;22624:366::-;22766:3;22787:67;22851:2;22846:3;22787:67;:::i;:::-;22780:74;;22863:93;22952:3;22863:93;:::i;:::-;22981:2;22976:3;22972:12;22965:19;;22624:366;;;:::o;22996:419::-;23162:4;23200:2;23189:9;23185:18;23177:26;;23249:9;23243:4;23239:20;23235:1;23224:9;23220:17;23213:47;23277:131;23403:4;23277:131;:::i;:::-;23269:139;;22996:419;;;:::o;23421:177::-;23561:29;23557:1;23549:6;23545:14;23538:53;23421:177;:::o;23604:366::-;23746:3;23767:67;23831:2;23826:3;23767:67;:::i;:::-;23760:74;;23843:93;23932:3;23843:93;:::i;:::-;23961:2;23956:3;23952:12;23945:19;;23604:366;;;:::o;23976:419::-;24142:4;24180:2;24169:9;24165:18;24157:26;;24229:9;24223:4;24219:20;24215:1;24204:9;24200:17;24193:47;24257:131;24383:4;24257:131;:::i;:::-;24249:139;;23976:419;;;:::o;24401:180::-;24449:77;24446:1;24439:88;24546:4;24543:1;24536:15;24570:4;24567:1;24560:15;24587:141;24636:4;24659:3;24651:11;;24682:3;24679:1;24672:14;24716:4;24713:1;24703:18;24695:26;;24587:141;;;:::o;24734:93::-;24771:6;24818:2;24813;24806:5;24802:14;24798:23;24788:33;;24734:93;;;:::o;24833:107::-;24877:8;24927:5;24921:4;24917:16;24896:37;;24833:107;;;;:::o;24946:393::-;25015:6;25065:1;25053:10;25049:18;25088:97;25118:66;25107:9;25088:97;:::i;:::-;25206:39;25236:8;25225:9;25206:39;:::i;:::-;25194:51;;25278:4;25274:9;25267:5;25263:21;25254:30;;25327:4;25317:8;25313:19;25306:5;25303:30;25293:40;;25022:317;;24946:393;;;;;:::o;25345:142::-;25395:9;25428:53;25446:34;25455:24;25473:5;25455:24;:::i;:::-;25446:34;:::i;:::-;25428:53;:::i;:::-;25415:66;;25345:142;;;:::o;25493:75::-;25536:3;25557:5;25550:12;;25493:75;;;:::o;25574:269::-;25684:39;25715:7;25684:39;:::i;:::-;25745:91;25794:41;25818:16;25794:41;:::i;:::-;25786:6;25779:4;25773:11;25745:91;:::i;:::-;25739:4;25732:105;25650:193;25574:269;;;:::o;25849:73::-;25894:3;25915:1;25908:8;;25849:73;:::o;25928:189::-;26005:32;;:::i;:::-;26046:65;26104:6;26096;26090:4;26046:65;:::i;:::-;25981:136;25928:189;;:::o;26123:186::-;26183:120;26200:3;26193:5;26190:14;26183:120;;;26254:39;26291:1;26284:5;26254:39;:::i;:::-;26227:1;26220:5;26216:13;26207:22;;26183:120;;;26123:186;;:::o;26315:543::-;26416:2;26411:3;26408:11;26405:446;;;26450:38;26482:5;26450:38;:::i;:::-;26534:29;26552:10;26534:29;:::i;:::-;26524:8;26520:44;26717:2;26705:10;26702:18;26699:49;;;26738:8;26723:23;;26699:49;26761:80;26817:22;26835:3;26817:22;:::i;:::-;26807:8;26803:37;26790:11;26761:80;:::i;:::-;26420:431;;26405:446;26315:543;;;:::o;26864:117::-;26918:8;26968:5;26962:4;26958:16;26937:37;;26864:117;;;;:::o;26987:169::-;27031:6;27064:51;27112:1;27108:6;27100:5;27097:1;27093:13;27064:51;:::i;:::-;27060:56;27145:4;27139;27135:15;27125:25;;27038:118;26987:169;;;;:::o;27161:295::-;27237:4;27383:29;27408:3;27402:4;27383:29;:::i;:::-;27375:37;;27445:3;27442:1;27438:11;27432:4;27429:21;27421:29;;27161:295;;;;:::o;27461:1395::-;27578:37;27611:3;27578:37;:::i;:::-;27680:18;27672:6;27669:30;27666:56;;;27702:18;;:::i;:::-;27666:56;27746:38;27778:4;27772:11;27746:38;:::i;:::-;27831:67;27891:6;27883;27877:4;27831:67;:::i;:::-;27925:1;27949:4;27936:17;;27981:2;27973:6;27970:14;27998:1;27993:618;;;;28655:1;28672:6;28669:77;;;28721:9;28716:3;28712:19;28706:26;28697:35;;28669:77;28772:67;28832:6;28825:5;28772:67;:::i;:::-;28766:4;28759:81;28628:222;27963:887;;27993:618;28045:4;28041:9;28033:6;28029:22;28079:37;28111:4;28079:37;:::i;:::-;28138:1;28152:208;28166:7;28163:1;28160:14;28152:208;;;28245:9;28240:3;28236:19;28230:26;28222:6;28215:42;28296:1;28288:6;28284:14;28274:24;;28343:2;28332:9;28328:18;28315:31;;28189:4;28186:1;28182:12;28177:17;;28152:208;;;28388:6;28379:7;28376:19;28373:179;;;28446:9;28441:3;28437:19;28431:26;28489:48;28531:4;28523:6;28519:17;28508:9;28489:48;:::i;:::-;28481:6;28474:64;28396:156;28373:179;28598:1;28594;28586:6;28582:14;28578:22;28572:4;28565:36;28000:611;;;27963:887;;27553:1303;;;27461:1395;;:::o;28862:221::-;29002:34;28998:1;28990:6;28986:14;28979:58;29071:4;29066:2;29058:6;29054:15;29047:29;28862:221;:::o;29089:366::-;29231:3;29252:67;29316:2;29311:3;29252:67;:::i;:::-;29245:74;;29328:93;29417:3;29328:93;:::i;:::-;29446:2;29441:3;29437:12;29430:19;;29089:366;;;:::o;29461:419::-;29627:4;29665:2;29654:9;29650:18;29642:26;;29714:9;29708:4;29704:20;29700:1;29689:9;29685:17;29678:47;29742:131;29868:4;29742:131;:::i;:::-;29734:139;;29461:419;;;:::o;29886:180::-;29934:77;29931:1;29924:88;30031:4;30028:1;30021:15;30055:4;30052:1;30045:15;30072:114;30139:6;30173:5;30167:12;30157:22;;30072:114;;;:::o;30192:184::-;30291:11;30325:6;30320:3;30313:19;30365:4;30360:3;30356:14;30341:29;;30192:184;;;;:::o;30382:132::-;30449:4;30472:3;30464:11;;30502:4;30497:3;30493:14;30485:22;;30382:132;;;:::o;30520:108::-;30597:24;30615:5;30597:24;:::i;:::-;30592:3;30585:37;30520:108;;:::o;30634:179::-;30703:10;30724:46;30766:3;30758:6;30724:46;:::i;:::-;30802:4;30797:3;30793:14;30779:28;;30634:179;;;;:::o;30819:113::-;30889:4;30921;30916:3;30912:14;30904:22;;30819:113;;;:::o;30968:732::-;31087:3;31116:54;31164:5;31116:54;:::i;:::-;31186:86;31265:6;31260:3;31186:86;:::i;:::-;31179:93;;31296:56;31346:5;31296:56;:::i;:::-;31375:7;31406:1;31391:284;31416:6;31413:1;31410:13;31391:284;;;31492:6;31486:13;31519:63;31578:3;31563:13;31519:63;:::i;:::-;31512:70;;31605:60;31658:6;31605:60;:::i;:::-;31595:70;;31451:224;31438:1;31435;31431:9;31426:14;;31391:284;;;31395:14;31691:3;31684:10;;31092:608;;;30968:732;;;;:::o;31706:831::-;31969:4;32007:3;31996:9;31992:19;31984:27;;32021:71;32089:1;32078:9;32074:17;32065:6;32021:71;:::i;:::-;32102:80;32178:2;32167:9;32163:18;32154:6;32102:80;:::i;:::-;32229:9;32223:4;32219:20;32214:2;32203:9;32199:18;32192:48;32257:108;32360:4;32351:6;32257:108;:::i;:::-;32249:116;;32375:72;32443:2;32432:9;32428:18;32419:6;32375:72;:::i;:::-;32457:73;32525:3;32514:9;32510:19;32501:6;32457:73;:::i;:::-;31706:831;;;;;;;;:::o;32543:117::-;32652:1;32649;32642:12;32666:281;32749:27;32771:4;32749:27;:::i;:::-;32741:6;32737:40;32879:6;32867:10;32864:22;32843:18;32831:10;32828:34;32825:62;32822:88;;;32890:18;;:::i;:::-;32822:88;32930:10;32926:2;32919:22;32709:238;32666:281;;:::o;32953:129::-;32987:6;33014:20;;:::i;:::-;33004:30;;33043:33;33071:4;33063:6;33043:33;:::i;:::-;32953:129;;;:::o;33088:311::-;33165:4;33255:18;33247:6;33244:30;33241:56;;;33277:18;;:::i;:::-;33241:56;33327:4;33319:6;33315:17;33307:25;;33387:4;33381;33377:15;33369:23;;33088:311;;;:::o;33405:117::-;33514:1;33511;33504:12;33545:732;33652:5;33677:81;33693:64;33750:6;33693:64;:::i;:::-;33677:81;:::i;:::-;33668:90;;33778:5;33807:6;33800:5;33793:21;33841:4;33834:5;33830:16;33823:23;;33894:4;33886:6;33882:17;33874:6;33870:30;33923:3;33915:6;33912:15;33909:122;;;33942:79;;:::i;:::-;33909:122;34057:6;34040:231;34074:6;34069:3;34066:15;34040:231;;;34149:3;34178:48;34222:3;34210:10;34178:48;:::i;:::-;34173:3;34166:61;34256:4;34251:3;34247:14;34240:21;;34116:155;34100:4;34095:3;34091:14;34084:21;;34040:231;;;34044:21;33658:619;;33545:732;;;;;:::o;34300:385::-;34382:5;34431:3;34424:4;34416:6;34412:17;34408:27;34398:122;;34439:79;;:::i;:::-;34398:122;34549:6;34543:13;34574:105;34675:3;34667:6;34660:4;34652:6;34648:17;34574:105;:::i;:::-;34565:114;;34388:297;34300:385;;;;:::o;34691:554::-;34786:6;34835:2;34823:9;34814:7;34810:23;34806:32;34803:119;;;34841:79;;:::i;:::-;34803:119;34982:1;34971:9;34967:17;34961:24;35012:18;35004:6;35001:30;34998:117;;;35034:79;;:::i;:::-;34998:117;35139:89;35220:7;35211:6;35200:9;35196:22;35139:89;:::i;:::-;35129:99;;34932:306;34691:554;;;;:::o;35251:225::-;35391:34;35387:1;35379:6;35375:14;35368:58;35460:8;35455:2;35447:6;35443:15;35436:33;35251:225;:::o;35482:366::-;35624:3;35645:67;35709:2;35704:3;35645:67;:::i;:::-;35638:74;;35721:93;35810:3;35721:93;:::i;:::-;35839:2;35834:3;35830:12;35823:19;;35482:366;;;:::o;35854:419::-;36020:4;36058:2;36047:9;36043:18;36035:26;;36107:9;36101:4;36097:20;36093:1;36082:9;36078:17;36071:47;36135:131;36261:4;36135:131;:::i;:::-;36127:139;;35854:419;;;:::o;36279:442::-;36428:4;36466:2;36455:9;36451:18;36443:26;;36479:71;36547:1;36536:9;36532:17;36523:6;36479:71;:::i;:::-;36560:72;36628:2;36617:9;36613:18;36604:6;36560:72;:::i;:::-;36642;36710:2;36699:9;36695:18;36686:6;36642:72;:::i;:::-;36279:442;;;;;;:::o;36727:167::-;36867:19;36863:1;36855:6;36851:14;36844:43;36727:167;:::o;36900:366::-;37042:3;37063:67;37127:2;37122:3;37063:67;:::i;:::-;37056:74;;37139:93;37228:3;37139:93;:::i;:::-;37257:2;37252:3;37248:12;37241:19;;36900:366;;;:::o;37272:419::-;37438:4;37476:2;37465:9;37461:18;37453:26;;37525:9;37519:4;37515:20;37511:1;37500:9;37496:17;37489:47;37553:131;37679:4;37553:131;:::i;:::-;37545:139;;37272:419;;;:::o
Swarm Source
ipfs://2b5b100831e013a63ea7bdb229d78518957f627b25e8a35be7b5ee4807ca873e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.