Source Code
Latest 25 from a total of 27,655 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Vault Out | 23044944 | 205 days ago | IN | 0 ETH | 0.00009324 | ||||
| Vault Out | 23032447 | 206 days ago | IN | 0.3 ETH | 0.00031674 | ||||
| Vault Out | 22976980 | 214 days ago | IN | 0 ETH | 0.00016302 | ||||
| Vault Out | 22972438 | 215 days ago | IN | 0 ETH | 0.00005402 | ||||
| Vault Out | 22962966 | 216 days ago | IN | 0.004 ETH | 0.00020586 | ||||
| Vault Out | 22959206 | 217 days ago | IN | 0 ETH | 0.00009101 | ||||
| Vault Out | 22957339 | 217 days ago | IN | 0 ETH | 0.00004346 | ||||
| Vault Out | 22957115 | 217 days ago | IN | 0 ETH | 0.00004858 | ||||
| Vault Out | 22930641 | 221 days ago | IN | 0 ETH | 0.00027454 | ||||
| Vault Out | 22919513 | 222 days ago | IN | 0 ETH | 0.00115562 | ||||
| Vault Out | 22919508 | 222 days ago | IN | 0 ETH | 0.00072022 | ||||
| Vault Out | 22917050 | 222 days ago | IN | 0 ETH | 0.00039875 | ||||
| Vault Out | 22898201 | 225 days ago | IN | 0 ETH | 0.00031515 | ||||
| Vault Out | 22898189 | 225 days ago | IN | 0 ETH | 0.00030146 | ||||
| Vault Out | 22896532 | 225 days ago | IN | 0.03 ETH | 0.0007103 | ||||
| Vault Out | 22807091 | 238 days ago | IN | 0 ETH | 0.00001846 | ||||
| Vault Out | 22807069 | 238 days ago | IN | 0 ETH | 0.00001736 | ||||
| Vault Out | 22805859 | 238 days ago | IN | 0 ETH | 0.00004955 | ||||
| Vault Out | 22763910 | 244 days ago | IN | 0 ETH | 0.00005794 | ||||
| Vault Out | 22763820 | 244 days ago | IN | 0 ETH | 0.00004618 | ||||
| Vault Out | 22763820 | 244 days ago | IN | 0 ETH | 0.00006477 | ||||
| Vault Out | 22746119 | 246 days ago | IN | 0 ETH | 0.00026165 | ||||
| Vault Out | 22723438 | 250 days ago | IN | 0 ETH | 0.00018072 | ||||
| Vault Out | 22723427 | 250 days ago | IN | 0 ETH | 0.00018912 | ||||
| Vault Out | 22717311 | 250 days ago | IN | 0 ETH | 0.00022548 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Deposit | 23032447 | 206 days ago | 0.3 ETH | ||||
| Deposit | 22962966 | 216 days ago | 0.004 ETH | ||||
| Deposit | 22896532 | 225 days ago | 0.03 ETH | ||||
| Deposit | 22716181 | 251 days ago | 0.00753897 ETH | ||||
| Deposit | 22703309 | 252 days ago | 0.003153 ETH | ||||
| Deposit | 22702579 | 252 days ago | 0.0064 ETH | ||||
| Deposit | 22687315 | 255 days ago | 0.00315 ETH | ||||
| Transfer | 22554054 | 273 days ago | 0.00030584 ETH | ||||
| Transfer | 22554054 | 273 days ago | 0.00030584 ETH | ||||
| Swap | 22548969 | 274 days ago | 0.079608 ETH | ||||
| Transfer | 22548969 | 274 days ago | 0.079608 ETH | ||||
| Transfer | 22542805 | 275 days ago | 0.03984035 ETH | ||||
| Transfer | 22542805 | 275 days ago | 0.03984035 ETH | ||||
| Transfer | 22542789 | 275 days ago | 0.00987035 ETH | ||||
| Transfer | 22542789 | 275 days ago | 0.00987035 ETH | ||||
| Transfer | 22542609 | 275 days ago | 0.02977478 ETH | ||||
| Transfer | 22542609 | 275 days ago | 0.02977478 ETH | ||||
| Deposit | 22542607 | 275 days ago | 0.08 ETH | ||||
| Transfer | 22495501 | 281 days ago | 0.02982516 ETH | ||||
| Transfer | 22495501 | 281 days ago | 0.02982516 ETH | ||||
| Transfer | 22495501 | 281 days ago | 0.01013559 ETH | ||||
| Transfer | 22495501 | 281 days ago | 0.01013559 ETH | ||||
| Transfer | 22457474 | 287 days ago | 0.02481127 ETH | ||||
| Transfer | 22457474 | 287 days ago | 0.02481127 ETH | ||||
| Transfer | 22457385 | 287 days ago | 0.01977848 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MinterProxyV2
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-04-17
*/
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
_transferOwnership(_msgSender());
}
function owner() public view virtual 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"
);
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
abstract contract Controller is Ownable {
event ControllerAdded(address controller);
event ControllerRemoved(address controller);
mapping(address => bool) controllers;
uint8 public controllerCnt = 0;
modifier onlyController() {
require(isController(_msgSender()), "no controller rights");
_;
}
function isController(address _controller) public view returns (bool) {
return _controller == owner() || controllers[_controller];
}
function addController(address _controller) public onlyOwner {
if (controllers[_controller] == false) {
controllers[_controller] = true;
controllerCnt++;
}
emit ControllerAdded(_controller);
}
function removeController(address _controller) public onlyOwner {
if (controllers[_controller] == true) {
controllers[_controller] = false;
controllerCnt--;
}
emit ControllerRemoved(_controller);
}
}
abstract contract ReentrancyGuard {
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
_status = _ENTERED;
}
function _nonReentrantAfter() private {
_status = _NOT_ENTERED;
}
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == _ENTERED;
}
}
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
interface IERC20Permit {
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
function nonces(address owner) external view returns (uint256);
function DOMAIN_SEPARATOR() external view returns (bytes32);
}
library Address {
function isContract(address account) internal view returns (bool) {
return account.code.length > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(
address(this).balance >= amount,
"Address: insufficient balance"
);
(bool success, ) = recipient.call{value: amount}("");
require(
success,
"Address: unable to send value, recipient may have reverted"
);
}
function functionCall(
address target,
bytes memory data
) internal returns (bytes memory) {
return
functionCallWithValue(
target,
data,
0,
"Address: low-level call failed"
);
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return
functionCallWithValue(
target,
data,
value,
"Address: low-level call with value failed"
);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(
address(this).balance >= value,
"Address: insufficient balance for call"
);
(bool success, bytes memory returndata) = target.call{value: value}(
data
);
return
verifyCallResultFromTarget(
target,
success,
returndata,
errorMessage
);
}
function functionStaticCall(
address target,
bytes memory data
) internal view returns (bytes memory) {
return
functionStaticCall(
target,
data,
"Address: low-level static call failed"
);
}
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return
verifyCallResultFromTarget(
target,
success,
returndata,
errorMessage
);
}
function functionDelegateCall(
address target,
bytes memory data
) internal returns (bytes memory) {
return
functionDelegateCall(
target,
data,
"Address: low-level delegate call failed"
);
}
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return
verifyCallResultFromTarget(
target,
success,
returndata,
errorMessage
);
}
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(
bytes memory returndata,
string memory errorMessage
) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
interface IWrapToken {
function deposit() external payable;
function withdraw(uint256) external;
}
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(
token,
abi.encodeWithSelector(token.transfer.selector, to, value)
);
}
function safeTransferFrom(
IERC20 token,
address from,
address to,
uint256 value
) internal {
_callOptionalReturn(
token,
abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
);
}
function safeApprove(
IERC20 token,
address spender,
uint256 value
) internal {
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(
token,
abi.encodeWithSelector(token.approve.selector, spender, value)
);
}
function safeIncreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
uint256 oldAllowance = token.allowance(address(this), spender);
_callOptionalReturn(
token,
abi.encodeWithSelector(
token.approve.selector,
spender,
oldAllowance + value
)
);
}
function safeDecreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
unchecked {
uint256 oldAllowance = token.allowance(address(this), spender);
require(
oldAllowance >= value,
"SafeERC20: decreased allowance below zero"
);
_callOptionalReturn(
token,
abi.encodeWithSelector(
token.approve.selector,
spender,
oldAllowance - value
)
);
}
}
function forceApprove(
IERC20 token,
address spender,
uint256 value
) internal {
bytes memory approvalCall = abi.encodeWithSelector(
token.approve.selector,
spender,
value
);
if (!_callOptionalReturnBool(token, approvalCall)) {
_callOptionalReturn(
token,
abi.encodeWithSelector(token.approve.selector, spender, 0)
);
_callOptionalReturn(token, approvalCall);
}
}
function safePermit(
IERC20Permit token,
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) internal {
uint256 nonceBefore = token.nonces(owner);
token.permit(owner, spender, value, deadline, v, r, s);
uint256 nonceAfter = token.nonces(owner);
require(
nonceAfter == nonceBefore + 1,
"SafeERC20: permit did not succeed"
);
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(
data,
"SafeERC20: low-level call failed"
);
require(
returndata.length == 0 || abi.decode(returndata, (bool)),
"SafeERC20: ERC20 operation did not succeed"
);
}
function _callOptionalReturnBool(
IERC20 token,
bytes memory data
) private returns (bool) {
(bool success, bytes memory returndata) = address(token).call(data);
return
success &&
(returndata.length == 0 || abi.decode(returndata, (bool))) &&
Address.isContract(address(token));
}
}
library TransferHelper {
function safeTransferNative(address to, uint256 value) internal {
(bool success, ) = to.call{value: value}(new bytes(0));
require(success, "TransferHelper: NATIVE_TRANSFER_FAILED");
}
}
interface IMintBurnToken {
function mint(address to, uint256 amount) external;
function burn(address from, uint256 amount) external;
}
contract MinterProxyV2 is Controller, ReentrancyGuard {
using SafeERC20 for IERC20;
using Address for address;
using Address for address payable;
address public immutable NATIVE =
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
address public wNATIVE;
uint256 MAX_UINT256 =
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
mapping(uint256 => bool) public completedOrder;
address public _liquidpool;
uint256 public _orderID;
bool private _paused;
event Paused(address account);
event Unpaused(address account);
event LogVaultIn(
address indexed token,
uint256 indexed orderID,
address indexed receiver,
uint256 amount,
uint256 serviceFee,
uint256 gasFee
);
event LogVaultOut(
address indexed token,
address indexed from,
uint256 indexed orderID,
uint256 amount,
address vault,
bytes order
);
event LogVaultCall(
address indexed target,
uint256 amount,
bool success,
bytes reason
);
constructor(uint256 _id_prefix, address _lp, address _wNative) {
_liquidpool = _lp;
_paused = false;
_orderID = _id_prefix * (10 ** 9);
wNATIVE = _wNative;
}
receive() external payable {}
fallback() external payable {}
modifier whenNotPaused() {
require(!_paused, "MP: paused");
_;
}
function chainID() public view returns (uint) {
return block.chainid;
}
function setLiquidpool(address _lp) external onlyOwner {
_liquidpool = _lp;
}
function setWrapNative(address _wNative) external onlyOwner {
wNATIVE = _wNative;
}
function needWrapNative() internal view returns (bool) {
return wNATIVE != address(0);
}
function liquidpool() internal view returns (address) {
if (_liquidpool != address(0)) {
return _liquidpool;
}
return address(this);
}
function pause() external onlyOwner {
_paused = true;
emit Paused(_msgSender());
}
function unpause() external onlyOwner {
_paused = false;
emit Unpaused(_msgSender());
}
function isUUIDCompleted(uint256 uuid) external view returns (bool) {
return completedOrder[uuid];
}
function _registerOrder(uint256 uuid) internal {
require(!completedOrder[uuid], "MP: already completed");
completedOrder[uuid] = true;
}
function _balanceOf(address receiveToken) internal view returns (uint256) {
uint256 _balance;
if (receiveToken == NATIVE) {
if (needWrapNative()) {
_balance = IERC20(wNATIVE).balanceOf(liquidpool());
} else {
_balance = address(this).balance;
}
} else {
_balance = IERC20(receiveToken).balanceOf(liquidpool());
}
return _balance;
}
function _balanceOfSelf(
address receiveToken
) internal view returns (uint256) {
uint256 _balance;
if (receiveToken == NATIVE) {
_balance = address(this).balance;
} else {
_balance = IERC20(receiveToken).balanceOf(address(this));
}
return _balance;
}
function _checkVaultOut(
address tokenAddr,
uint256 amount,
bytes calldata order
) internal pure {
require(tokenAddr != address(0), "MP: tokenAddress is invalid");
require(amount > 0, "MP: amount is 0");
require(order.length > 0, "MP: order is empty");
}
function vaultOut(
address tokenAddr,
uint256 amount,
bool burnable,
bytes calldata order
) external payable nonReentrant whenNotPaused {
_checkVaultOut(tokenAddr, amount, order);
if (tokenAddr == NATIVE) {
require(amount == msg.value, "MP: amount is invalid");
if (needWrapNative()) {
uint256 old = IERC20(wNATIVE).balanceOf(address(this));
IWrapToken(wNATIVE).deposit{value: msg.value}();
uint256 val = IERC20(wNATIVE).balanceOf(address(this));
require(val - old == amount, "MP: warp token dismatch");
IERC20(wNATIVE).safeTransfer(_liquidpool, amount);
} else {
TransferHelper.safeTransferNative(_liquidpool, amount);
}
} else if (burnable) {
uint256 old = IERC20(tokenAddr).balanceOf(_msgSender());
IMintBurnToken(tokenAddr).burn(_msgSender(), amount);
uint256 val = IERC20(tokenAddr).balanceOf(_msgSender());
require(val == old - amount, "MP: burn failed");
} else {
IERC20(tokenAddr).safeTransferFrom(
_msgSender(),
liquidpool(),
amount
);
}
_orderID++;
emit LogVaultOut(
tokenAddr,
_msgSender(),
_orderID,
amount,
burnable ? address(0) : liquidpool(),
order
);
}
function vaultIn(
uint256 orderID,
address receiveToken,
address receiver,
bool burnable,
uint256 amount
) external onlyController whenNotPaused {
require(orderID > 0, "MP: orderID empty");
require(receiver != address(0), "MP: receiver invaild");
require(amount > 0, "MP: amount is empty");
if (!burnable) {
require(
_balanceOf(receiveToken) >= amount,
"MP: insufficient balance"
);
}
_registerOrder(orderID);
if (receiveToken == NATIVE) {
if (needWrapNative()) {
IERC20(wNATIVE).safeTransferFrom(
liquidpool(),
address(this),
amount
);
uint256 old = address(this).balance;
IWrapToken(wNATIVE).withdraw(amount);
uint256 val = address(this).balance;
require(
val - old == amount,
"MP: native token amount dismatch"
);
}
TransferHelper.safeTransferNative(receiver, amount);
} else if (burnable) {
uint256 old = IERC20(receiveToken).balanceOf(receiver);
IMintBurnToken(receiveToken).mint(receiver, amount);
uint256 val = IERC20(receiveToken).balanceOf(receiver);
require(val == old + amount, "MP: mint failed");
} else {
IERC20(receiveToken).safeTransferFrom(
liquidpool(),
receiver,
amount
);
}
emit LogVaultIn(receiveToken, orderID, receiver, amount, 0, 0);
}
// Fees[] struct
// 0: uint256 expectAmount
// 1: uint256 minAmount
// 2: uint256 feeRate
// 3: uint256 gasFee
function vaultInAndCall(
uint256 orderID,
address tokenAddr,
address toAddr,
bool burnable,
uint256 amount,
address receiver,
address receiveToken,
uint256[] memory fees,
bytes calldata data
) external onlyController whenNotPaused {
require(orderID > 0, "MP: orderID empty");
require(data.length > 0, "MP: data empty");
require(fees.length == 4, "MP: fees mismatch");
require(amount > 0, "MP: amount is empty");
require(fees[1] > 0, "MP: minAmount is empty");
require(fees[0] > 0, "MP: expectAmount is empty");
if (!burnable) {
require(
_balanceOf(tokenAddr) >= amount,
"MP: insufficient balance"
);
}
require(receiver != address(0), "MP: receiver is empty");
require(
toAddr != address(this) && toAddr != address(0),
"MP: toAddr invaild"
);
_registerOrder(orderID);
bool fromTokenNative = (tokenAddr == NATIVE);
if (fromTokenNative) {
if (needWrapNative()) {
IERC20(wNATIVE).safeTransferFrom(
liquidpool(),
address(this),
amount
);
uint256 old = address(this).balance;
IWrapToken(wNATIVE).withdraw(amount);
uint256 val = address(this).balance;
require(
val - old == amount,
"MP: native token amount dismatch"
);
} else {
// the native token in this contract, so ignore
require(
address(this).balance >= amount,
"MP: native token insuffient"
);
}
} else {
if (burnable) {
uint256 old = IERC20(tokenAddr).balanceOf(address(this));
IMintBurnToken(tokenAddr).mint(address(this), amount);
uint256 val = IERC20(tokenAddr).balanceOf(address(this));
require(val == old + amount, "MP: mint failed");
} else {
IERC20(tokenAddr).safeTransferFrom(
_liquidpool,
address(this),
amount
);
}
if (IERC20(tokenAddr).allowance(address(this), toAddr) < amount) {
IERC20(tokenAddr).safeApprove(toAddr, MAX_UINT256);
}
}
(uint256 realOut, uint256 serviceFee) = _callAndTransfer(
toAddr,
fromTokenNative ? amount : 0,
receiveToken,
fees,
data
);
if (receiver != address(this)) {
if (receiveToken == NATIVE) {
TransferHelper.safeTransferNative(receiver, realOut);
} else {
IERC20(receiveToken).safeTransfer(receiver, realOut);
}
}
uint256 totalfee = serviceFee + fees[3];
if (totalfee > 0) {
if (receiveToken == NATIVE) {
if (needWrapNative()) {
IWrapToken(wNATIVE).deposit{value: totalfee}();
IERC20(wNATIVE).safeTransfer(_liquidpool, totalfee);
}
} else {
IERC20(receiveToken).safeTransfer(_liquidpool, totalfee);
}
}
emit LogVaultIn(
receiveToken,
orderID,
receiver,
realOut,
serviceFee,
fees[3]
);
}
// Fees[] struct
// 0: uint256 expectAmount
// 1: uint256 minAmount
// 2: uint256 feeRate
// 3: uint256 gasFee
function _callAndTransfer(
address contractAddr,
uint256 fromNativeAmount,
address receiveToken,
uint256[] memory fees,
bytes calldata data
) internal returns (uint256, uint256) {
uint256 old_balance = _balanceOfSelf(receiveToken);
if (fromNativeAmount > 0) {
contractAddr.functionCallWithValue(
data,
fromNativeAmount,
"MP: CallWithValue failed"
);
} else {
contractAddr.functionCall(data, "MP: FunctionCall failed");
}
uint256 real = 0;
uint256 serviceFee = 0;
{
uint256 expectAmount = fees[0];
uint256 minAmount = fees[1];
uint256 feeRate = fees[2];
uint256 gasFee = fees[3];
uint256 new_balance = _balanceOfSelf(receiveToken);
require(
new_balance > old_balance,
"MP: receiver should get assets"
);
uint256 amountOut = new_balance - old_balance;
require(amountOut >= minAmount, "MP: receive amount not enough");
require(amountOut >= minAmount + gasFee, "MP: gasFee not enough");
serviceFee = (amountOut * feeRate) / 10000;
require(
amountOut >= minAmount + gasFee + serviceFee,
"MP: fee not enough"
);
real = amountOut - serviceFee - gasFee;
if (real > expectAmount) {
serviceFee += real - expectAmount;
real = expectAmount;
}
}
return (real, serviceFee);
}
function call(
address target,
bytes calldata _data
) external payable onlyOwner {
(bool success, bytes memory result) = target.call{value: msg.value}(
_data
);
emit LogVaultCall(target, msg.value, success, result);
}
function withdrawFee(
address token,
uint256 amount
) external onlyController {
if (token == NATIVE) {
uint256 balance = address(this).balance;
uint256 tmp = balance > amount ? amount : balance;
TransferHelper.safeTransferNative(owner(), tmp);
} else {
uint256 balance = IERC20(token).balanceOf(address(this));
uint256 tmp = balance > amount ? amount : balance;
IERC20(token).safeTransfer(owner(), tmp);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"_id_prefix","type":"uint256"},{"internalType":"address","name":"_lp","type":"address"},{"internalType":"address","name":"_wNative","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"controller","type":"address"}],"name":"ControllerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"controller","type":"address"}],"name":"ControllerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"LogVaultCall","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"serviceFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasFee","type":"uint256"}],"name":"LogVaultIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"bytes","name":"order","type":"bytes"}],"name":"LogVaultOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"NATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidpool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_orderID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"addController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"call","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"chainID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"completedOrder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controllerCnt","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"isController","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uuid","type":"uint256"}],"name":"isUUIDCompleted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"removeController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lp","type":"address"}],"name":"setLiquidpool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wNative","type":"address"}],"name":"setWrapNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"orderID","type":"uint256"},{"internalType":"address","name":"receiveToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bool","name":"burnable","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"vaultIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"orderID","type":"uint256"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"address","name":"toAddr","type":"address"},{"internalType":"bool","name":"burnable","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"receiveToken","type":"address"},{"internalType":"uint256[]","name":"fees","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"vaultInAndCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"burnable","type":"bool"},{"internalType":"bytes","name":"order","type":"bytes"}],"name":"vaultOut","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"wNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040526002805460ff1916905573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6080526000196005553480156200003957600080fd5b50604051620035a2380380620035a28339810160408190526200005c916200013a565b6200006733620000cd565b6001600355600780546001600160a01b0319166001600160a01b0384161790556009805460ff19169055620000a183633b9aca006200017b565b600855600480546001600160a01b0319166001600160a01b039290921691909117905550620001a79050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013557600080fd5b919050565b6000806000606084860312156200015057600080fd5b8351925062000162602085016200011d565b915062000172604085016200011d565b90509250925092565b8082028115828204841417620001a157634e487b7160e01b600052601160045260246000fd5b92915050565b6080516133a7620001fb60003960008181610326015281816105c101528181610d440152818161176501528181611b6a01528181611bf601528181611fbb015281816124110152612be401526133a76000f3fe6080604052600436106101605760003560e01c80638fd903f5116100bf578063cec7d38811610079578063f2fde38b11610056578063f2fde38b146103fb578063f6a74ed71461041b578063fd9be5221461043b57005b8063cec7d3881461039b578063d039eff2146103bb578063d4d5ea45146103db57005b8063a7fc7a07116100a7578063a7fc7a0714610348578063adc879e914610368578063b429afeb1461037b57005b80638fd903f5146102f4578063a0cf0aea1461031457005b80635342389e1161011b57806378bbe8b6116100f857806378bbe8b6146102955780638456cb59146102c15780638da5cb5b146102d657005b80635342389e146102215780635b7dd1bb14610245578063681b19ff1461026557005b80631b8b921d116101495780631b8b921d146101e65780633f163c47146101f95780633f4ba83a1461020c57005b80628e59cf146101695780630833bc9a146101a657005b3661016757005b005b34801561017557600080fd5b50600754610189906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101b257600080fd5b506101d66101c1366004612def565b60009081526006602052604090205460ff1690565b604051901515815260200161019d565b6101676101f4366004612e6d565b61045b565b610167610207366004612ece565b61056b565b34801561021857600080fd5b50610167610aad565b34801561022d57600080fd5b5061023760085481565b60405190815260200161019d565b34801561025157600080fd5b50610167610260366004612f3f565b610b51565b34801561027157600080fd5b506101d6610280366004612def565b60066020526000908152604090205460ff1681565b3480156102a157600080fd5b506002546102af9060ff1681565b60405160ff909116815260200161019d565b3480156102cd57600080fd5b506101676110a7565b3480156102e257600080fd5b506000546001600160a01b0316610189565b34801561030057600080fd5b50600454610189906001600160a01b031681565b34801561032057600080fd5b506101897f000000000000000000000000000000000000000000000000000000000000000081565b34801561035457600080fd5b50610167610363366004612f96565b611136565b34801561037457600080fd5b5046610237565b34801561038757600080fd5b506101d6610396366004612f96565b611244565b3480156103a757600080fd5b506101676103b6366004612f96565b61127f565b3480156103c757600080fd5b506101676103d6366004612f96565b611308565b3480156103e757600080fd5b506101676103f6366004612fc7565b611391565b34801561040757600080fd5b50610167610416366004612f96565b611d7d565b34801561042757600080fd5b50610167610436366004612f96565b611e5f565b34801561044757600080fd5b50610167610456366004613132565b611f64565b6000546001600160a01b031633146104ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080846001600160a01b03163485856040516104d892919061315c565b60006040518083038185875af1925050503d8060008114610515576040519150601f19603f3d011682016040523d82523d6000602084013e61051a565b606091505b5091509150846001600160a01b03167fbb9c4c4e98e306e63e340c78eed06da47fecfc0e2e0c6e88b42aca99dc5d52c334848460405161055c939291906131bc565b60405180910390a25050505050565b6105736120cd565b60095460ff16156105b35760405162461bcd60e51b815260206004820152600a60248201526913540e881c185d5cd95960b21b60448201526064016104b1565b6105bf85858484612126565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361083e573484146106475760405162461bcd60e51b815260206004820152601560248201527f4d503a20616d6f756e7420697320696e76616c6964000000000000000000000060448201526064016104b1565b6004546001600160a01b03161561082357600480546040516370a0823160e01b815230928101929092526000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156106a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ca91906131e6565b9050600460009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561071c57600080fd5b505af1158015610730573d6000803e3d6000fd5b5050600480546040516370a0823160e01b81523092810192909252600094506001600160a01b031692506370a082319150602401602060405180830381865afa158015610781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a591906131e6565b9050856107b28383613215565b146107ff5760405162461bcd60e51b815260206004820152601760248201527f4d503a207761727020746f6b656e206469736d6174636800000000000000000060448201526064016104b1565b60075460045461081c916001600160a01b03918216911688612219565b5050610a28565b600754610839906001600160a01b0316856122af565b610a28565b8215610a0a5760006001600160a01b0386166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108be91906131e6565b90506001600160a01b038616639dc29fac336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561091857600080fd5b505af115801561092c573d6000803e3d6000fd5b505050506000866001600160a01b03166370a082316109483390565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b091906131e6565b90506109bc8683613215565b811461081c5760405162461bcd60e51b815260206004820152600f60248201527f4d503a206275726e206661696c6564000000000000000000000000000000000060448201526064016104b1565b610a2833610a16612392565b6001600160a01b0388169190876123bb565b60088054906000610a3883613228565b9091555050600854336001600160a01b0387167f873a952504255baba041a0843512f2748152611db0d25da60657af220f7540ba8787610a7f57610a7a612392565b610a82565b60005b8787604051610a949493929190613241565b60405180910390a4610aa66001600355565b5050505050565b6000546001600160a01b03163314610b075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6009805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610b5a33611244565b610ba65760405162461bcd60e51b815260206004820152601460248201527f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000060448201526064016104b1565b60095460ff1615610be65760405162461bcd60e51b815260206004820152600a60248201526913540e881c185d5cd95960b21b60448201526064016104b1565b60008511610c365760405162461bcd60e51b815260206004820152601160248201527f4d503a206f72646572494420656d70747900000000000000000000000000000060448201526064016104b1565b6001600160a01b038316610c8c5760405162461bcd60e51b815260206004820152601460248201527f4d503a20726563656976657220696e7661696c6400000000000000000000000060448201526064016104b1565b60008111610cdc5760405162461bcd60e51b815260206004820152601360248201527f4d503a20616d6f756e7420697320656d7074790000000000000000000000000060448201526064016104b1565b81610d395780610ceb8561240c565b1015610d395760405162461bcd60e51b815260206004820152601860248201527f4d503a20696e73756666696369656e742062616c616e6365000000000000000060448201526064016104b1565b610d428561256f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610e79576004546001600160a01b031615610e6a57610dab610d97612392565b6004546001600160a01b03169030846123bb565b60048054604051632e1a7d4d60e01b815291820183905247916001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610df357600080fd5b505af1158015610e07573d6000803e3d6000fd5b50479250849150610e1a90508383613215565b14610e675760405162461bcd60e51b815260206004820181905260248201527f4d503a206e617469766520746f6b656e20616d6f756e74206469736d6174636860448201526064016104b1565b50505b610e7483826122af565b61103e565b8115611021576040516370a0823160e01b81526001600160a01b038481166004830152600091908616906370a0823190602401602060405180830381865afa158015610ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eed91906131e6565b6040516340c10f1960e01b81526001600160a01b03868116600483015260248201859052919250908616906340c10f1990604401600060405180830381600087803b158015610f3b57600080fd5b505af1158015610f4f573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03878116600483015260009350881691506370a0823190602401602060405180830381865afa158015610f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc091906131e6565b9050610fcc8383613287565b811461101a5760405162461bcd60e51b815260206004820152600f60248201527f4d503a206d696e74206661696c6564000000000000000000000000000000000060448201526064016104b1565b505061103e565b61103e61102c612392565b6001600160a01b0386169085846123bb565b826001600160a01b031685856001600160a01b03167f74aaf2992820754761f714bb3dcf12d7e3bb2e5f41949629e2e88a4a219e204784600080604051611098939291909283526020830191909152604082015260600190565b60405180910390a45050505050565b6000546001600160a01b031633146111015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6009805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b343390565b6000546001600160a01b031633146111905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6001600160a01b03811660009081526001602052604081205460ff1615159003611204576001600160a01b03811660009081526001602081905260408220805460ff191690911790556002805460ff16916111ea8361329a565b91906101000a81548160ff021916908360ff160217905550505b6040516001600160a01b03821681527f0a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d7474906020015b60405180910390a150565b600080546001600160a01b038381169116148061127957506001600160a01b03821660009081526001602052604090205460ff165b92915050565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61139a33611244565b6113e65760405162461bcd60e51b815260206004820152601460248201527f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000060448201526064016104b1565b60095460ff16156114265760405162461bcd60e51b815260206004820152600a60248201526913540e881c185d5cd95960b21b60448201526064016104b1565b60008a116114765760405162461bcd60e51b815260206004820152601160248201527f4d503a206f72646572494420656d70747900000000000000000000000000000060448201526064016104b1565b806114c35760405162461bcd60e51b815260206004820152600e60248201527f4d503a206461746120656d70747900000000000000000000000000000000000060448201526064016104b1565b82516004146115145760405162461bcd60e51b815260206004820152601160248201527f4d503a2066656573206d69736d6174636800000000000000000000000000000060448201526064016104b1565b600086116115645760405162461bcd60e51b815260206004820152601360248201527f4d503a20616d6f756e7420697320656d7074790000000000000000000000000060448201526064016104b1565b600083600181518110611579576115796132b9565b6020026020010151116115ce5760405162461bcd60e51b815260206004820152601660248201527f4d503a206d696e416d6f756e7420697320656d7074790000000000000000000060448201526064016104b1565b6000836000815181106115e3576115e36132b9565b6020026020010151116116385760405162461bcd60e51b815260206004820152601960248201527f4d503a20657870656374416d6f756e7420697320656d7074790000000000000060448201526064016104b1565b8661169557856116478a61240c565b10156116955760405162461bcd60e51b815260206004820152601860248201527f4d503a20696e73756666696369656e742062616c616e6365000000000000000060448201526064016104b1565b6001600160a01b0385166116eb5760405162461bcd60e51b815260206004820152601560248201527f4d503a20726563656976657220697320656d707479000000000000000000000060448201526064016104b1565b6001600160a01b038816301480159061170c57506001600160a01b03881615155b6117585760405162461bcd60e51b815260206004820152601260248201527f4d503a20746f4164647220696e7661696c64000000000000000000000000000060448201526064016104b1565b6117618a61256f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168a6001600160a01b031614905080156118e8576004546001600160a01b031615611893576117d06117bc612392565b6004546001600160a01b031690308a6123bb565b60048054604051632e1a7d4d60e01b815291820189905247916001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561181857600080fd5b505af115801561182c573d6000803e3d6000fd5b504792508a915061183f90508383613215565b1461188c5760405162461bcd60e51b815260206004820181905260248201527f4d503a206e617469766520746f6b656e20616d6f756e74206469736d6174636860448201526064016104b1565b5050611b35565b864710156118e35760405162461bcd60e51b815260206004820152601b60248201527f4d503a206e617469766520746f6b656e20696e7375666669656e74000000000060448201526064016104b1565b611b35565b8715611a88576040516370a0823160e01b81523060048201526000906001600160a01b038c16906370a0823190602401602060405180830381865afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195991906131e6565b6040516340c10f1960e01b8152306004820152602481018a90529091506001600160a01b038c16906340c10f1990604401600060405180830381600087803b1580156119a457600080fd5b505af11580156119b8573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b038e1691506370a0823190602401602060405180830381865afa158015611a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2791906131e6565b9050611a338983613287565b8114611a815760405162461bcd60e51b815260206004820152600f60248201527f4d503a206d696e74206661696c6564000000000000000000000000000000000060448201526064016104b1565b5050611aa3565b600754611aa3906001600160a01b038c81169116308a6123bb565b604051636eb1769f60e11b81523060048201526001600160a01b038a811660248301528891908c169063dd62ed3e90604401602060405180830381865afa158015611af2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1691906131e6565b1015611b3557600554611b35906001600160a01b038c16908b906125e9565b600080611b538b84611b48576000611b4a565b8a5b8989898961271e565b90925090506001600160a01b0388163014611bc4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031603611bb057611bab88836122af565b611bc4565b611bc46001600160a01b0388168984612219565b600086600381518110611bd957611bd96132b9565b602002602001015182611bec9190613287565b90508015611cf2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031603611cd8576004546001600160a01b031615611cd35760048054604080517fd0e30db000000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263d0e30db0928592808301926000929182900301818588803b158015611c9c57600080fd5b505af1158015611cb0573d6000803e3d6000fd5b5050600754600454611cd394506001600160a01b03908116935016905083612219565b611cf2565b600754611cf2906001600160a01b038a8116911683612219565b886001600160a01b03168e896001600160a01b03167f74aaf2992820754761f714bb3dcf12d7e3bb2e5f41949629e2e88a4a219e204786868c600381518110611d3d57611d3d6132b9565b6020026020010151604051611d65939291909283526020830191909152604082015260600190565b60405180910390a45050505050505050505050505050565b6000546001600160a01b03163314611dd75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6001600160a01b038116611e535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104b1565b611e5c81612a9a565b50565b6000546001600160a01b03163314611eb95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6001600160a01b03811660009081526001602081905260409091205460ff1615159003611f2b576001600160a01b0381166000908152600160205260408120805460ff191690556002805460ff1691611f11836132cf565b91906101000a81548160ff021916908360ff160217905550505b6040516001600160a01b03821681527f33d83959be2573f5453b12eb9d43b3499bc57d96bd2f067ba44803c859e8111390602001611239565b611f6d33611244565b611fb95760405162461bcd60e51b815260206004820152601460248201527f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000060448201526064016104b1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603612027574760008282116120025781612004565b825b905061202161201b6000546001600160a01b031690565b826122af565b50505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561206e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209291906131e6565b905060008282116120a357816120a5565b825b90506120216120bc6000546001600160a01b031690565b6001600160a01b0386169083612219565b60026003540361211f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104b1565b6002600355565b6001600160a01b03841661217c5760405162461bcd60e51b815260206004820152601b60248201527f4d503a20746f6b656e4164647265737320697320696e76616c6964000000000060448201526064016104b1565b600083116121cc5760405162461bcd60e51b815260206004820152600f60248201527f4d503a20616d6f756e742069732030000000000000000000000000000000000060448201526064016104b1565b806120215760405162461bcd60e51b815260206004820152601260248201527f4d503a206f7264657220697320656d707479000000000000000000000000000060448201526064016104b1565b6040516001600160a01b0383166024820152604481018290526122aa9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152612af7565b505050565b604080516000808252602082019092526001600160a01b0384169083906040516122d991906132ec565b60006040518083038185875af1925050503d8060008114612316576040519150601f19603f3d011682016040523d82523d6000602084013e61231b565b606091505b50509050806122aa5760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657248656c7065723a204e41544956455f5452414e534645525f60448201527f4641494c4544000000000000000000000000000000000000000000000000000060648201526084016104b1565b6007546000906001600160a01b0316156123b657506007546001600160a01b031690565b503090565b6040516001600160a01b03808516602483015283166044820152606481018290526120219085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161225e565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036124e8576004546001600160a01b0316156124e1576004546001600160a01b03166370a08231612472612392565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156124b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124da91906131e6565b9050611279565b5047611279565b826001600160a01b03166370a082316124ff612392565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015b602060405180830381865afa158015612544573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256891906131e6565b9392505050565b60008181526006602052604090205460ff16156125ce5760405162461bcd60e51b815260206004820152601560248201527f4d503a20616c726561647920636f6d706c65746564000000000000000000000060448201526064016104b1565b6000908152600660205260409020805460ff19166001179055565b8015806126635750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561263d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266191906131e6565b155b6126d55760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016104b1565b6040516001600160a01b0383166024820152604481018290526122aa9084907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161225e565b600080600061272c87612bdf565b905087156127ba576127b485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f4d503a2043616c6c5769746856616c7565206661696c6564000000000000000060208201526001600160a01b038e169392508c9150612c4e565b5061283b565b61283985858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f4d503a2046756e6374696f6e43616c6c206661696c656400000000000000000060208201526001600160a01b038e169392509050612d42565b505b600080600088600081518110612853576128536132b9565b60200260200101519050600089600181518110612872576128726132b9565b6020026020010151905060008a600281518110612891576128916132b9565b6020026020010151905060008b6003815181106128b0576128b06132b9565b6020026020010151905060006128c58e612bdf565b90508781116129165760405162461bcd60e51b815260206004820152601e60248201527f4d503a2072656365697665722073686f756c642067657420617373657473000060448201526064016104b1565b60006129228983613215565b9050848110156129745760405162461bcd60e51b815260206004820152601d60248201527f4d503a207265636569766520616d6f756e74206e6f7420656e6f75676800000060448201526064016104b1565b61297e8386613287565b8110156129cd5760405162461bcd60e51b815260206004820152601560248201527f4d503a20676173466565206e6f7420656e6f756768000000000000000000000060448201526064016104b1565b6127106129da8583613308565b6129e4919061331f565b9650866129f18487613287565b6129fb9190613287565b811015612a4a5760405162461bcd60e51b815260206004820152601260248201527f4d503a20666565206e6f7420656e6f756768000000000000000000000000000060448201526064016104b1565b82612a558883613215565b612a5f9190613215565b975085881115612a8357612a738689613215565b612a7d9088613287565b96508597505b50959f949e50939c50505050505050505050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000612b4c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612d429092919063ffffffff16565b9050805160001480612b6d575080806020019051810190612b6d9190613341565b6122aa5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104b1565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603612c22575047611279565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401612527565b606082471015612cc65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016104b1565b600080866001600160a01b03168587604051612ce291906132ec565b60006040518083038185875af1925050503d8060008114612d1f576040519150601f19603f3d011682016040523d82523d6000602084013e612d24565b606091505b5091509150612d3587838387612d51565b925050505b949350505050565b6060612d3a8484600085612c4e565b60608315612dc0578251600003612db9576001600160a01b0385163b612db95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104b1565b5081612d3a565b612d3a8383815115612dd55781518083602001fd5b8060405162461bcd60e51b81526004016104b1919061335e565b600060208284031215612e0157600080fd5b5035919050565b80356001600160a01b0381168114612e1f57600080fd5b919050565b60008083601f840112612e3657600080fd5b50813567ffffffffffffffff811115612e4e57600080fd5b602083019150836020828501011115612e6657600080fd5b9250929050565b600080600060408486031215612e8257600080fd5b612e8b84612e08565b9250602084013567ffffffffffffffff811115612ea757600080fd5b612eb386828701612e24565b9497909650939450505050565b8015158114611e5c57600080fd5b600080600080600060808688031215612ee657600080fd5b612eef86612e08565b9450602086013593506040860135612f0681612ec0565b9250606086013567ffffffffffffffff811115612f2257600080fd5b612f2e88828901612e24565b969995985093965092949392505050565b600080600080600060a08688031215612f5757600080fd5b85359450612f6760208701612e08565b9350612f7560408701612e08565b92506060860135612f8581612ec0565b949793965091946080013592915050565b600060208284031215612fa857600080fd5b61256882612e08565b634e487b7160e01b600052604160045260246000fd5b6000806000806000806000806000806101208b8d031215612fe757600080fd5b8a359950612ff760208c01612e08565b985061300560408c01612e08565b975061301460608c0135612ec0565b60608b0135965060808b0135955061302e60a08c01612e08565b945061303c60c08c01612e08565b935067ffffffffffffffff8060e08d0135111561305857600080fd5b60e08c01358c018d601f82011261306e57600080fd5b818135111561307f5761307f612fb1565b604051813560051b603f01601f1916810183811182821017156130a4576130a4612fb1565b806040525080823582526020820190508f6020843560051b85010111156130ca57600080fd5b602083015b6020843560051b8501018110156130f05780358252602091820191016130cf565b50508095505050806101008d0135111561310957600080fd5b5061311b8c6101008d01358d01612e24565b81935080925050509295989b9194979a5092959850565b6000806040838503121561314557600080fd5b61314e83612e08565b946020939093013593505050565b8183823760009101908152919050565b60005b8381101561318757818101518382015260200161316f565b50506000910152565b600081518084526131a881602086016020860161316c565b601f01601f19169290920160200192915050565b83815282151560208201526060604082015260006131dd6060830184613190565b95945050505050565b6000602082840312156131f857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611279576112796131ff565b60006001820161323a5761323a6131ff565b5060010190565b8481526001600160a01b038416602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b80820180821115611279576112796131ff565b600060ff821660ff81036132b0576132b06131ff565b60010192915050565b634e487b7160e01b600052603260045260246000fd5b600060ff8216806132e2576132e26131ff565b6000190192915050565b600082516132fe81846020870161316c565b9190910192915050565b8082028115828204841417611279576112796131ff565b60008261333c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561335357600080fd5b815161256881612ec0565b602081526000612568602083018461319056fea264697066735822122087b28c2658b0759abed2e8a2571b18f511c6a296c9acea8c12ee62b6349e8fb464736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000140000000000000000000000008a4aa176007196d48d39c89402d3753c39ae64c1000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x6080604052600436106101605760003560e01c80638fd903f5116100bf578063cec7d38811610079578063f2fde38b11610056578063f2fde38b146103fb578063f6a74ed71461041b578063fd9be5221461043b57005b8063cec7d3881461039b578063d039eff2146103bb578063d4d5ea45146103db57005b8063a7fc7a07116100a7578063a7fc7a0714610348578063adc879e914610368578063b429afeb1461037b57005b80638fd903f5146102f4578063a0cf0aea1461031457005b80635342389e1161011b57806378bbe8b6116100f857806378bbe8b6146102955780638456cb59146102c15780638da5cb5b146102d657005b80635342389e146102215780635b7dd1bb14610245578063681b19ff1461026557005b80631b8b921d116101495780631b8b921d146101e65780633f163c47146101f95780633f4ba83a1461020c57005b80628e59cf146101695780630833bc9a146101a657005b3661016757005b005b34801561017557600080fd5b50600754610189906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101b257600080fd5b506101d66101c1366004612def565b60009081526006602052604090205460ff1690565b604051901515815260200161019d565b6101676101f4366004612e6d565b61045b565b610167610207366004612ece565b61056b565b34801561021857600080fd5b50610167610aad565b34801561022d57600080fd5b5061023760085481565b60405190815260200161019d565b34801561025157600080fd5b50610167610260366004612f3f565b610b51565b34801561027157600080fd5b506101d6610280366004612def565b60066020526000908152604090205460ff1681565b3480156102a157600080fd5b506002546102af9060ff1681565b60405160ff909116815260200161019d565b3480156102cd57600080fd5b506101676110a7565b3480156102e257600080fd5b506000546001600160a01b0316610189565b34801561030057600080fd5b50600454610189906001600160a01b031681565b34801561032057600080fd5b506101897f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561035457600080fd5b50610167610363366004612f96565b611136565b34801561037457600080fd5b5046610237565b34801561038757600080fd5b506101d6610396366004612f96565b611244565b3480156103a757600080fd5b506101676103b6366004612f96565b61127f565b3480156103c757600080fd5b506101676103d6366004612f96565b611308565b3480156103e757600080fd5b506101676103f6366004612fc7565b611391565b34801561040757600080fd5b50610167610416366004612f96565b611d7d565b34801561042757600080fd5b50610167610436366004612f96565b611e5f565b34801561044757600080fd5b50610167610456366004613132565b611f64565b6000546001600160a01b031633146104ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080846001600160a01b03163485856040516104d892919061315c565b60006040518083038185875af1925050503d8060008114610515576040519150601f19603f3d011682016040523d82523d6000602084013e61051a565b606091505b5091509150846001600160a01b03167fbb9c4c4e98e306e63e340c78eed06da47fecfc0e2e0c6e88b42aca99dc5d52c334848460405161055c939291906131bc565b60405180910390a25050505050565b6105736120cd565b60095460ff16156105b35760405162461bcd60e51b815260206004820152600a60248201526913540e881c185d5cd95960b21b60448201526064016104b1565b6105bf85858484612126565b7f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316856001600160a01b03160361083e573484146106475760405162461bcd60e51b815260206004820152601560248201527f4d503a20616d6f756e7420697320696e76616c6964000000000000000000000060448201526064016104b1565b6004546001600160a01b03161561082357600480546040516370a0823160e01b815230928101929092526000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156106a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ca91906131e6565b9050600460009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561071c57600080fd5b505af1158015610730573d6000803e3d6000fd5b5050600480546040516370a0823160e01b81523092810192909252600094506001600160a01b031692506370a082319150602401602060405180830381865afa158015610781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a591906131e6565b9050856107b28383613215565b146107ff5760405162461bcd60e51b815260206004820152601760248201527f4d503a207761727020746f6b656e206469736d6174636800000000000000000060448201526064016104b1565b60075460045461081c916001600160a01b03918216911688612219565b5050610a28565b600754610839906001600160a01b0316856122af565b610a28565b8215610a0a5760006001600160a01b0386166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108be91906131e6565b90506001600160a01b038616639dc29fac336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561091857600080fd5b505af115801561092c573d6000803e3d6000fd5b505050506000866001600160a01b03166370a082316109483390565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b091906131e6565b90506109bc8683613215565b811461081c5760405162461bcd60e51b815260206004820152600f60248201527f4d503a206275726e206661696c6564000000000000000000000000000000000060448201526064016104b1565b610a2833610a16612392565b6001600160a01b0388169190876123bb565b60088054906000610a3883613228565b9091555050600854336001600160a01b0387167f873a952504255baba041a0843512f2748152611db0d25da60657af220f7540ba8787610a7f57610a7a612392565b610a82565b60005b8787604051610a949493929190613241565b60405180910390a4610aa66001600355565b5050505050565b6000546001600160a01b03163314610b075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6009805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610b5a33611244565b610ba65760405162461bcd60e51b815260206004820152601460248201527f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000060448201526064016104b1565b60095460ff1615610be65760405162461bcd60e51b815260206004820152600a60248201526913540e881c185d5cd95960b21b60448201526064016104b1565b60008511610c365760405162461bcd60e51b815260206004820152601160248201527f4d503a206f72646572494420656d70747900000000000000000000000000000060448201526064016104b1565b6001600160a01b038316610c8c5760405162461bcd60e51b815260206004820152601460248201527f4d503a20726563656976657220696e7661696c6400000000000000000000000060448201526064016104b1565b60008111610cdc5760405162461bcd60e51b815260206004820152601360248201527f4d503a20616d6f756e7420697320656d7074790000000000000000000000000060448201526064016104b1565b81610d395780610ceb8561240c565b1015610d395760405162461bcd60e51b815260206004820152601860248201527f4d503a20696e73756666696369656e742062616c616e6365000000000000000060448201526064016104b1565b610d428561256f565b7f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316846001600160a01b031603610e79576004546001600160a01b031615610e6a57610dab610d97612392565b6004546001600160a01b03169030846123bb565b60048054604051632e1a7d4d60e01b815291820183905247916001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610df357600080fd5b505af1158015610e07573d6000803e3d6000fd5b50479250849150610e1a90508383613215565b14610e675760405162461bcd60e51b815260206004820181905260248201527f4d503a206e617469766520746f6b656e20616d6f756e74206469736d6174636860448201526064016104b1565b50505b610e7483826122af565b61103e565b8115611021576040516370a0823160e01b81526001600160a01b038481166004830152600091908616906370a0823190602401602060405180830381865afa158015610ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eed91906131e6565b6040516340c10f1960e01b81526001600160a01b03868116600483015260248201859052919250908616906340c10f1990604401600060405180830381600087803b158015610f3b57600080fd5b505af1158015610f4f573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03878116600483015260009350881691506370a0823190602401602060405180830381865afa158015610f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc091906131e6565b9050610fcc8383613287565b811461101a5760405162461bcd60e51b815260206004820152600f60248201527f4d503a206d696e74206661696c6564000000000000000000000000000000000060448201526064016104b1565b505061103e565b61103e61102c612392565b6001600160a01b0386169085846123bb565b826001600160a01b031685856001600160a01b03167f74aaf2992820754761f714bb3dcf12d7e3bb2e5f41949629e2e88a4a219e204784600080604051611098939291909283526020830191909152604082015260600190565b60405180910390a45050505050565b6000546001600160a01b031633146111015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6009805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b343390565b6000546001600160a01b031633146111905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6001600160a01b03811660009081526001602052604081205460ff1615159003611204576001600160a01b03811660009081526001602081905260408220805460ff191690911790556002805460ff16916111ea8361329a565b91906101000a81548160ff021916908360ff160217905550505b6040516001600160a01b03821681527f0a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d7474906020015b60405180910390a150565b600080546001600160a01b038381169116148061127957506001600160a01b03821660009081526001602052604090205460ff165b92915050565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61139a33611244565b6113e65760405162461bcd60e51b815260206004820152601460248201527f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000060448201526064016104b1565b60095460ff16156114265760405162461bcd60e51b815260206004820152600a60248201526913540e881c185d5cd95960b21b60448201526064016104b1565b60008a116114765760405162461bcd60e51b815260206004820152601160248201527f4d503a206f72646572494420656d70747900000000000000000000000000000060448201526064016104b1565b806114c35760405162461bcd60e51b815260206004820152600e60248201527f4d503a206461746120656d70747900000000000000000000000000000000000060448201526064016104b1565b82516004146115145760405162461bcd60e51b815260206004820152601160248201527f4d503a2066656573206d69736d6174636800000000000000000000000000000060448201526064016104b1565b600086116115645760405162461bcd60e51b815260206004820152601360248201527f4d503a20616d6f756e7420697320656d7074790000000000000000000000000060448201526064016104b1565b600083600181518110611579576115796132b9565b6020026020010151116115ce5760405162461bcd60e51b815260206004820152601660248201527f4d503a206d696e416d6f756e7420697320656d7074790000000000000000000060448201526064016104b1565b6000836000815181106115e3576115e36132b9565b6020026020010151116116385760405162461bcd60e51b815260206004820152601960248201527f4d503a20657870656374416d6f756e7420697320656d7074790000000000000060448201526064016104b1565b8661169557856116478a61240c565b10156116955760405162461bcd60e51b815260206004820152601860248201527f4d503a20696e73756666696369656e742062616c616e6365000000000000000060448201526064016104b1565b6001600160a01b0385166116eb5760405162461bcd60e51b815260206004820152601560248201527f4d503a20726563656976657220697320656d707479000000000000000000000060448201526064016104b1565b6001600160a01b038816301480159061170c57506001600160a01b03881615155b6117585760405162461bcd60e51b815260206004820152601260248201527f4d503a20746f4164647220696e7661696c64000000000000000000000000000060448201526064016104b1565b6117618a61256f565b60007f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168a6001600160a01b031614905080156118e8576004546001600160a01b031615611893576117d06117bc612392565b6004546001600160a01b031690308a6123bb565b60048054604051632e1a7d4d60e01b815291820189905247916001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561181857600080fd5b505af115801561182c573d6000803e3d6000fd5b504792508a915061183f90508383613215565b1461188c5760405162461bcd60e51b815260206004820181905260248201527f4d503a206e617469766520746f6b656e20616d6f756e74206469736d6174636860448201526064016104b1565b5050611b35565b864710156118e35760405162461bcd60e51b815260206004820152601b60248201527f4d503a206e617469766520746f6b656e20696e7375666669656e74000000000060448201526064016104b1565b611b35565b8715611a88576040516370a0823160e01b81523060048201526000906001600160a01b038c16906370a0823190602401602060405180830381865afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195991906131e6565b6040516340c10f1960e01b8152306004820152602481018a90529091506001600160a01b038c16906340c10f1990604401600060405180830381600087803b1580156119a457600080fd5b505af11580156119b8573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b038e1691506370a0823190602401602060405180830381865afa158015611a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2791906131e6565b9050611a338983613287565b8114611a815760405162461bcd60e51b815260206004820152600f60248201527f4d503a206d696e74206661696c6564000000000000000000000000000000000060448201526064016104b1565b5050611aa3565b600754611aa3906001600160a01b038c81169116308a6123bb565b604051636eb1769f60e11b81523060048201526001600160a01b038a811660248301528891908c169063dd62ed3e90604401602060405180830381865afa158015611af2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1691906131e6565b1015611b3557600554611b35906001600160a01b038c16908b906125e9565b600080611b538b84611b48576000611b4a565b8a5b8989898961271e565b90925090506001600160a01b0388163014611bc4577f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316876001600160a01b031603611bb057611bab88836122af565b611bc4565b611bc46001600160a01b0388168984612219565b600086600381518110611bd957611bd96132b9565b602002602001015182611bec9190613287565b90508015611cf2577f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316886001600160a01b031603611cd8576004546001600160a01b031615611cd35760048054604080517fd0e30db000000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263d0e30db0928592808301926000929182900301818588803b158015611c9c57600080fd5b505af1158015611cb0573d6000803e3d6000fd5b5050600754600454611cd394506001600160a01b03908116935016905083612219565b611cf2565b600754611cf2906001600160a01b038a8116911683612219565b886001600160a01b03168e896001600160a01b03167f74aaf2992820754761f714bb3dcf12d7e3bb2e5f41949629e2e88a4a219e204786868c600381518110611d3d57611d3d6132b9565b6020026020010151604051611d65939291909283526020830191909152604082015260600190565b60405180910390a45050505050505050505050505050565b6000546001600160a01b03163314611dd75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6001600160a01b038116611e535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104b1565b611e5c81612a9a565b50565b6000546001600160a01b03163314611eb95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b1565b6001600160a01b03811660009081526001602081905260409091205460ff1615159003611f2b576001600160a01b0381166000908152600160205260408120805460ff191690556002805460ff1691611f11836132cf565b91906101000a81548160ff021916908360ff160217905550505b6040516001600160a01b03821681527f33d83959be2573f5453b12eb9d43b3499bc57d96bd2f067ba44803c859e8111390602001611239565b611f6d33611244565b611fb95760405162461bcd60e51b815260206004820152601460248201527f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000060448201526064016104b1565b7f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316826001600160a01b031603612027574760008282116120025781612004565b825b905061202161201b6000546001600160a01b031690565b826122af565b50505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561206e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209291906131e6565b905060008282116120a357816120a5565b825b90506120216120bc6000546001600160a01b031690565b6001600160a01b0386169083612219565b60026003540361211f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104b1565b6002600355565b6001600160a01b03841661217c5760405162461bcd60e51b815260206004820152601b60248201527f4d503a20746f6b656e4164647265737320697320696e76616c6964000000000060448201526064016104b1565b600083116121cc5760405162461bcd60e51b815260206004820152600f60248201527f4d503a20616d6f756e742069732030000000000000000000000000000000000060448201526064016104b1565b806120215760405162461bcd60e51b815260206004820152601260248201527f4d503a206f7264657220697320656d707479000000000000000000000000000060448201526064016104b1565b6040516001600160a01b0383166024820152604481018290526122aa9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152612af7565b505050565b604080516000808252602082019092526001600160a01b0384169083906040516122d991906132ec565b60006040518083038185875af1925050503d8060008114612316576040519150601f19603f3d011682016040523d82523d6000602084013e61231b565b606091505b50509050806122aa5760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657248656c7065723a204e41544956455f5452414e534645525f60448201527f4641494c4544000000000000000000000000000000000000000000000000000060648201526084016104b1565b6007546000906001600160a01b0316156123b657506007546001600160a01b031690565b503090565b6040516001600160a01b03808516602483015283166044820152606481018290526120219085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161225e565b6000807f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316836001600160a01b0316036124e8576004546001600160a01b0316156124e1576004546001600160a01b03166370a08231612472612392565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156124b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124da91906131e6565b9050611279565b5047611279565b826001600160a01b03166370a082316124ff612392565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015b602060405180830381865afa158015612544573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256891906131e6565b9392505050565b60008181526006602052604090205460ff16156125ce5760405162461bcd60e51b815260206004820152601560248201527f4d503a20616c726561647920636f6d706c65746564000000000000000000000060448201526064016104b1565b6000908152600660205260409020805460ff19166001179055565b8015806126635750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561263d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266191906131e6565b155b6126d55760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016104b1565b6040516001600160a01b0383166024820152604481018290526122aa9084907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161225e565b600080600061272c87612bdf565b905087156127ba576127b485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f4d503a2043616c6c5769746856616c7565206661696c6564000000000000000060208201526001600160a01b038e169392508c9150612c4e565b5061283b565b61283985858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f4d503a2046756e6374696f6e43616c6c206661696c656400000000000000000060208201526001600160a01b038e169392509050612d42565b505b600080600088600081518110612853576128536132b9565b60200260200101519050600089600181518110612872576128726132b9565b6020026020010151905060008a600281518110612891576128916132b9565b6020026020010151905060008b6003815181106128b0576128b06132b9565b6020026020010151905060006128c58e612bdf565b90508781116129165760405162461bcd60e51b815260206004820152601e60248201527f4d503a2072656365697665722073686f756c642067657420617373657473000060448201526064016104b1565b60006129228983613215565b9050848110156129745760405162461bcd60e51b815260206004820152601d60248201527f4d503a207265636569766520616d6f756e74206e6f7420656e6f75676800000060448201526064016104b1565b61297e8386613287565b8110156129cd5760405162461bcd60e51b815260206004820152601560248201527f4d503a20676173466565206e6f7420656e6f756768000000000000000000000060448201526064016104b1565b6127106129da8583613308565b6129e4919061331f565b9650866129f18487613287565b6129fb9190613287565b811015612a4a5760405162461bcd60e51b815260206004820152601260248201527f4d503a20666565206e6f7420656e6f756768000000000000000000000000000060448201526064016104b1565b82612a558883613215565b612a5f9190613215565b975085881115612a8357612a738689613215565b612a7d9088613287565b96508597505b50959f949e50939c50505050505050505050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000612b4c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612d429092919063ffffffff16565b9050805160001480612b6d575080806020019051810190612b6d9190613341565b6122aa5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104b1565b6000807f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316836001600160a01b031603612c22575047611279565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401612527565b606082471015612cc65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016104b1565b600080866001600160a01b03168587604051612ce291906132ec565b60006040518083038185875af1925050503d8060008114612d1f576040519150601f19603f3d011682016040523d82523d6000602084013e612d24565b606091505b5091509150612d3587838387612d51565b925050505b949350505050565b6060612d3a8484600085612c4e565b60608315612dc0578251600003612db9576001600160a01b0385163b612db95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104b1565b5081612d3a565b612d3a8383815115612dd55781518083602001fd5b8060405162461bcd60e51b81526004016104b1919061335e565b600060208284031215612e0157600080fd5b5035919050565b80356001600160a01b0381168114612e1f57600080fd5b919050565b60008083601f840112612e3657600080fd5b50813567ffffffffffffffff811115612e4e57600080fd5b602083019150836020828501011115612e6657600080fd5b9250929050565b600080600060408486031215612e8257600080fd5b612e8b84612e08565b9250602084013567ffffffffffffffff811115612ea757600080fd5b612eb386828701612e24565b9497909650939450505050565b8015158114611e5c57600080fd5b600080600080600060808688031215612ee657600080fd5b612eef86612e08565b9450602086013593506040860135612f0681612ec0565b9250606086013567ffffffffffffffff811115612f2257600080fd5b612f2e88828901612e24565b969995985093965092949392505050565b600080600080600060a08688031215612f5757600080fd5b85359450612f6760208701612e08565b9350612f7560408701612e08565b92506060860135612f8581612ec0565b949793965091946080013592915050565b600060208284031215612fa857600080fd5b61256882612e08565b634e487b7160e01b600052604160045260246000fd5b6000806000806000806000806000806101208b8d031215612fe757600080fd5b8a359950612ff760208c01612e08565b985061300560408c01612e08565b975061301460608c0135612ec0565b60608b0135965060808b0135955061302e60a08c01612e08565b945061303c60c08c01612e08565b935067ffffffffffffffff8060e08d0135111561305857600080fd5b60e08c01358c018d601f82011261306e57600080fd5b818135111561307f5761307f612fb1565b604051813560051b603f01601f1916810183811182821017156130a4576130a4612fb1565b806040525080823582526020820190508f6020843560051b85010111156130ca57600080fd5b602083015b6020843560051b8501018110156130f05780358252602091820191016130cf565b50508095505050806101008d0135111561310957600080fd5b5061311b8c6101008d01358d01612e24565b81935080925050509295989b9194979a5092959850565b6000806040838503121561314557600080fd5b61314e83612e08565b946020939093013593505050565b8183823760009101908152919050565b60005b8381101561318757818101518382015260200161316f565b50506000910152565b600081518084526131a881602086016020860161316c565b601f01601f19169290920160200192915050565b83815282151560208201526060604082015260006131dd6060830184613190565b95945050505050565b6000602082840312156131f857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611279576112796131ff565b60006001820161323a5761323a6131ff565b5060010190565b8481526001600160a01b038416602082015260606040820152816060820152818360808301376000818301608090810191909152601f909201601f191601019392505050565b80820180821115611279576112796131ff565b600060ff821660ff81036132b0576132b06131ff565b60010192915050565b634e487b7160e01b600052603260045260246000fd5b600060ff8216806132e2576132e26131ff565b6000190192915050565b600082516132fe81846020870161316c565b9190910192915050565b8082028115828204841417611279576112796131ff565b60008261333c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561335357600080fd5b815161256881612ec0565b602081526000612568602083018461319056fea264697066735822122087b28c2658b0759abed2e8a2571b18f511c6a296c9acea8c12ee62b6349e8fb464736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000140000000000000000000000008a4aa176007196d48d39c89402d3753c39ae64c1000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
-----Decoded View---------------
Arg [0] : _id_prefix (uint256): 20
Arg [1] : _lp (address): 0x8A4AA176007196D48d39C89402d3753c39AE64c1
Arg [2] : _wNative (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [1] : 0000000000000000000000008a4aa176007196d48d39c89402d3753c39ae64c1
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode Sourcemap
13672:13712:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14126:26;;;;;;;;;;-1:-1:-1;14126:26:0;;;;-1:-1:-1;;;;;14126:26:0;;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;14126:26:0;;;;;;;;16050:114;;;;;;;;;;-1:-1:-1;16050:114:0;;;;;:::i;:::-;16112:4;16136:20;;;:14;:20;;;;;;;;;16050:114;;;;595:14:1;;588:22;570:41;;558:2;543:18;16050:114:0;430:187:1;26548:285:0;;;;;;:::i;:::-;;:::i;17489:1551::-;;;;;;:::i;:::-;;:::i;15932:110::-;;;;;;;;;;;;;:::i;14161:23::-;;;;;;;;;;;;;;;;;;;2618:25:1;;;2606:2;2591:18;14161:23:0;2472:177:1;19048:1764:0;;;;;;;;;;-1:-1:-1;19048:1764:0;;;;;:::i;:::-;;:::i;14071:46::-;;;;;;;;;;-1:-1:-1;14071:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1434:30;;;;;;;;;;-1:-1:-1;1434:30:0;;;;;;;;;;;3358:4:1;3346:17;;;3328:36;;3316:2;3301:18;1434:30:0;3186:184:1;15819:105:0;;;;;;;;;;;;;:::i;579:87::-;;;;;;;;;;-1:-1:-1;625:7:0;652:6;-1:-1:-1;;;;;652:6:0;579:87;;13934:22;;;;;;;;;;-1:-1:-1;13934:22:0;;;;-1:-1:-1;;;;;13934:22:0;;;13840:85;;;;;;;;;;;;;;;1751:250;;;;;;;;;;-1:-1:-1;1751:250:0;;;;;:::i;:::-;;:::i;15225:85::-;;;;;;;;;;-1:-1:-1;15289:13:0;15225:85;;1597:146;;;;;;;;;;-1:-1:-1;1597:146:0;;;;;:::i;:::-;;:::i;15417:97::-;;;;;;;;;;-1:-1:-1;15417:97:0;;;;;:::i;:::-;;:::i;15318:91::-;;;;;;;;;;-1:-1:-1;15318:91:0;;;;;:::i;:::-;;:::i;20956:3737::-;;;;;;;;;;-1:-1:-1;20956:3737:0;;;;;:::i;:::-;;:::i;802:238::-;;;;;;;;;;-1:-1:-1;802:238:0;;;;;:::i;:::-;;:::i;2009:255::-;;;;;;;;;;-1:-1:-1;2009:255:0;;;;;:::i;:::-;;:::i;26841:540::-;;;;;;;;;;-1:-1:-1;26841:540:0;;;;;:::i;:::-;;:::i;26548:285::-;625:7;652:6;-1:-1:-1;;;;;652:6:0;180:10;714:23;706:68;;;;-1:-1:-1;;;706:68:0;;6190:2:1;706:68:0;;;6172:21:1;;;6209:18;;;6202:30;6268:34;6248:18;;;6241:62;6320:18;;706:68:0;;;;;;;;;26664:12:::1;26678:19:::0;26701:6:::1;-1:-1:-1::0;;;;;26701:11:0::1;26720:9;26745:5;;26701:60;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26663:98;;;;26790:6;-1:-1:-1::0;;;;;26777:48:0::1;;26798:9;26809:7;26818:6;26777:48;;;;;;;;:::i;:::-;;;;;;;;26652:181;;26548:285:::0;;;:::o;17489:1551::-;2536:21;:19;:21::i;:::-;15175:7:::1;::::0;::::1;;15174:8;15166:31;;;::::0;-1:-1:-1;;;15166:31:0;;7731:2:1;15166:31:0::1;::::0;::::1;7713:21:1::0;7770:2;7750:18;;;7743:30;-1:-1:-1;;;7789:18:1;;;7782:40;7839:18;;15166:31:0::1;7529:334:1::0;15166:31:0::1;17677:40:::2;17692:9;17703:6;17711:5;;17677:14;:40::i;:::-;17747:6;-1:-1:-1::0;;;;;17734:19:0::2;:9;-1:-1:-1::0;;;;;17734:19:0::2;::::0;17730:1076:::2;;17788:9;17778:6;:19;17770:53;;;::::0;-1:-1:-1;;;17770:53:0;;8070:2:1;17770:53:0::2;::::0;::::2;8052:21:1::0;8109:2;8089:18;;;8082:30;8148:23;8128:18;;;8121:51;8189:18;;17770:53:0::2;7868:345:1::0;17770:53:0::2;15595:7:::0;;-1:-1:-1;;;;;15595:7:0;:21;17838:487:::2;;17900:7;::::0;;17893:40:::2;::::0;-1:-1:-1;;;17893:40:0;;17927:4:::2;17893:40:::0;;::::2;160:74:1::0;;;;17879:11:0::2;::::0;-1:-1:-1;;;;;17900:7:0;;::::2;::::0;17893:25:::2;::::0;133:18:1;;17893:40:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17879:54;;17963:7;;;;;;;;;-1:-1:-1::0;;;;;17963:7:0::2;-1:-1:-1::0;;;;;17952:27:0::2;;17987:9;17952:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;18039:7:0::2;::::0;;18032:40:::2;::::0;-1:-1:-1;;;18032:40:0;;18066:4:::2;18032:40:::0;;::::2;160:74:1::0;;;;18018:11:0::2;::::0;-1:-1:-1;;;;;;18039:7:0::2;::::0;-1:-1:-1;18032:25:0::2;::::0;-1:-1:-1;133:18:1;;18032:40:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18018:54:::0;-1:-1:-1;18112:6:0;18099:9:::2;18105:3:::0;18018:54;18099:9:::2;:::i;:::-;:19;18091:55;;;::::0;-1:-1:-1;;;18091:55:0;;8931:2:1;18091:55:0::2;::::0;::::2;8913:21:1::0;8970:2;8950:18;;;8943:30;9009:25;8989:18;;;8982:53;9052:18;;18091:55:0::2;8729:347:1::0;18091:55:0::2;18194:11;::::0;18172:7:::2;::::0;18165:49:::2;::::0;-1:-1:-1;;;;;18172:7:0;;::::2;::::0;18194:11:::2;18207:6:::0;18165:28:::2;:49::i;:::-;17860:370;;17730:1076;;17838:487;18289:11;::::0;18255:54:::2;::::0;-1:-1:-1;;;;;18289:11:0::2;18302:6:::0;18255:33:::2;:54::i;:::-;17730:1076;;;18346:8;18342:464;;;18371:11;-1:-1:-1::0;;;;;18385:27:0;::::2;;180:10:::0;18385:41:::2;::::0;-1:-1:-1;;;;;;18385:41:0::2;::::0;;;;;;-1:-1:-1;;;;;178:55:1;;;18385:41:0::2;::::0;::::2;160:74:1::0;133:18;;18385:41:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18371:55:::0;-1:-1:-1;;;;;;18441:30:0;::::2;;180:10:::0;18441:52:::2;::::0;-1:-1:-1;;;;;;18441:52:0::2;::::0;;;;;;-1:-1:-1;;;;;9273:55:1;;;18441:52:0::2;::::0;::::2;9255:74:1::0;9345:18;;;9338:34;;;9228:18;;18441:52:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;18508:11;18529:9;-1:-1:-1::0;;;;;18522:27:0::2;;18550:12;180:10:::0;;100:98;18550:12:::2;18522:41;::::0;-1:-1:-1;;;;;;18522:41:0::2;::::0;;;;;;-1:-1:-1;;;;;178:55:1;;;18522:41:0::2;::::0;::::2;160:74:1::0;133:18;;18522:41:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18508:55:::0;-1:-1:-1;18593:12:0::2;18599:6:::0;18593:3;:12:::2;:::i;:::-;18586:3;:19;18578:47;;;::::0;-1:-1:-1;;;18578:47:0;;9585:2:1;18578:47:0::2;::::0;::::2;9567:21:1::0;9624:2;9604:18;;;9597:30;9663:17;9643:18;;;9636:45;9698:18;;18578:47:0::2;9383:339:1::0;18342:464:0::2;18658:136;180:10:::0;18742:12:::2;:10;:12::i;:::-;-1:-1:-1::0;;;;;18658:34:0;::::2;::::0;:136;18773:6;18658:34:::2;:136::i;:::-;18818:8;:10:::0;;;:8:::2;:10;::::0;::::2;:::i;:::-;::::0;;;-1:-1:-1;;18921:8:0::2;::::0;180:10;-1:-1:-1;;;;;18844:188:0;::::2;;18944:6:::0;18965:8;:36:::2;;18989:12;:10;:12::i;:::-;18965:36;;;18984:1;18965:36;19016:5;;18844:188;;;;;;;;;:::i;:::-;;;;;;;;2580:20:::0;2352:1;2823:7;:22;2774:79;2580:20;17489:1551;;;;;:::o;15932:110::-;625:7;652:6;-1:-1:-1;;;;;652:6:0;180:10;714:23;706:68;;;;-1:-1:-1;;;706:68:0;;6190:2:1;706:68:0;;;6172:21:1;;;6209:18;;;6202:30;6268:34;6248:18;;;6241:62;6320:18;;706:68:0;5988:356:1;706:68:0;15981:7:::1;:15:::0;;-1:-1:-1;;15981:15:0::1;::::0;;16012:22:::1;180:10:::0;16021:12:::1;16012:22;::::0;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;16012:22:0::1;;;;;;;15932:110::o:0;19048:1764::-;1518:26;180:10;1597:146;:::i;1518:26::-;1510:59;;;;-1:-1:-1;;;1510:59:0;;10656:2:1;1510:59:0;;;10638:21:1;10695:2;10675:18;;;10668:30;10734:22;10714:18;;;10707:50;10774:18;;1510:59:0;10454:344:1;1510:59:0;15175:7:::1;::::0;::::1;;15174:8;15166:31;;;::::0;-1:-1:-1;;;15166:31:0;;7731:2:1;15166:31:0::1;::::0;::::1;7713:21:1::0;7770:2;7750:18;;;7743:30;-1:-1:-1;;;7789:18:1;;;7782:40;7839:18;;15166:31:0::1;7529:334:1::0;15166:31:0::1;19272:1:::2;19262:7;:11;19254:41;;;::::0;-1:-1:-1;;;19254:41:0;;11005:2:1;19254:41:0::2;::::0;::::2;10987:21:1::0;11044:2;11024:18;;;11017:30;11083:19;11063:18;;;11056:47;11120:18;;19254:41:0::2;10803:341:1::0;19254:41:0::2;-1:-1:-1::0;;;;;19314:22:0;::::2;19306:55;;;::::0;-1:-1:-1;;;19306:55:0;;11351:2:1;19306:55:0::2;::::0;::::2;11333:21:1::0;11390:2;11370:18;;;11363:30;11429:22;11409:18;;;11402:50;11469:18;;19306:55:0::2;11149:344:1::0;19306:55:0::2;19389:1;19380:6;:10;19372:42;;;::::0;-1:-1:-1;;;19372:42:0;;11700:2:1;19372:42:0::2;::::0;::::2;11682:21:1::0;11739:2;11719:18;;;11712:30;11778:21;11758:18;;;11751:49;11817:18;;19372:42:0::2;11498:343:1::0;19372:42:0::2;19430:8;19425:162;;19509:6;19481:24;19492:12;19481:10;:24::i;:::-;:34;;19455:120;;;::::0;-1:-1:-1;;;19455:120:0;;12048:2:1;19455:120:0::2;::::0;::::2;12030:21:1::0;12087:2;12067:18;;;12060:30;12126:26;12106:18;;;12099:54;12170:18;;19455:120:0::2;11846:348:1::0;19455:120:0::2;19597:23;19612:7;19597:14;:23::i;:::-;19651:6;-1:-1:-1::0;;;;;19635:22:0::2;:12;-1:-1:-1::0;;;;;19635:22:0::2;::::0;19631:1101:::2;;15595:7:::0;;-1:-1:-1;;;;;15595:7:0;:21;19674:515:::2;;19715:151;19770:12;:10;:12::i;:::-;19722:7;::::0;-1:-1:-1;;;;;19722:7:0::2;::::0;19813:4:::2;19841:6:::0;19715:32:::2;:151::i;:::-;19950:7;::::0;;19939:36:::2;::::0;-1:-1:-1;;;19939:36:0;;;;::::2;2618:25:1::0;;;19899:21:0::2;::::0;-1:-1:-1;;;;;19950:7:0;;::::2;::::0;19939:28:::2;::::0;2591:18:1;;19939:36:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;20008:21:0::2;::::0;-1:-1:-1;20091:6:0;;-1:-1:-1;20078:9:0::2;::::0;-1:-1:-1;20084:3:0;20008:21;20078:9:::2;:::i;:::-;:19;20048:125;;;::::0;-1:-1:-1;;;20048:125:0;;12401:2:1;20048:125:0::2;::::0;::::2;12383:21:1::0;;;12420:18;;;12413:30;12479:34;12459:18;;;12452:62;12531:18;;20048:125:0::2;12199:356:1::0;20048:125:0::2;19696:493;;19674:515;20203:51;20237:8;20247:6;20203:33;:51::i;:::-;19631:1101;;;20276:8;20272:460;;;20315:40;::::0;-1:-1:-1;;;20315:40:0;;-1:-1:-1;;;;;178:55:1;;;20315:40:0::2;::::0;::::2;160:74:1::0;20301:11:0::2;::::0;20315:30;;::::2;::::0;::::2;::::0;133:18:1;;20315:40:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20370:51;::::0;-1:-1:-1;;;20370:51:0;;-1:-1:-1;;;;;9273:55:1;;;20370:51:0::2;::::0;::::2;9255:74:1::0;9345:18;;;9338:34;;;20301:54:0;;-1:-1:-1;20370:33:0;;::::2;::::0;::::2;::::0;9228:18:1;;20370:51:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;20450:40:0::2;::::0;-1:-1:-1;;;20450:40:0;;-1:-1:-1;;;;;178:55:1;;;20450:40:0::2;::::0;::::2;160:74:1::0;20436:11:0::2;::::0;-1:-1:-1;20450:30:0;::::2;::::0;-1:-1:-1;20450:30:0::2;::::0;133:18:1;;20450:40:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20436:54:::0;-1:-1:-1;20520:12:0::2;20526:6:::0;20520:3;:12:::2;:::i;:::-;20513:3;:19;20505:47;;;::::0;-1:-1:-1;;;20505:47:0;;12892:2:1;20505:47:0::2;::::0;::::2;12874:21:1::0;12931:2;12911:18;;;12904:30;12970:17;12950:18;;;12943:45;13005:18;;20505:47:0::2;12690:339:1::0;20505:47:0::2;20286:278;;20272:460;;;20585:135;20641:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;20585:37:0;::::2;::::0;20672:8;20699:6;20585:37:::2;:135::i;:::-;20781:8;-1:-1:-1::0;;;;;20747:57:0::2;20772:7;20758:12;-1:-1:-1::0;;;;;20747:57:0::2;;20791:6;20799:1;20802::::0;20747:57:::2;;;;;;;13252:25:1::0;;;13308:2;13293:18;;13286:34;;;;13351:2;13336:18;;13329:34;13240:2;13225:18;;13034:335;20747:57:0::2;;;;;;;;19048:1764:::0;;;;;:::o;15819:105::-;625:7;652:6;-1:-1:-1;;;;;652:6:0;180:10;714:23;706:68;;;;-1:-1:-1;;;706:68:0;;6190:2:1;706:68:0;;;6172:21:1;;;6209:18;;;6202:30;6268:34;6248:18;;;6241:62;6320:18;;706:68:0;5988:356:1;706:68:0;15866:7:::1;:14:::0;;-1:-1:-1;;15866:14:0::1;15876:4;15866:14;::::0;;15896:20:::1;15903:12;180:10:::0;;100:98;1751:250;625:7;652:6;-1:-1:-1;;;;;652:6:0;180:10;714:23;706:68;;;;-1:-1:-1;;;706:68:0;;6190:2:1;706:68:0;;;6172:21:1;;;6209:18;;;6202:30;6268:34;6248:18;;;6241:62;6320:18;;706:68:0;5988:356:1;706:68:0;-1:-1:-1;;;;;1827:24:0;::::1;;::::0;;;:11:::1;:24;::::0;;;;;::::1;;:33;;::::0;;1823:127:::1;;-1:-1:-1::0;;;;;1877:24:0;::::1;;::::0;;;1904:4:::1;1877:24;::::0;;;;;;:31;;-1:-1:-1;;1877:31:0::1;::::0;;::::1;::::0;;1923:13:::1;:15:::0;;1877:31:::1;1923:15;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;1823:127;1965:28;::::0;-1:-1:-1;;;;;178:55:1;;160:74;;1965:28:0::1;::::0;148:2:1;133:18;1965:28:0::1;;;;;;;;1751:250:::0;:::o;1597:146::-;1661:4;652:6;;-1:-1:-1;;;;;1685:22:0;;;652:6;;1685:22;;:50;;-1:-1:-1;;;;;;1711:24:0;;;;;;:11;:24;;;;;;;;1685:50;1678:57;1597:146;-1:-1:-1;;1597:146:0:o;15417:97::-;625:7;652:6;-1:-1:-1;;;;;652:6:0;180:10;714:23;706:68;;;;-1:-1:-1;;;706:68:0;;6190:2:1;706:68:0;;;6172:21:1;;;6209:18;;;6202:30;6268:34;6248:18;;;6241:62;6320:18;;706:68:0;5988:356:1;706:68:0;15488:7:::1;:18:::0;;-1:-1:-1;;15488:18:0::1;-1:-1:-1::0;;;;;15488:18:0;;;::::1;::::0;;;::::1;::::0;;15417:97::o;15318:91::-;625:7;652:6;-1:-1:-1;;;;;652:6:0;180:10;714:23;706:68;;;;-1:-1:-1;;;706:68:0;;6190:2:1;706:68:0;;;6172:21:1;;;6209:18;;;6202:30;6268:34;6248:18;;;6241:62;6320:18;;706:68:0;5988:356:1;706:68:0;15384:11:::1;:17:::0;;-1:-1:-1;;15384:17:0::1;-1:-1:-1::0;;;;;15384:17:0;;;::::1;::::0;;;::::1;::::0;;15318:91::o;20956:3737::-;1518:26;180:10;1597:146;:::i;1518:26::-;1510:59;;;;-1:-1:-1;;;1510:59:0;;10656:2:1;1510:59:0;;;10638:21:1;10695:2;10675:18;;;10668:30;10734:22;10714:18;;;10707:50;10774:18;;1510:59:0;10454:344:1;1510:59:0;15175:7:::1;::::0;::::1;;15174:8;15166:31;;;::::0;-1:-1:-1;;;15166:31:0;;7731:2:1;15166:31:0::1;::::0;::::1;7713:21:1::0;7770:2;7750:18;;;7743:30;-1:-1:-1;;;7789:18:1;;;7782:40;7839:18;;15166:31:0::1;7529:334:1::0;15166:31:0::1;21302:1:::2;21292:7;:11;21284:41;;;::::0;-1:-1:-1;;;21284:41:0;;11005:2:1;21284:41:0::2;::::0;::::2;10987:21:1::0;11044:2;11024:18;;;11017:30;11083:19;11063:18;;;11056:47;11120:18;;21284:41:0::2;10803:341:1::0;21284:41:0::2;21344:15:::0;21336:42:::2;;;::::0;-1:-1:-1;;;21336:42:0;;13756:2:1;21336:42:0::2;::::0;::::2;13738:21:1::0;13795:2;13775:18;;;13768:30;13834:16;13814:18;;;13807:44;13868:18;;21336:42:0::2;13554:338:1::0;21336:42:0::2;21397:4;:11;21412:1;21397:16;21389:46;;;::::0;-1:-1:-1;;;21389:46:0;;14099:2:1;21389:46:0::2;::::0;::::2;14081:21:1::0;14138:2;14118:18;;;14111:30;14177:19;14157:18;;;14150:47;14214:18;;21389:46:0::2;13897:341:1::0;21389:46:0::2;21463:1;21454:6;:10;21446:42;;;::::0;-1:-1:-1;;;21446:42:0;;11700:2:1;21446:42:0::2;::::0;::::2;11682:21:1::0;11739:2;11719:18;;;11712:30;11778:21;11758:18;;;11751:49;11817:18;;21446:42:0::2;11498:343:1::0;21446:42:0::2;21517:1;21507:4;21512:1;21507:7;;;;;;;;:::i;:::-;;;;;;;:11;21499:46;;;::::0;-1:-1:-1;;;21499:46:0;;14634:2:1;21499:46:0::2;::::0;::::2;14616:21:1::0;14673:2;14653:18;;;14646:30;14712:24;14692:18;;;14685:52;14754:18;;21499:46:0::2;14432:346:1::0;21499:46:0::2;21574:1;21564:4;21569:1;21564:7;;;;;;;;:::i;:::-;;;;;;;:11;21556:49;;;::::0;-1:-1:-1;;;21556:49:0;;14985:2:1;21556:49:0::2;::::0;::::2;14967:21:1::0;15024:2;15004:18;;;14997:30;15063:27;15043:18;;;15036:55;15108:18;;21556:49:0::2;14783:349:1::0;21556:49:0::2;21621:8;21616:159;;21697:6;21672:21;21683:9;21672:10;:21::i;:::-;:31;;21646:117;;;::::0;-1:-1:-1;;;21646:117:0;;12048:2:1;21646:117:0::2;::::0;::::2;12030:21:1::0;12087:2;12067:18;;;12060:30;12126:26;12106:18;;;12099:54;12170:18;;21646:117:0::2;11846:348:1::0;21646:117:0::2;-1:-1:-1::0;;;;;21793:22:0;::::2;21785:56;;;::::0;-1:-1:-1;;;21785:56:0;;15339:2:1;21785:56:0::2;::::0;::::2;15321:21:1::0;15378:2;15358:18;;;15351:30;15417:23;15397:18;;;15390:51;15458:18;;21785:56:0::2;15137:345:1::0;21785:56:0::2;-1:-1:-1::0;;;;;21874:23:0;::::2;21892:4;21874:23;::::0;::::2;::::0;:47:::2;;-1:-1:-1::0;;;;;;21901:20:0;::::2;::::0;::::2;21874:47;21852:115;;;::::0;-1:-1:-1;;;21852:115:0;;15689:2:1;21852:115:0::2;::::0;::::2;15671:21:1::0;15728:2;15708:18;;;15701:30;15767:20;15747:18;;;15740:48;15805:18;;21852:115:0::2;15487:342:1::0;21852:115:0::2;21978:23;21993:7;21978:14;:23::i;:::-;22012:20;22049:6;-1:-1:-1::0;;;;;22036:19:0::2;:9;-1:-1:-1::0;;;;;22036:19:0::2;;22012:44;;22071:15;22067:1507;;;15595:7:::0;;-1:-1:-1;;;;;15595:7:0;:21;22103:753:::2;;22144:151;22199:12;:10;:12::i;:::-;22151:7;::::0;-1:-1:-1;;;;;22151:7:0::2;::::0;22242:4:::2;22270:6:::0;22144:32:::2;:151::i;:::-;22379:7;::::0;;22368:36:::2;::::0;-1:-1:-1;;;22368:36:0;;;;::::2;2618:25:1::0;;;22328:21:0::2;::::0;-1:-1:-1;;;;;22379:7:0;;::::2;::::0;22368:28:::2;::::0;2591:18:1;;22368:36:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;22437:21:0::2;::::0;-1:-1:-1;22520:6:0;;-1:-1:-1;22507:9:0::2;::::0;-1:-1:-1;22513:3:0;22437:21;22507:9:::2;:::i;:::-;:19;22477:125;;;::::0;-1:-1:-1;;;22477:125:0;;12401:2:1;22477:125:0::2;::::0;::::2;12383:21:1::0;;;12420:18;;;12413:30;12479:34;12459:18;;;12452:62;12531:18;;22477:125:0::2;12199:356:1::0;22477:125:0::2;22125:493;;22067:1507;;22103:753;22763:6;22738:21;:31;;22708:132;;;::::0;-1:-1:-1;;;22708:132:0;;16036:2:1;22708:132:0::2;::::0;::::2;16018:21:1::0;16075:2;16055:18;;;16048:30;16114:29;16094:18;;;16087:57;16161:18;;22708:132:0::2;15834:351:1::0;22708:132:0::2;22067:1507;;;22892:8;22888:511;;;22935:42;::::0;-1:-1:-1;;;22935:42:0;;22971:4:::2;22935:42;::::0;::::2;160:74:1::0;22921:11:0::2;::::0;-1:-1:-1;;;;;22935:27:0;::::2;::::0;::::2;::::0;133:18:1;;22935:42:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22996:53;::::0;-1:-1:-1;;;22996:53:0;;23035:4:::2;22996:53;::::0;::::2;9255:74:1::0;9345:18;;;9338:34;;;22921:56:0;;-1:-1:-1;;;;;;22996:30:0;::::2;::::0;::::2;::::0;9228:18:1;;22996:53:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;23082:42:0::2;::::0;-1:-1:-1;;;23082:42:0;;23118:4:::2;23082:42;::::0;::::2;160:74:1::0;23068:11:0::2;::::0;-1:-1:-1;;;;;;23082:27:0;::::2;::::0;-1:-1:-1;23082:27:0::2;::::0;133:18:1;;23082:42:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23068:56:::0;-1:-1:-1;23158:12:0::2;23164:6:::0;23158:3;:12:::2;:::i;:::-;23151:3;:19;23143:47;;;::::0;-1:-1:-1;;;23143:47:0;;12892:2:1;23143:47:0::2;::::0;::::2;12874:21:1::0;12931:2;12911:18;;;12904:30;12970:17;12950:18;;;12943:45;13005:18;;23143:47:0::2;12690:339:1::0;23143:47:0::2;22902:304;;22888:511;;;23288:11;::::0;23231:152:::2;::::0;-1:-1:-1;;;;;23231:34:0;;::::2;::::0;23288:11:::2;23330:4;23358:6:::0;23231:34:::2;:152::i;:::-;23417:50;::::0;-1:-1:-1;;;23417:50:0;;23453:4:::2;23417:50;::::0;::::2;16425:34:1::0;-1:-1:-1;;;;;16495:15:1;;;16475:18;;;16468:43;23470:6:0;;23417:27;;::::2;::::0;::::2;::::0;16337:18:1;;23417:50:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;23413:150;;;23535:11;::::0;23497:50:::2;::::0;-1:-1:-1;;;;;23497:29:0;::::2;::::0;23527:6;;23497:29:::2;:50::i;:::-;23587:15;23604:18:::0;23626:156:::2;23657:6;23678:15;:28;;23705:1;23678:28;;;23696:6;23678:28;23721:12;23748:4;23767;;23626:16;:156::i;:::-;23586:196:::0;;-1:-1:-1;23586:196:0;-1:-1:-1;;;;;;23797:25:0;::::2;23817:4;23797:25;23793:265;;23859:6;-1:-1:-1::0;;;;;23843:22:0::2;:12;-1:-1:-1::0;;;;;23843:22:0::2;::::0;23839:208:::2;;23886:52;23920:8;23930:7;23886:33;:52::i;:::-;23839:208;;;23979:52;-1:-1:-1::0;;;;;23979:33:0;::::2;24013:8:::0;24023:7;23979:33:::2;:52::i;:::-;24068:16;24100:4;24105:1;24100:7;;;;;;;;:::i;:::-;;;;;;;24087:10;:20;;;;:::i;:::-;24068:39:::0;-1:-1:-1;24122:12:0;;24118:388:::2;;24171:6;-1:-1:-1::0;;;;;24155:22:0::2;:12;-1:-1:-1::0;;;;;24155:22:0::2;::::0;24151:344:::2;;15595:7:::0;;-1:-1:-1;;;;;15595:7:0;:21;24198:185:::2;;24254:7;::::0;;24243:46:::2;::::0;;;;;;;-1:-1:-1;;;;;24254:7:0;;::::2;::::0;24243:27:::2;::::0;24278:8;;24243:46;;::::2;::::0;24254:7:::2;::::0;24243:46;;;;;;24278:8;24254:7;24243:46;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;24341:11:0::2;::::0;24319:7:::2;::::0;24312:51:::2;::::0;-1:-1:-1;;;;;;24319:7:0;;::::2;::::0;-1:-1:-1;24341:11:0::2;::::0;-1:-1:-1;24354:8:0;24312:28:::2;:51::i;:::-;24151:344;;;24457:11;::::0;24423:56:::2;::::0;-1:-1:-1;;;;;24423:33:0;;::::2;::::0;24457:11:::2;24470:8:::0;24423:33:::2;:56::i;:::-;24597:8;-1:-1:-1::0;;;;;24523:162:0::2;24575:7;24548:12;-1:-1:-1::0;;;;;24523:162:0::2;;24620:7;24642:10;24667:4;24672:1;24667:7;;;;;;;;:::i;:::-;;;;;;;24523:162;;;;;;;13252:25:1::0;;;13308:2;13293:18;;13286:34;;;;13351:2;13336:18;;13329:34;13240:2;13225:18;;13034:335;24523:162:0::2;;;;;;;;21273:3420;;;;20956:3737:::0;;;;;;;;;;:::o;802:238::-;625:7;652:6;-1:-1:-1;;;;;652:6:0;180:10;714:23;706:68;;;;-1:-1:-1;;;706:68:0;;6190:2:1;706:68:0;;;6172:21:1;;;6209:18;;;6202:30;6268:34;6248:18;;;6241:62;6320:18;;706:68:0;5988:356:1;706:68:0;-1:-1:-1;;;;;905:22:0;::::1;883:110;;;::::0;-1:-1:-1;;;883:110:0;;17048:2:1;883:110:0::1;::::0;::::1;17030:21:1::0;17087:2;17067:18;;;17060:30;17126:34;17106:18;;;17099:62;17197:8;17177:18;;;17170:36;17223:19;;883:110:0::1;16846:402:1::0;883:110:0::1;1004:28;1023:8;1004:18;:28::i;:::-;802:238:::0;:::o;2009:255::-;625:7;652:6;-1:-1:-1;;;;;652:6:0;180:10;714:23;706:68;;;;-1:-1:-1;;;706:68:0;;6190:2:1;706:68:0;;;6172:21:1;;;6209:18;;;6202:30;6268:34;6248:18;;;6241:62;6320:18;;706:68:0;5988:356:1;706:68:0;-1:-1:-1;;;;;2088:24:0;::::1;;::::0;;;:11:::1;:24;::::0;;;;;;;;::::1;;:32;;::::0;;2084:127:::1;;-1:-1:-1::0;;;;;2137:24:0;::::1;2164:5;2137:24:::0;;;:11:::1;:24;::::0;;;;:32;;-1:-1:-1;;2137:32:0::1;::::0;;2184:13:::1;:15:::0;;2137:32:::1;2184:15;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2084:127;2226:30;::::0;-1:-1:-1;;;;;178:55:1;;160:74;;2226:30:0::1;::::0;148:2:1;133:18;2226:30:0::1;14:226:1::0;26841:540:0;1518:26;180:10;1597:146;:::i;1518:26::-;1510:59;;;;-1:-1:-1;;;1510:59:0;;10656:2:1;1510:59:0;;;10638:21:1;10695:2;10675:18;;;10668:30;10734:22;10714:18;;;10707:50;10774:18;;1510:59:0;10454:344:1;1510:59:0;26966:6:::1;-1:-1:-1::0;;;;;26957:15:0::1;:5;-1:-1:-1::0;;;;;26957:15:0::1;::::0;26953:421:::1;;27007:21;26989:15;27057:16:::0;;::::1;:35;;27085:7;27057:35;;;27076:6;27057:35;27043:49;;27107:47;27141:7;625::::0;652:6;-1:-1:-1;;;;;652:6:0;;579:87;27141:7:::1;27150:3;27107:33;:47::i;:::-;26974:192;;26841:540:::0;;:::o;26953:421::-:1;27205:38;::::0;-1:-1:-1;;;27205:38:0;;27237:4:::1;27205:38;::::0;::::1;160:74:1::0;27187:15:0::1;::::0;-1:-1:-1;;;;;27205:23:0;::::1;::::0;::::1;::::0;133:18:1;;27205:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27187:56;;27258:11;27282:6;27272:7;:16;:35;;27300:7;27272:35;;;27291:6;27272:35;27258:49;;27322:40;27349:7;625::::0;652:6;-1:-1:-1;;;;;652:6:0;;579:87;27349:7:::1;-1:-1:-1::0;;;;;27322:26:0;::::1;::::0;27358:3;27322:26:::1;:40::i;2616:150::-:0;2396:1;2674:7;;:19;2666:63;;;;-1:-1:-1;;;2666:63:0;;17638:2:1;2666:63:0;;;17620:21:1;17677:2;17657:18;;;17650:30;17716:33;17696:18;;;17689:61;17767:18;;2666:63:0;17436:355:1;2666:63:0;2396:1;2740:7;:18;2616:150::o;17163:318::-;-1:-1:-1;;;;;17311:23:0;;17303:63;;;;-1:-1:-1;;;17303:63:0;;17998:2:1;17303:63:0;;;17980:21:1;18037:2;18017:18;;;18010:30;18076:29;18056:18;;;18049:57;18123:18;;17303:63:0;17796:351:1;17303:63:0;17394:1;17385:6;:10;17377:38;;;;-1:-1:-1;;;17377:38:0;;18354:2:1;17377:38:0;;;18336:21:1;18393:2;18373:18;;;18366:30;18432:17;18412:18;;;18405:45;18467:18;;17377:38:0;18152:339:1;17377:38:0;17434:16;17426:47;;;;-1:-1:-1;;;17426:47:0;;18698:2:1;17426:47:0;;;18680:21:1;18737:2;18717:18;;;18710:30;18776:20;18756:18;;;18749:48;18814:18;;17426:47:0;18496:342:1;9411:214:0;9548:58;;-1:-1:-1;;;;;9273:55:1;;9548:58:0;;;9255:74:1;9345:18;;;9338:34;;;9494:123:0;;9528:5;;9571:23;;9228:18:1;;9548:58:0;;;;-1:-1:-1;;9548:58:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9548:58:0;;;;;;;;;;9494:19;:123::i;:::-;9411:214;;;:::o;13308:206::-;13424:12;;;13384;13424;;;;;;;;;-1:-1:-1;;;;;13402:7:0;;;13417:5;;13402:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13383:54;;;13456:7;13448:58;;;;-1:-1:-1;;;13448:58:0;;19337:2:1;13448:58:0;;;19319:21:1;19376:2;19356:18;;;19349:30;19415:34;19395:18;;;19388:62;19486:8;19466:18;;;19459:36;19512:19;;13448:58:0;19135:402:1;15632:179:0;15701:11;;15677:7;;-1:-1:-1;;;;;15701:11:0;:25;15697:76;;-1:-1:-1;15750:11:0;;-1:-1:-1;;;;;15750:11:0;;15632:179::o;15697:76::-;-1:-1:-1;15798:4:0;;15632:179::o;9633:285::-;9831:68;;-1:-1:-1;;;;;19823:15:1;;;9831:68:0;;;19805:34:1;19875:15;;19855:18;;;19848:43;19907:18;;;19900:34;;;9777:133:0;;9811:5;;9854:27;;19717:18:1;;9831:68:0;19542:398:1;16339:467:0;16404:7;16424:16;16471:6;-1:-1:-1;;;;;16455:22:0;:12;-1:-1:-1;;;;;16455:22:0;;16451:322;;15595:7;;-1:-1:-1;;;;;15595:7:0;:21;16494:180;;16553:7;;-1:-1:-1;;;;;16553:7:0;16546:25;16572:12;:10;:12::i;:::-;16546:39;;-1:-1:-1;;;;;;16546:39:0;;;;;;;-1:-1:-1;;;;;178:55:1;;;16546:39:0;;;160:74:1;133:18;;16546:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16535:50;;16451:322;;16494:180;-1:-1:-1;16637:21:0;16451:322;;;16724:12;-1:-1:-1;;;;;16717:30:0;;16748:12;:10;:12::i;:::-;16717:44;;-1:-1:-1;;;;;;16717:44:0;;;;;;;-1:-1:-1;;;;;178:55:1;;;16717:44:0;;;160:74:1;133:18;;16717:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16706:55;16790:8;-1:-1:-1;;;16339:467:0:o;16172:159::-;16239:20;;;;:14;:20;;;;;;;;16238:21;16230:55;;;;-1:-1:-1;;;16230:55:0;;20147:2:1;16230:55:0;;;20129:21:1;20186:2;20166:18;;;20159:30;20225:23;20205:18;;;20198:51;20266:18;;16230:55:0;19945:345:1;16230:55:0;16296:20;;;;:14;:20;;;;;:27;;-1:-1:-1;;16296:27:0;16319:4;16296:27;;;16172:159::o;9926:433::-;10070:10;;;10069:62;;-1:-1:-1;10086:39:0;;-1:-1:-1;;;10086:39:0;;10110:4;10086:39;;;16425:34:1;-1:-1:-1;;;;;16495:15:1;;;16475:18;;;16468:43;10086:15:0;;;;;16337:18:1;;10086:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;10069:62;10047:166;;;;-1:-1:-1;;;10047:166:0;;20497:2:1;10047:166:0;;;20479:21:1;20536:2;20516:18;;;20509:30;20575:34;20555:18;;;20548:62;20646:24;20626:18;;;20619:52;20688:19;;10047:166:0;20295:418:1;10047:166:0;10278:62;;-1:-1:-1;;;;;9273:55:1;;10278:62:0;;;9255:74:1;9345:18;;;9338:34;;;10224:127:0;;10258:5;;10301:22;;9228:18:1;;10278:62:0;9081:297:1;24837:1703:0;25047:7;25056;25076:19;25098:28;25113:12;25098:14;:28::i;:::-;25076:50;-1:-1:-1;25143:20:0;;25139:296;;25180:152;25233:4;;25180:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25180:152:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25180:34:0;;;:152;-1:-1:-1;25256:16:0;;-1:-1:-1;25180:34:0;:152::i;:::-;;25139:296;;;25365:58;25391:4;;25365:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25365:58:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25365:25:0;;;:58;-1:-1:-1;25365:58:0;-1:-1:-1;25365:25:0;:58::i;:::-;;25139:296;25445:12;25472:18;25520:20;25543:4;25548:1;25543:7;;;;;;;;:::i;:::-;;;;;;;25520:30;;25565:17;25585:4;25590:1;25585:7;;;;;;;;:::i;:::-;;;;;;;25565:27;;25607:15;25625:4;25630:1;25625:7;;;;;;;;:::i;:::-;;;;;;;25607:25;;25647:14;25664:4;25669:1;25664:7;;;;;;;;:::i;:::-;;;;;;;25647:24;;25686:19;25708:28;25723:12;25708:14;:28::i;:::-;25686:50;;25791:11;25777;:25;25751:117;;;;-1:-1:-1;;;25751:117:0;;20920:2:1;25751:117:0;;;20902:21:1;20959:2;20939:18;;;20932:30;20998:32;20978:18;;;20971:60;21048:18;;25751:117:0;20718:354:1;25751:117:0;25883:17;25903:25;25917:11;25903;:25;:::i;:::-;25883:45;;25964:9;25951;:22;;25943:64;;;;-1:-1:-1;;;25943:64:0;;21279:2:1;25943:64:0;;;21261:21:1;21318:2;21298:18;;;21291:30;21357:31;21337:18;;;21330:59;21406:18;;25943:64:0;21077:353:1;25943:64:0;26043:18;26055:6;26043:9;:18;:::i;:::-;26030:9;:31;;26022:65;;;;-1:-1:-1;;;26022:65:0;;21637:2:1;26022:65:0;;;21619:21:1;21676:2;21656:18;;;21649:30;21715:23;21695:18;;;21688:51;21756:18;;26022:65:0;21435:345:1;26022:65:0;26141:5;26118:19;26130:7;26118:9;:19;:::i;:::-;26117:29;;;;:::i;:::-;26104:42;-1:-1:-1;26104:42:0;26202:18;26214:6;26202:9;:18;:::i;:::-;:31;;;;:::i;:::-;26189:9;:44;;26163:124;;;;-1:-1:-1;;;26163:124:0;;22439:2:1;26163:124:0;;;22421:21:1;22478:2;22458:18;;;22451:30;22517:20;22497:18;;;22490:48;22555:18;;26163:124:0;22237:342:1;26163:124:0;26334:6;26309:22;26321:10;26309:9;:22;:::i;:::-;:31;;;;:::i;:::-;26302:38;;26366:12;26359:4;:19;26355:131;;;26413:19;26420:12;26413:4;:19;:::i;:::-;26399:33;;;;:::i;:::-;;;26458:12;26451:19;;26355:131;-1:-1:-1;26515:4:0;;26521:10;;-1:-1:-1;24837:1703:0;;-1:-1:-1;;;;;;;;;;;;;24837:1703:0:o;1048:191::-;1122:16;1141:6;;-1:-1:-1;;;;;1158:17:0;;;-1:-1:-1;;1158:17:0;;;;;;1191:40;;1141:6;;;;;;;1191:40;;1122:16;1191:40;1111:128;1048:191;:::o;12519:380::-;12600:23;12626:106;12668:4;12626:106;;;;;;;;;;;;;;;;;12634:5;-1:-1:-1;;;;;12626:27:0;;;:106;;;;;:::i;:::-;12600:132;;12765:10;:17;12786:1;12765:22;:56;;;;12802:10;12791:30;;;;;;;;;;;;:::i;:::-;12743:148;;;;-1:-1:-1;;;12743:148:0;;23036:2:1;12743:148:0;;;23018:21:1;23075:2;23055:18;;;23048:30;23114:34;23094:18;;;23087:62;23185:12;23165:18;;;23158:40;23215:19;;12743:148:0;22834:406:1;16814:341:0;16899:7;16919:16;16966:6;-1:-1:-1;;;;;16950:22:0;:12;-1:-1:-1;;;;;16950:22:0;;16946:176;;-1:-1:-1;17000:21:0;16946:176;;;17065:45;;-1:-1:-1;;;17065:45:0;;17104:4;17065:45;;;160:74:1;-1:-1:-1;;;;;17065:30:0;;;;;133:18:1;;17065:45:0;14:226:1;5574:612:0;5744:12;5816:5;5791:21;:30;;5769:118;;;;-1:-1:-1;;;5769:118:0;;23447:2:1;5769:118:0;;;23429:21:1;23486:2;23466:18;;;23459:30;23525:34;23505:18;;;23498:62;23596:8;23576:18;;;23569:36;23622:19;;5769:118:0;23245:402:1;5769:118:0;5899:12;5913:23;5940:6;-1:-1:-1;;;;;5940:11:0;5959:5;5980:4;5940:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5898:97;;;;6026:152;6071:6;6096:7;6122:10;6151:12;6026:26;:152::i;:::-;6006:172;;;;5574:612;;;;;;;:::o;4973:229::-;5110:12;5142:52;5164:6;5172:4;5178:1;5181:12;5142:21;:52::i;7690:644::-;7875:12;7904:7;7900:427;;;7932:10;:17;7953:1;7932:22;7928:290;;-1:-1:-1;;;;;4219:19:0;;;8142:60;;;;-1:-1:-1;;;8142:60:0;;23854:2:1;8142:60:0;;;23836:21:1;23893:2;23873:18;;;23866:30;23932:31;23912:18;;;23905:59;23981:18;;8142:60:0;23652:353:1;8142:60:0;-1:-1:-1;8239:10:0;8232:17;;7900:427;8282:33;8290:10;8302:12;8841:17;;:21;8837:388;;9073:10;9067:17;9130:15;9117:10;9113:2;9109:19;9102:44;8837:388;9200:12;9193:20;;-1:-1:-1;;;9193:20:0;;;;;;;;:::i;245:180:1:-;304:6;357:2;345:9;336:7;332:23;328:32;325:52;;;373:1;370;363:12;325:52;-1:-1:-1;396:23:1;;245:180;-1:-1:-1;245:180:1:o;622:196::-;690:20;;-1:-1:-1;;;;;739:54:1;;729:65;;719:93;;808:1;805;798:12;719:93;622:196;;;:::o;823:347::-;874:8;884:6;938:3;931:4;923:6;919:17;915:27;905:55;;956:1;953;946:12;905:55;-1:-1:-1;979:20:1;;1022:18;1011:30;;1008:50;;;1054:1;1051;1044:12;1008:50;1091:4;1083:6;1079:17;1067:29;;1143:3;1136:4;1127:6;1119;1115:19;1111:30;1108:39;1105:59;;;1160:1;1157;1150:12;1105:59;823:347;;;;;:::o;1175:483::-;1254:6;1262;1270;1323:2;1311:9;1302:7;1298:23;1294:32;1291:52;;;1339:1;1336;1329:12;1291:52;1362:29;1381:9;1362:29;:::i;:::-;1352:39;;1442:2;1431:9;1427:18;1414:32;1469:18;1461:6;1458:30;1455:50;;;1501:1;1498;1491:12;1455:50;1540:58;1590:7;1581:6;1570:9;1566:22;1540:58;:::i;:::-;1175:483;;1617:8;;-1:-1:-1;1514:84:1;;-1:-1:-1;;;;1175:483:1:o;1663:118::-;1749:5;1742:13;1735:21;1728:5;1725:32;1715:60;;1771:1;1768;1761:12;1786:681;1880:6;1888;1896;1904;1912;1965:3;1953:9;1944:7;1940:23;1936:33;1933:53;;;1982:1;1979;1972:12;1933:53;2005:29;2024:9;2005:29;:::i;:::-;1995:39;;2081:2;2070:9;2066:18;2053:32;2043:42;;2135:2;2124:9;2120:18;2107:32;2148:28;2170:5;2148:28;:::i;:::-;2195:5;-1:-1:-1;2251:2:1;2236:18;;2223:32;2278:18;2267:30;;2264:50;;;2310:1;2307;2300:12;2264:50;2349:58;2399:7;2390:6;2379:9;2375:22;2349:58;:::i;:::-;1786:681;;;;-1:-1:-1;1786:681:1;;-1:-1:-1;2426:8:1;;2323:84;1786:681;-1:-1:-1;;;1786:681:1:o;2654:527::-;2746:6;2754;2762;2770;2778;2831:3;2819:9;2810:7;2806:23;2802:33;2799:53;;;2848:1;2845;2838:12;2799:53;2884:9;2871:23;2861:33;;2913:38;2947:2;2936:9;2932:18;2913:38;:::i;:::-;2903:48;;2970:38;3004:2;2993:9;2989:18;2970:38;:::i;:::-;2960:48;;3058:2;3047:9;3043:18;3030:32;3071:28;3093:5;3071:28;:::i;:::-;2654:527;;;;-1:-1:-1;2654:527:1;;3170:3;3155:19;3142:33;;2654:527;-1:-1:-1;;2654:527:1:o;3375:186::-;3434:6;3487:2;3475:9;3466:7;3462:23;3458:32;3455:52;;;3503:1;3500;3493:12;3455:52;3526:29;3545:9;3526:29;:::i;3566:184::-;-1:-1:-1;;;3615:1:1;3608:88;3715:4;3712:1;3705:15;3739:4;3736:1;3729:15;3755:1969;3919:6;3927;3935;3943;3951;3959;3967;3975;3983;3991;4044:3;4032:9;4023:7;4019:23;4015:33;4012:53;;;4061:1;4058;4051:12;4012:53;4097:9;4084:23;4074:33;;4126:38;4160:2;4149:9;4145:18;4126:38;:::i;:::-;4116:48;;4183:38;4217:2;4206:9;4202:18;4183:38;:::i;:::-;4173:48;;4230:55;4280:2;4269:9;4265:18;4252:32;4230:55;:::i;:::-;4332:2;4321:9;4317:18;4304:32;4294:42;;4383:3;4372:9;4368:19;4355:33;4345:43;;4407:39;4441:3;4430:9;4426:19;4407:39;:::i;:::-;4397:49;;4465:39;4499:3;4488:9;4484:19;4465:39;:::i;:::-;4455:49;;4523:18;4591:2;4584:3;4573:9;4569:19;4556:33;4553:41;4550:61;;;4607:1;4604;4597:12;4550:61;4673:3;4662:9;4658:19;4645:33;4634:9;4630:49;4717:7;4710:4;4706:2;4702:13;4698:27;4688:55;;4739:1;4736;4729:12;4688:55;4776:2;4771;4758:16;4755:24;4752:50;;;4782:18;;:::i;:::-;4831:2;4825:9;4888:16;;4885:1;4881:24;4907:2;4877:33;-1:-1:-1;;4873:47:1;4861:60;;4936:18;;;4956:22;;;4933:46;4930:72;;;4982:18;;:::i;:::-;5022:10;5018:2;5011:22;;5053:6;5096:2;5083:16;5075:6;5068:32;5128:2;5120:6;5116:15;5109:22;;5190:7;5185:2;5178;5165:16;5162:1;5158:24;5154:2;5150:33;5146:42;5143:55;5140:75;;;5211:1;5208;5201:12;5140:75;5243:2;5239;5235:11;5255:194;5318:2;5311;5298:16;5295:1;5291:24;5287:2;5283:33;5279:42;5274:3;5271:51;5255:194;;;5389:17;;5377:30;;5436:2;5427:12;;;;5340;5255:194;;;5259:3;;5468:6;5458:16;;;;5524:2;5517:3;5506:9;5502:19;5489:33;5486:41;5483:61;;;5540:1;5537;5530:12;5483:61;;5579:85;5656:7;5648:3;5637:9;5633:19;5620:33;5609:9;5605:49;5579:85;:::i;:::-;5683:8;5673:18;;5710:8;5700:18;;;;3755:1969;;;;;;;;;;;;;:::o;5729:254::-;5797:6;5805;5858:2;5846:9;5837:7;5833:23;5829:32;5826:52;;;5874:1;5871;5864:12;5826:52;5897:29;5916:9;5897:29;:::i;:::-;5887:39;5973:2;5958:18;;;;5945:32;;-1:-1:-1;;;5729:254:1:o;6349:271::-;6532:6;6524;6519:3;6506:33;6488:3;6558:16;;6583:13;;;6558:16;6349:271;-1:-1:-1;6349:271:1:o;6625:250::-;6710:1;6720:113;6734:6;6731:1;6728:13;6720:113;;;6810:11;;;6804:18;6791:11;;;6784:39;6756:2;6749:10;6720:113;;;-1:-1:-1;;6867:1:1;6849:16;;6842:27;6625:250::o;6880:270::-;6921:3;6959:5;6953:12;6986:6;6981:3;6974:19;7002:76;7071:6;7064:4;7059:3;7055:14;7048:4;7041:5;7037:16;7002:76;:::i;:::-;7132:2;7111:15;-1:-1:-1;;7107:29:1;7098:39;;;;7139:4;7094:50;;6880:270;-1:-1:-1;;6880:270:1:o;7155:369::-;7352:6;7341:9;7334:25;7409:6;7402:14;7395:22;7390:2;7379:9;7375:18;7368:50;7454:2;7449;7438:9;7434:18;7427:30;7315:4;7474:44;7514:2;7503:9;7499:18;7491:6;7474:44;:::i;:::-;7466:52;7155:369;-1:-1:-1;;;;;7155:369:1:o;8218:184::-;8288:6;8341:2;8329:9;8320:7;8316:23;8312:32;8309:52;;;8357:1;8354;8347:12;8309:52;-1:-1:-1;8380:16:1;;8218:184;-1:-1:-1;8218:184:1:o;8407:::-;-1:-1:-1;;;8456:1:1;8449:88;8556:4;8553:1;8546:15;8580:4;8577:1;8570:15;8596:128;8663:9;;;8684:11;;;8681:37;;;8698:18;;:::i;9727:135::-;9766:3;9787:17;;;9784:43;;9807:18;;:::i;:::-;-1:-1:-1;9854:1:1;9843:13;;9727:135::o;9867:582::-;10080:6;10069:9;10062:25;-1:-1:-1;;;;;10127:6:1;10123:55;10118:2;10107:9;10103:18;10096:83;10215:2;10210;10199:9;10195:18;10188:30;10254:6;10249:2;10238:9;10234:18;10227:34;10312:6;10304;10298:3;10287:9;10283:19;10270:49;10369:1;10339:22;;;10363:3;10335:32;;;10328:43;;;;10432:2;10411:15;;;-1:-1:-1;;10407:29:1;10392:45;10388:55;;9867:582;-1:-1:-1;;;9867:582:1:o;12560:125::-;12625:9;;;12646:10;;;12643:36;;;12659:18;;:::i;13374:175::-;13411:3;13455:4;13448:5;13444:16;13484:4;13475:7;13472:17;13469:43;;13492:18;;:::i;:::-;13541:1;13528:15;;13374:175;-1:-1:-1;;13374:175:1:o;14243:184::-;-1:-1:-1;;;14292:1:1;14285:88;14392:4;14389:1;14382:15;14416:4;14413:1;14406:15;17253:178;17290:3;17334:4;17327:5;17323:16;17358:7;17348:41;;17369:18;;:::i;:::-;-1:-1:-1;;17405:20:1;;17253:178;-1:-1:-1;;17253:178:1:o;18843:287::-;18972:3;19010:6;19004:13;19026:66;19085:6;19080:3;19073:4;19065:6;19061:17;19026:66;:::i;:::-;19108:16;;;;;18843:287;-1:-1:-1;;18843:287:1:o;21785:168::-;21858:9;;;21889;;21906:15;;;21900:22;;21886:37;21876:71;;21927:18;;:::i;21958:274::-;21998:1;22024;22014:189;;-1:-1:-1;;;22056:1:1;22049:88;22160:4;22157:1;22150:15;22188:4;22185:1;22178:15;22014:189;-1:-1:-1;22217:9:1;;21958:274::o;22584:245::-;22651:6;22704:2;22692:9;22683:7;22679:23;22675:32;22672:52;;;22720:1;22717;22710:12;22672:52;22752:9;22746:16;22771:28;22793:5;22771:28;:::i;24010:219::-;24159:2;24148:9;24141:21;24122:4;24179:44;24219:2;24208:9;24204:18;24196:6;24179:44;:::i
Swarm Source
ipfs://87b28c2658b0759abed2e8a2571b18f511c6a296c9acea8c12ee62b6349e8fb4
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.