Source Code
Latest 25 from a total of 19,560 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Emergency Withdr... | 310249874 | 340 days ago | IN | 0 ETH | 0.00000124 | ||||
| Deposit | 203710074 | 650 days ago | IN | 0 ETH | 0.00000253 | ||||
| Withdraw | 203629907 | 650 days ago | IN | 0 ETH | 0.00000185 | ||||
| Withdraw | 203629757 | 650 days ago | IN | 0 ETH | 0.00000195 | ||||
| Withdraw | 202829415 | 652 days ago | IN | 0 ETH | 0.00000181 | ||||
| Withdraw | 202829383 | 652 days ago | IN | 0 ETH | 0.00000197 | ||||
| Withdraw | 202829308 | 652 days ago | IN | 0 ETH | 0.0000022 | ||||
| Withdraw | 202822776 | 652 days ago | IN | 0 ETH | 0.00000182 | ||||
| Withdraw | 202820402 | 652 days ago | IN | 0 ETH | 0.00000239 | ||||
| Withdraw | 202820311 | 652 days ago | IN | 0 ETH | 0.00000256 | ||||
| Withdraw | 202820159 | 652 days ago | IN | 0 ETH | 0.00000256 | ||||
| Withdraw | 202820103 | 652 days ago | IN | 0 ETH | 0.00000233 | ||||
| Withdraw | 202820057 | 652 days ago | IN | 0 ETH | 0.00000256 | ||||
| Deposit | 202817717 | 652 days ago | IN | 0 ETH | 0.00000223 | ||||
| Deposit | 202817616 | 652 days ago | IN | 0 ETH | 0.00000205 | ||||
| Deposit | 202817200 | 652 days ago | IN | 0 ETH | 0.0000021 | ||||
| Deposit | 202816984 | 652 days ago | IN | 0 ETH | 0.00000209 | ||||
| Deposit | 202816081 | 652 days ago | IN | 0 ETH | 0.00000206 | ||||
| Withdraw | 202815011 | 652 days ago | IN | 0 ETH | 0.00000205 | ||||
| Deposit | 202814978 | 652 days ago | IN | 0 ETH | 0.00000206 | ||||
| Deposit | 202813667 | 652 days ago | IN | 0 ETH | 0.0000021 | ||||
| Deposit | 202813606 | 652 days ago | IN | 0 ETH | 0.00000187 | ||||
| Deposit | 202813345 | 652 days ago | IN | 0 ETH | 0.0000021 | ||||
| Withdraw | 202813270 | 652 days ago | IN | 0 ETH | 0.00000182 | ||||
| Withdraw | 202813035 | 652 days ago | IN | 0 ETH | 0.00000184 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DBFarms
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/**
*Submitted for verification at Arbiscan.io on 2023-06-23
*/
// SPDX-License-Identifier: AGPL-3.0
pragma solidity =0.8.19;
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 renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
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 functionCall(target, data, "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");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(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) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(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) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
function toString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
interface IERC20 {
function totalSupply() external view returns (uint);
function balanceOf(address account) external view returns (uint);
function transfer(address recipient, uint amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint amount) external returns (bool);
function mint(address _to, uint256 _amount) external returns (bool);
function transferFrom(address sender, address recipient, uint amount) external returns (bool);
function decimals() external view returns (uint8);
}
interface IERC721Receiver {
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}
contract ERC721Holder is IERC721Receiver {
function onERC721Received(
address,
address,
uint256,
bytes memory
) public virtual override returns (bytes4) {
return this.onERC721Received.selector;
}
}
interface IERC165 {
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
abstract contract ERC165 is IERC165 {
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
interface IERC721 is IERC165 {
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
function balanceOf(address owner) external view returns (uint256 balance);
function ownerOf(uint256 tokenId) external view returns (address owner);
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) external;
function transferFrom(
address from,
address to,
uint256 tokenId
) external;
function approve(address to, uint256 tokenId) external;
function getApproved(uint256 tokenId) external view returns (address operator);
function setApprovalForAll(address operator, bool _approved) external;
function isApprovedForAll(address owner, address operator) external view returns (bool);
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes calldata data
) external;
}
interface IERC721Metadata is IERC721 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function tokenURI(uint256 tokenId) external view returns (string memory);
}
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
using Address for address;
using Strings for uint256;
string private _name;
string private _symbol;
mapping(uint256 => address) private _owners;
mapping(address => uint256) private _balances;
mapping(uint256 => address) private _tokenApprovals;
mapping(address => mapping(address => bool)) private _operatorApprovals;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC721).interfaceId ||
interfaceId == type(IERC721Metadata).interfaceId ||
super.supportsInterface(interfaceId);
}
function balanceOf(address owner) public view virtual override returns (uint256) {
require(owner != address(0), "ERC721: balance query for the zero address");
return _balances[owner];
}
function ownerOf(uint256 tokenId) public view virtual override returns (address) {
address owner = _owners[tokenId];
require(owner != address(0), "ERC721: owner query for nonexistent token");
return owner;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
string memory baseURI = _baseURI();
return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
}
function _baseURI() internal view virtual returns (string memory) {
return "";
}
function approve(address to, uint256 tokenId) public virtual override {
address owner = ERC721.ownerOf(tokenId);
require(to != owner, "ERC721: approval to current owner");
require(
_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
"ERC721: approve caller is not owner nor approved for all"
);
_approve(to, tokenId);
}
function getApproved(uint256 tokenId) public view virtual override returns (address) {
require(_exists(tokenId), "ERC721: approved query for nonexistent token");
return _tokenApprovals[tokenId];
}
function setApprovalForAll(address operator, bool approved) public virtual override {
_setApprovalForAll(_msgSender(), operator, approved);
}
function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
return _operatorApprovals[owner][operator];
}
function transferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
_transfer(from, to, tokenId);
}
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
safeTransferFrom(from, to, tokenId, "");
}
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes memory _data
) public virtual override {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
_safeTransfer(from, to, tokenId, _data);
}
function _safeTransfer(
address from,
address to,
uint256 tokenId,
bytes memory _data
) internal virtual {
_transfer(from, to, tokenId);
require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
}
function _exists(uint256 tokenId) internal view virtual returns (bool) {
return _owners[tokenId] != address(0);
}
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
require(_exists(tokenId), "ERC721: operator query for nonexistent token");
address owner = ERC721.ownerOf(tokenId);
return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
}
function _safeMint(address to, uint256 tokenId) internal virtual {
_safeMint(to, tokenId, "");
}
function _safeMint(
address to,
uint256 tokenId,
bytes memory _data
) internal virtual {
_mint(to, tokenId);
require(
_checkOnERC721Received(address(0), to, tokenId, _data),
"ERC721: transfer to non ERC721Receiver implementer"
);
}
function _mint(address to, uint256 tokenId) internal virtual {
require(to != address(0), "ERC721: mint to the zero address");
require(!_exists(tokenId), "ERC721: token already minted");
_beforeTokenTransfer(address(0), to, tokenId);
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(address(0), to, tokenId);
_afterTokenTransfer(address(0), to, tokenId);
}
function _burn(uint256 tokenId) internal virtual {
address owner = ERC721.ownerOf(tokenId);
_beforeTokenTransfer(owner, address(0), tokenId);
_approve(address(0), tokenId);
_balances[owner] -= 1;
delete _owners[tokenId];
emit Transfer(owner, address(0), tokenId);
_afterTokenTransfer(owner, address(0), tokenId);
}
function _transfer(
address from,
address to,
uint256 tokenId
) internal virtual {
require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
require(to != address(0), "ERC721: transfer to the zero address");
_beforeTokenTransfer(from, to, tokenId);
// Clear approvals from the previous owner
_approve(address(0), tokenId);
_balances[from] -= 1;
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(from, to, tokenId);
_afterTokenTransfer(from, to, tokenId);
}
function _approve(address to, uint256 tokenId) internal virtual {
_tokenApprovals[tokenId] = to;
emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
}
function _setApprovalForAll(
address owner,
address operator,
bool approved
) internal virtual {
require(owner != operator, "ERC721: approve to caller");
_operatorApprovals[owner][operator] = approved;
emit ApprovalForAll(owner, operator, approved);
}
function _checkOnERC721Received(
address from,
address to,
uint256 tokenId,
bytes memory _data
) private returns (bool) {
if (to.isContract()) {
try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
return retval == IERC721Receiver.onERC721Received.selector;
} catch (bytes memory reason) {
if (reason.length == 0) {
revert("ERC721: transfer to non ERC721Receiver implementer");
} else {
assembly {
revert(add(32, reason), mload(reason))
}
}
}
} else {
return true;
}
}
function _beforeTokenTransfer(
address from,
address to,
uint256 tokenId
) internal virtual {}
function _afterTokenTransfer(
address from,
address to,
uint256 tokenId
) internal virtual {}
}
interface Logic {
function addPool(string memory _name, uint256 _allocPoint, IERC20 _lpToken, bool _isLp) external;
function setPool(uint256 _pid, uint256 _allocPoint) external;
function updatePool(uint256 _pid) external;
function addBooster(uint256 _pid, ERC721 _booster, string memory _boosterMetaData, uint256 _boosterPerc) external;
function setBooster(uint256 _pid, ERC721 _booster, string memory _boosterMetaData, uint256 _boosterPerc) external;
function deposit(uint256 _pid, uint256 _amount, address _account) external;
function withdraw(uint256 _pid, uint256 _amount, address _account) external;
function emergencyWithdraw(uint256 _pid, address _account) external;
function boost(uint256 _pid, address _account, ERC721 _booster, uint256 _tokenId) external;
function unboost(uint256 _pid, address _account, ERC721 _booster, uint256 _tokenId) external;
function compound(uint256 _pid, address _account) external;
function zapIn(uint256 _pid, address _account, uint256 _amount, address _token) external payable;
function pendingRewards(uint256 _pid, address _account) external view returns (uint256);
function getUserBoostRate(uint256 _pid, address _account) external view returns (uint256);
}
contract DBFarms is Ownable, ERC721Holder {
using SafeMath for uint256;
/* ---------- Setup ---------- */
IERC20 internal rewardToken;
address internal rewardWallet;
address internal logicContract;
uint256 internal totalAllocPoint = 0;
uint256 internal multiplier = 1000;
uint256 internal rewardPerSecond = 2500000000000000000;
uint256 internal maxBoost = 3;
struct UserInfo {
uint256 amount;
uint256 rewardDebt;
uint256 totalIn;
uint256 totalOut;
uint256 totalRewards;
}
struct PoolInfo {
string name;
IERC20 lpToken;
bool isLp;
uint256 allocPoint;
uint256 lastTimestamp;
uint256 accPerShare;
ERC721[] boosters;
string[] boostersMetaData;
uint256[] boostersPerc;
}
struct UserBoosters {
ERC721 booster;
uint256 tokenId;
}
PoolInfo[] internal poolInfo;
mapping(uint => mapping(address => UserInfo)) internal userInfo;
mapping(uint => mapping(address => UserBoosters[])) internal userBoosters;
mapping (address => bool) internal Admins;
event Deposit(address indexed account, uint256 indexed pid, uint256 amount);
event Withdraw(address indexed account, uint256 indexed pid, uint256 amount);
event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount);
modifier isAdmin() {
bool isAnAdmin = false;
if (owner() == msg.sender) { isAnAdmin = true; }
if (logicContract == msg.sender) { isAnAdmin = true; }
if (Admins[msg.sender]) { isAnAdmin = true; }
require(isAnAdmin == true, "caller is not an admin");
_;
}
constructor(IERC20 _rewardToken, address _rewardWallet) {
rewardToken = _rewardToken;
rewardWallet = _rewardWallet;
}
/* ---------- AdminFunctions ---------- */
function addAdmin(address account) isAdmin public {
Admins[account] = true;
}
function removeAdmin(address account) isAdmin public {
Admins[account] = false;
}
/* ---------- ReadFunctions ---------- */
function getRewardToken() public view returns(IERC20) {
return rewardToken;
}
function getRewardWallet() public view returns(address) {
return rewardWallet;
}
function getLogicContract() public view returns(address) {
return logicContract;
}
function getTotalAllocPoint() public view returns(uint256) {
return totalAllocPoint;
}
function getMultiplier() public view returns(uint256) {
return multiplier;
}
function getRewardPerSecond() public view returns(uint256) {
return rewardPerSecond;
}
function getMaxBoost() public view returns(uint256) {
return maxBoost;
}
function getUser(uint _pid, address _account) public view returns(UserInfo memory) {
return userInfo[_pid][_account];
}
function getUserBoosters(uint _pid, address _account) public view returns(UserBoosters[] memory) {
return userBoosters[_pid][_account];
}
function getPoolInfo() public view returns(PoolInfo[] memory) {
return poolInfo;
}
function getPool(uint _pid) public view returns(PoolInfo memory) {
return poolInfo[_pid];
}
function getTvl(uint _pid) public view returns(uint256) {
return poolInfo[_pid].lpToken.balanceOf(address(this));
}
function getTotalPools() public view returns (uint) {
return poolInfo.length;
}
function admin(address _account) public view returns(bool) {
bool isAnAdmin = false;
if (owner() == _account) { isAnAdmin = true; }
if (logicContract == _account) { isAnAdmin = true; }
if (Admins[_account]) { isAnAdmin = true; }
if (address(this) == _account) { isAnAdmin = true; }
return isAnAdmin;
}
/* ---------- WriteFunctions ---------- */
function setRewardWallet(address _newWallet) public isAdmin {
rewardWallet = _newWallet;
}
function setLogicContract(address _newAddress) public isAdmin {
logicContract = _newAddress;
}
function setTotalAllocPoint(uint256 _newValue) public isAdmin {
totalAllocPoint = _newValue;
}
function setMultiplier(uint256 _newValue) public isAdmin {
multiplier = _newValue;
}
function setMaxBoost(uint256 _newValue) public isAdmin {
maxBoost = _newValue;
}
function setUser(uint _pid, address _account, UserInfo memory _user) public isAdmin {
userInfo[_pid][_account] = _user;
}
function addUserBoosters(uint _pid, address _account, UserBoosters memory _userBoosters) public isAdmin {
userBoosters[_pid][_account].push(_userBoosters);
}
function setUserBoosters(uint _pid, address _account, UserBoosters[] memory _userBoosters) public isAdmin {
delete userBoosters[_pid][_account];
for(uint i = 0; i < _userBoosters.length; i++) {
userBoosters[_pid][_account].push(_userBoosters[i]);
}
}
function removeUserBoosters(uint _pid, address _account, UserBoosters memory _userBoosters) public isAdmin {
uint id = 0;
for(uint i = 0; i < userBoosters[_pid][_account].length; i++) {
if (userBoosters[_pid][_account][i].booster == _userBoosters.booster && userBoosters[_pid][_account][i].tokenId == _userBoosters.tokenId) {
id = i;
break;
}
}
delete userBoosters[_pid][_account][id];
for(uint i = id; i < userBoosters[_pid][_account].length-1; i++){
userBoosters[_pid][_account][i] = userBoosters[_pid][_account][i+1];
}
userBoosters[_pid][_account].pop();
}
function pushToPool(PoolInfo memory pool) public isAdmin {
poolInfo.push(pool);
}
function setPool(uint _pid, PoolInfo memory _pool) public isAdmin {
poolInfo[_pid] = _pool;
}
function recoverToken(address _account, uint256 _amount, IERC20 _token) public isAdmin {
_token.transfer(_account, _amount);
}
function recoverNft(address _account, uint256 _id, ERC721 _nft) public {
_nft.safeTransferFrom(address(this), _account, _id, "");
}
function emitDeposit(address _account, uint256 _pid, uint256 _amount) public isAdmin {
emit Deposit(_account, _pid, _amount);
}
function emitWithdraw(address _account, uint256 _pid, uint256 _amount) public isAdmin {
emit Withdraw(_account, _pid, _amount);
}
function emitEmergencyWithdraw(address _account, uint256 _pid, uint256 _amount) public isAdmin {
emit EmergencyWithdraw(_account, _pid, _amount);
}
/* ---------- PoolManagement ---------- */
function addPool(string memory _name, uint256 _allocPoint, IERC20 _lpToken, bool _isLp) public isAdmin {
Logic(logicContract).addPool(_name, _allocPoint, _lpToken, _isLp);
}
function setPool(uint256 _pid, uint256 _allocPoint) public isAdmin {
Logic(logicContract).setPool(_pid, _allocPoint);
}
function updatePool(uint256 _pid) public isAdmin {
Logic(logicContract).updatePool(_pid);
}
function addBooster(uint256 _pid, ERC721 _booster, string memory _boosterMetaData, uint256 _boosterPerc) public isAdmin {
Logic(logicContract).addBooster(_pid, _booster, _boosterMetaData, _boosterPerc);
}
function setBooster(uint256 _pid, ERC721 _booster, string memory _boosterMetaData, uint256 _boosterPerc) public isAdmin {
Logic(logicContract).setBooster(_pid, _booster, _boosterMetaData, _boosterPerc);
}
/* ---------- StakingManagement ---------- */
function deposit(uint256 _pid, uint256 _amount) public {
Logic(logicContract).deposit(_pid, _amount, msg.sender);
}
function withdraw(uint256 _pid, uint256 _amount) public {
Logic(logicContract).withdraw(_pid, _amount, msg.sender);
}
function emergencyWithdraw(uint256 _pid) public {
Logic(logicContract).emergencyWithdraw(_pid, msg.sender);
}
function boost(uint256 _pid, ERC721 _booster, uint256 _tokenId) public {
Logic(logicContract).boost(_pid, msg.sender, _booster, _tokenId);
}
function unboost(uint256 _pid, ERC721 _booster, uint256 _tokenId) public {
Logic(logicContract).unboost(_pid, msg.sender, _booster, _tokenId);
}
function compound(uint256 _pid, address _account) public {
Logic(logicContract).compound(_pid, _account);
}
function zapIn(uint256 _pid, address _account, uint256 _amount, address _token) public payable {
Logic(logicContract).zapIn{value: msg.value}(_pid, _account, _amount, _token);
}
function pendingRewards(uint256 _pid, address _account) public view returns (uint256) {
return Logic(logicContract).pendingRewards(_pid, _account);
}
function getUserBoostRate(uint256 _pid, address _account) public view returns (uint256) {
return Logic(logicContract).getUserBoostRate(_pid, _account);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"_rewardToken","type":"address"},{"internalType":"address","name":"_rewardWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"contract ERC721","name":"_booster","type":"address"},{"internalType":"string","name":"_boosterMetaData","type":"string"},{"internalType":"uint256","name":"_boosterPerc","type":"uint256"}],"name":"addBooster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"bool","name":"_isLp","type":"bool"}],"name":"addPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"components":[{"internalType":"contract ERC721","name":"booster","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"internalType":"struct DBFarms.UserBoosters","name":"_userBoosters","type":"tuple"}],"name":"addUserBoosters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"admin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"contract ERC721","name":"_booster","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"boost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emitDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emitEmergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emitWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getLogicContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxBoost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"getPool","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"bool","name":"isLp","type":"bool"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastTimestamp","type":"uint256"},{"internalType":"uint256","name":"accPerShare","type":"uint256"},{"internalType":"contract ERC721[]","name":"boosters","type":"address[]"},{"internalType":"string[]","name":"boostersMetaData","type":"string[]"},{"internalType":"uint256[]","name":"boostersPerc","type":"uint256[]"}],"internalType":"struct DBFarms.PoolInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolInfo","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"bool","name":"isLp","type":"bool"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastTimestamp","type":"uint256"},{"internalType":"uint256","name":"accPerShare","type":"uint256"},{"internalType":"contract ERC721[]","name":"boosters","type":"address[]"},{"internalType":"string[]","name":"boostersMetaData","type":"string[]"},{"internalType":"uint256[]","name":"boostersPerc","type":"uint256[]"}],"internalType":"struct DBFarms.PoolInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalPools","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"getTvl","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"name":"getUser","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"totalIn","type":"uint256"},{"internalType":"uint256","name":"totalOut","type":"uint256"},{"internalType":"uint256","name":"totalRewards","type":"uint256"}],"internalType":"struct DBFarms.UserInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"name":"getUserBoostRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"name":"getUserBoosters","outputs":[{"components":[{"internalType":"contract ERC721","name":"booster","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"internalType":"struct DBFarms.UserBoosters[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"bool","name":"isLp","type":"bool"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastTimestamp","type":"uint256"},{"internalType":"uint256","name":"accPerShare","type":"uint256"},{"internalType":"contract ERC721[]","name":"boosters","type":"address[]"},{"internalType":"string[]","name":"boostersMetaData","type":"string[]"},{"internalType":"uint256[]","name":"boostersPerc","type":"uint256[]"}],"internalType":"struct DBFarms.PoolInfo","name":"pool","type":"tuple"}],"name":"pushToPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"contract ERC721","name":"_nft","type":"address"}],"name":"recoverNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"components":[{"internalType":"contract ERC721","name":"booster","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"internalType":"struct DBFarms.UserBoosters","name":"_userBoosters","type":"tuple"}],"name":"removeUserBoosters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"contract ERC721","name":"_booster","type":"address"},{"internalType":"string","name":"_boosterMetaData","type":"string"},{"internalType":"uint256","name":"_boosterPerc","type":"uint256"}],"name":"setBooster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"setLogicContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newValue","type":"uint256"}],"name":"setMaxBoost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newValue","type":"uint256"}],"name":"setMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"}],"name":"setPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"bool","name":"isLp","type":"bool"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastTimestamp","type":"uint256"},{"internalType":"uint256","name":"accPerShare","type":"uint256"},{"internalType":"contract ERC721[]","name":"boosters","type":"address[]"},{"internalType":"string[]","name":"boostersMetaData","type":"string[]"},{"internalType":"uint256[]","name":"boostersPerc","type":"uint256[]"}],"internalType":"struct DBFarms.PoolInfo","name":"_pool","type":"tuple"}],"name":"setPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setRewardWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newValue","type":"uint256"}],"name":"setTotalAllocPoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"totalIn","type":"uint256"},{"internalType":"uint256","name":"totalOut","type":"uint256"},{"internalType":"uint256","name":"totalRewards","type":"uint256"}],"internalType":"struct DBFarms.UserInfo","name":"_user","type":"tuple"}],"name":"setUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"components":[{"internalType":"contract ERC721","name":"booster","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"internalType":"struct DBFarms.UserBoosters[]","name":"_userBoosters","type":"tuple[]"}],"name":"setUserBoosters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"contract ERC721","name":"_booster","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"unboost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"zapIn","outputs":[],"stateMutability":"payable","type":"function"}]Contract Creation Code
608060405260006004556103e86005556722b1c8c1227a000060065560036007553480156200002d57600080fd5b5060405162003b4c38038062003b4c8339810160408190526200005091620000f6565b6200005b336200008d565b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905562000135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f357600080fd5b50565b600080604083850312156200010a57600080fd5b82516200011781620000dd565b60208401519092506200012a81620000dd565b809150509250929050565b613a0780620001456000396000f3fe6080604052600436106102c95760003560e01c80637048027511610175578063ca7f3a5d116100dc578063d67dff0111610095578063da5b4ee71161006f578063da5b4ee7146108f0578063e2bbb15814610905578063e89d152b14610925578063f2fde38b1461095257600080fd5b8063d67dff0114610892578063d72dd172146108b0578063d8466121146108d057600080fd5b8063ca7f3a5d146107dd578063ca8e6c03146107fd578063d04323c51461081d578063d18df53c1461083d578063d3ffe67a1461085d578063d642086d1461087257600080fd5b80638f6693891161012e5780638f6693891461072a578063a52454d81461073d578063a69cde9a1461075d578063b2e0df961461077d578063b5b348b61461079d578063b777592b146107bd57600080fd5b80637048027514610679578063715018a61461069957806381b5e05e146106ae5780638227018f146106ce5780638b18c7e3146106ee5780638da5cb5b1461070c57600080fd5b806346430af1116102345780635aa4470f116101ed57806363a846f8116101c757806363a846f8146105d7578063641579a61461060757806369940d79146106275780636a34a03b1461065957600080fd5b80635aa4470f1461057557806360246c881461059557806362cf79b7146105b757600080fd5b806346430af1146104b55780634a9f1326146104d557806351eb05a6146104f55780635290e86e146105155780635312ea8e146105355780635958621e1461055557600080fd5b8063257664a411610286578063257664a4146103d45780632d4c6e8a146104365780633a58b91a1461044b57806340490a90146104605780634142d26714610475578063441a3e701461049557600080fd5b8063026549b5146102ce578063068bcd8d14610301578063150b7a021461032e5780631785f53c146103725780631f8434db146103945780632002ace0146103b4575b600080fd5b3480156102da57600080fd5b506102ee6102e9366004612be7565b610972565b6040519081526020015b60405180910390f35b34801561030d57600080fd5b5061032161031c366004612be7565b610a0a565b6040516102f89190612dcb565b34801561033a57600080fd5b50610359610349366004612eb9565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102f8565b34801561037e57600080fd5b5061039261038d366004612f38565b610d08565b005b3480156103a057600080fd5b506103926103af366004612f55565b610db0565b3480156103c057600080fd5b506103926103cf36600461323f565b610e77565b3480156103e057600080fd5b506103f46103ef36600461327b565b610fea565b6040516102f89190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b34801561044257600080fd5b506007546102ee565b34801561045757600080fd5b506004546102ee565b34801561046c57600080fd5b506005546102ee565b34801561048157600080fd5b506103926104903660046132ab565b61107d565b3480156104a157600080fd5b506103926104b0366004613316565b611169565b3480156104c157600080fd5b506103926104d0366004613316565b6111d9565b3480156104e157600080fd5b506103926104f0366004613338565b6112c1565b34801561050157600080fd5b50610392610510366004612be7565b61141a565b34801561052157600080fd5b506102ee61053036600461327b565b6114c8565b34801561054157600080fd5b50610392610550366004612be7565b611546565b34801561056157600080fd5b50610392610570366004612f38565b6115a6565b34801561058157600080fd5b50610392610590366004612f38565b611646565b3480156105a157600080fd5b506105aa6116e6565b6040516102f8919061337e565b3480156105c357600080fd5b506103926105d2366004612f55565b6119b6565b3480156105e357600080fd5b506105f76105f2366004612f38565b611a6f565b60405190151581526020016102f8565b34801561061357600080fd5b50610392610622366004612be7565b611af7565b34801561063357600080fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016102f8565b34801561066557600080fd5b506103926106743660046133e0565b611b7a565b34801561068557600080fd5b50610392610694366004612f38565b611bc0565b3480156106a557600080fd5b50610392611c62565b3480156106ba57600080fd5b506103926106c9366004613418565b611cc8565b3480156106da57600080fd5b506103926106e93660046133e0565b611d11565b3480156106fa57600080fd5b506003546001600160a01b0316610641565b34801561071857600080fd5b506000546001600160a01b0316610641565b61039261073836600461345a565b611d57565b34801561074957600080fd5b50610392610758366004613499565b611db5565b34801561076957600080fd5b506103926107783660046134f9565b611e68565b34801561078957600080fd5b50610392610798366004612be7565b611f37565b3480156107a957600080fd5b506103926107b8366004612f55565b611fba565b3480156107c957600080fd5b506103926107d83660046135ef565b612073565b3480156107e957600080fd5b506103926107f836600461362e565b6123a3565b34801561080957600080fd5b50610392610818366004612be7565b6124e8565b34801561082957600080fd5b50610392610838366004613418565b61256b565b34801561084957600080fd5b506102ee61085836600461327b565b61265b565b34801561086957600080fd5b506008546102ee565b34801561087e57600080fd5b5061039261088d3660046135ef565b612695565b34801561089e57600080fd5b506002546001600160a01b0316610641565b3480156108bc57600080fd5b506103926108cb366004613499565b61276a565b3480156108dc57600080fd5b506103926108eb36600461327b565b61281d565b3480156108fc57600080fd5b506006546102ee565b34801561091157600080fd5b50610392610920366004613316565b612856565b34801561093157600080fd5b5061094561094036600461327b565b612894565b6040516102f891906136e6565b34801561095e57600080fd5b5061039261096d366004612f38565b612927565b60006008828154811061098757610987613731565b60009182526020909120600890910201600101546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156109e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a049190613747565b92915050565b610a646040518061012001604052806060815260200160006001600160a01b031681526020016000151581526020016000815260200160008152602001600081526020016060815260200160608152602001606081525090565b60088281548110610a7757610a77613731565b906000526020600020906008020160405180610120016040529081600082018054610aa190613760565b80601f0160208091040260200160405190810160405280929190818152602001828054610acd90613760565b8015610b1a5780601f10610aef57610100808354040283529160200191610b1a565b820191906000526020600020905b815481529060010190602001808311610afd57829003601f168201915b505050918352505060018201546001600160a01b038116602080840191909152600160a01b90910460ff1615156040808401919091526002840154606084015260038401546080840152600484015460a084015260058401805482518185028101850190935280835260c0909401939192909190830182828015610bc757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ba9575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020016000905b82821015610ca1578382906000526020600020018054610c1490613760565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4090613760565b8015610c8d5780601f10610c6257610100808354040283529160200191610c8d565b820191906000526020600020905b815481529060010190602001808311610c7057829003601f168201915b505050505081526020019060010190610bf5565b50505050815260200160078201805480602002602001604051908101604052809291908181526020018280548015610cf857602002820191906000526020600020905b815481526020019060010190808311610ce4575b5050505050815250509050919050565b600033610d1d6000546001600160a01b031690565b6001600160a01b031603610d2f575060015b600354336001600160a01b0390911603610d47575060015b336000908152600b602052604090205460ff1615610d63575060015b600181151514610d8e5760405162461bcd60e51b8152600401610d859061379a565b60405180910390fd5b506001600160a01b03166000908152600b60205260409020805460ff19169055565b600033610dc56000546001600160a01b031690565b6001600160a01b031603610dd7575060015b600354336001600160a01b0390911603610def575060015b336000908152600b602052604090205460ff1615610e0b575060015b600181151514610e2d5760405162461bcd60e51b8152600401610d859061379a565b82846001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56884604051610e6991815260200190565b60405180910390a350505050565b600033610e8c6000546001600160a01b031690565b6001600160a01b031603610e9e575060015b600354336001600160a01b0390911603610eb6575060015b336000908152600b602052604090205460ff1615610ed2575060015b600181151514610ef45760405162461bcd60e51b8152600401610d859061379a565b60088054600181018255600082905283518492919091027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301908190610f3a9082613815565b5060208281015160018301805460408601511515600160a01b026001600160a81b03199091166001600160a01b0390931692909217919091179055606083015160028301556080830151600383015560a0830151600483015560c08301518051610faa9260058501920190612a42565b5060e08201518051610fc6916006840191602090910190612aa7565b506101008201518051610fe3916007840191602090910190612af9565b5050505050565b61101c6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b5060009182526009602090815260408084206001600160a01b0393909316845291815291819020815160a081018352815481526001820154938101939093526002810154918301919091526003810154606083015260040154608082015290565b6000336110926000546001600160a01b031690565b6001600160a01b0316036110a4575060015b600354336001600160a01b03909116036110bc575060015b336000908152600b602052604090205460ff16156110d8575060015b6001811515146110fa5760405162461bcd60e51b8152600401610d859061379a565b600354604051634142d26760e01b81526001600160a01b0390911690634142d267906111309088908890889088906004016138d4565b600060405180830381600087803b15801561114a57600080fd5b505af115801561115e573d6000803e3d6000fd5b505050505050505050565b600354604051630ad58d2f60e01b815260048101849052602481018390523360448201526001600160a01b0390911690630ad58d2f906064015b600060405180830381600087803b1580156111bd57600080fd5b505af11580156111d1573d6000803e3d6000fd5b505050505050565b6000336111ee6000546001600160a01b031690565b6001600160a01b031603611200575060015b600354336001600160a01b0390911603611218575060015b336000908152600b602052604090205460ff1615611234575060015b6001811515146112565760405162461bcd60e51b8152600401610d859061379a565b6003546040516346430af160e01b815260048101859052602481018490526001600160a01b03909116906346430af1906044015b600060405180830381600087803b1580156112a457600080fd5b505af11580156112b8573d6000803e3d6000fd5b50505050505050565b6000336112d66000546001600160a01b031690565b6001600160a01b0316036112e8575060015b600354336001600160a01b0390911603611300575060015b336000908152600b602052604090205460ff161561131c575060015b60018115151461133e5760405162461bcd60e51b8152600401610d859061379a565b816008848154811061135257611352613731565b6000918252602090912082516008909202019081906113719082613815565b5060208281015160018301805460408601511515600160a01b026001600160a81b03199091166001600160a01b0390931692909217919091179055606083015160028301556080830151600383015560a0830151600483015560c083015180516113e19260058501920190612a42565b5060e082015180516113fd916006840191602090910190612aa7565b5061010082015180516111d1916007840191602090910190612af9565b60003361142f6000546001600160a01b031690565b6001600160a01b031603611441575060015b600354336001600160a01b0390911603611459575060015b336000908152600b602052604090205460ff1615611475575060015b6001811515146114975760405162461bcd60e51b8152600401610d859061379a565b6003546040516328f582d360e11b8152600481018490526001600160a01b03909116906351eb05a6906024016111a3565b600354604051632948743760e11b8152600481018490526001600160a01b0383811660248301526000921690635290e86e906044015b602060405180830381865afa15801561151b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153f9190613747565b9392505050565b6003546040516302f940c760e41b8152600481018390523360248201526001600160a01b0390911690632f940c7090604401600060405180830381600087803b15801561159257600080fd5b505af1158015610fe3573d6000803e3d6000fd5b6000336115bb6000546001600160a01b031690565b6001600160a01b0316036115cd575060015b600354336001600160a01b03909116036115e5575060015b336000908152600b602052604090205460ff1615611601575060015b6001811515146116235760405162461bcd60e51b8152600401610d859061379a565b50600280546001600160a01b0319166001600160a01b0392909216919091179055565b60003361165b6000546001600160a01b031690565b6001600160a01b03160361166d575060015b600354336001600160a01b0390911603611685575060015b336000908152600b602052604090205460ff16156116a1575060015b6001811515146116c35760405162461bcd60e51b8152600401610d859061379a565b50600380546001600160a01b0319166001600160a01b0392909216919091179055565b60606008805480602002602001604051908101604052809291908181526020016000905b828210156119ad57838290600052602060002090600802016040518061012001604052908160008201805461173e90613760565b80601f016020809104026020016040519081016040528092919081815260200182805461176a90613760565b80156117b75780601f1061178c576101008083540402835291602001916117b7565b820191906000526020600020905b81548152906001019060200180831161179a57829003601f168201915b505050918352505060018201546001600160a01b038116602080840191909152600160a01b90910460ff1615156040808401919091526002840154606084015260038401546080840152600484015460a084015260058401805482518185028101850190935280835260c090940193919290919083018282801561186457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611846575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101561193e5783829060005260206000200180546118b190613760565b80601f01602080910402602001604051908101604052809291908181526020018280546118dd90613760565b801561192a5780601f106118ff5761010080835404028352916020019161192a565b820191906000526020600020905b81548152906001019060200180831161190d57829003601f168201915b505050505081526020019060010190611892565b5050505081526020016007820180548060200260200160405190810160405280929190818152602001828054801561199557602002820191906000526020600020905b815481526020019060010190808311611981575b5050505050815250508152602001906001019061170a565b50505050905090565b6000336119cb6000546001600160a01b031690565b6001600160a01b0316036119dd575060015b600354336001600160a01b03909116036119f5575060015b336000908152600b602052604090205460ff1615611a11575060015b600181151514611a335760405162461bcd60e51b8152600401610d859061379a565b82846001600160a01b03167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae059584604051610e6991815260200190565b6000806001600160a01b038316611a8e6000546001600160a01b031690565b6001600160a01b031603611aa0575060015b6003546001600160a01b03808516911603611ab9575060015b6001600160a01b0383166000908152600b602052604090205460ff1615611ade575060015b6001600160a01b0383163003610a045750600192915050565b600033611b0c6000546001600160a01b031690565b6001600160a01b031603611b1e575060015b600354336001600160a01b0390911603611b36575060015b336000908152600b602052604090205460ff1615611b52575060015b600181151514611b745760405162461bcd60e51b8152600401610d859061379a565b50600555565b600354604051633134c11360e11b8152600481018590523360248201526001600160a01b038481166044830152606482018490529091169063626982269060840161128a565b600033611bd56000546001600160a01b031690565b6001600160a01b031603611be7575060015b600354336001600160a01b0390911603611bff575060015b336000908152600b602052604090205460ff1615611c1b575060015b600181151514611c3d5760405162461bcd60e51b8152600401610d859061379a565b506001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b03163314611cbc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d85565b611cc660006129f2565b565b604051635c46a7ef60e11b81523060048201526001600160a01b03848116602483015260448201849052608060648301526000608483015282169063b88d4fde9060a40161128a565b60035460405163882af3ef60e01b8152600481018590523360248201526001600160a01b038481166044830152606482018490529091169063882af3ef9060840161128a565b600354604051638f66938960e01b8152600481018690526001600160a01b03858116602483015260448201859052838116606483015290911690638f6693899034906084016000604051808303818588803b15801561114a57600080fd5b600033611dca6000546001600160a01b031690565b6001600160a01b031603611ddc575060015b600354336001600160a01b0390911603611df4575060015b336000908152600b602052604090205460ff1615611e10575060015b600181151514611e325760405162461bcd60e51b8152600401610d859061379a565b6003546040516314a48a9b60e31b81526001600160a01b039091169063a52454d89061113090889088908890889060040161390e565b600033611e7d6000546001600160a01b031690565b6001600160a01b031603611e8f575060015b600354336001600160a01b0390911603611ea7575060015b336000908152600b602052604090205460ff1615611ec3575060015b600181151514611ee55760405162461bcd60e51b8152600401610d859061379a565b5060009283526009602090815260408085206001600160a01b03909416855292815292829020815181559281015160018401559081015160028301556060810151600383015560800151600490910155565b600033611f4c6000546001600160a01b031690565b6001600160a01b031603611f5e575060015b600354336001600160a01b0390911603611f76575060015b336000908152600b602052604090205460ff1615611f92575060015b600181151514611fb45760405162461bcd60e51b8152600401610d859061379a565b50600755565b600033611fcf6000546001600160a01b031690565b6001600160a01b031603611fe1575060015b600354336001600160a01b0390911603611ff9575060015b336000908152600b602052604090205460ff1615612015575060015b6001811515146120375760405162461bcd60e51b8152600401610d859061379a565b82846001600160a01b03167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1584604051610e6991815260200190565b6000336120886000546001600160a01b031690565b6001600160a01b03160361209a575060015b600354336001600160a01b03909116036120b2575060015b336000908152600b602052604090205460ff16156120ce575060015b6001811515146120f05760405162461bcd60e51b8152600401610d859061379a565b6000805b6000868152600a602090815260408083206001600160a01b03891684529091529020548110156121e95783516000878152600a602090815260408083206001600160a01b038a81168552925290912080549190921691908390811061215b5761215b613731565b60009182526020909120600290910201546001600160a01b03161480156121ca57506020808501516000888152600a835260408082206001600160a01b038a168352909352919091208054839081106121b6576121b6613731565b906000526020600020906002020160010154145b156121d7578091506121e9565b806121e18161395f565b9150506120f4565b506000858152600a602090815260408083206001600160a01b0388168452909152902080548290811061221e5761221e613731565b60009182526020822060029091020180546001600160a01b031916815560010155805b6000868152600a602090815260408083206001600160a01b038916845290915290205461227090600190613978565b811015612341576000868152600a602090815260408083206001600160a01b038916845290915290206122a482600161398b565b815481106122b4576122b4613731565b60009182526020808320898452600a825260408085206001600160a01b038b1686529092529220805460029092029092019190839081106122f7576122f7613731565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600191820154910155806123398161395f565b915050612241565b506000858152600a602090815260408083206001600160a01b038816845290915290208054806123735761237361399e565b60008281526020812060026000199093019283020180546001600160a01b03191681556001015590555050505050565b6000336123b86000546001600160a01b031690565b6001600160a01b0316036123ca575060015b600354336001600160a01b03909116036123e2575060015b336000908152600b602052604090205460ff16156123fe575060015b6001811515146124205760405162461bcd60e51b8152600401610d859061379a565b6000848152600a602090815260408083206001600160a01b0387168452909152812061244b91612b34565b60005b8251811015610fe3576000858152600a602090815260408083206001600160a01b03881684529091529020835184908390811061248d5761248d613731565b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b0319166001600160a01b03909216919091178155910151910155806124e08161395f565b91505061244e565b6000336124fd6000546001600160a01b031690565b6001600160a01b03160361250f575060015b600354336001600160a01b0390911603612527575060015b336000908152600b602052604090205460ff1615612543575060015b6001811515146125655760405162461bcd60e51b8152600401610d859061379a565b50600455565b6000336125806000546001600160a01b031690565b6001600160a01b031603612592575060015b600354336001600160a01b03909116036125aa575060015b336000908152600b602052604090205460ff16156125c6575060015b6001811515146125e85760405162461bcd60e51b8152600401610d859061379a565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905283169063a9059cbb906044016020604051808303816000875af1158015612637573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe391906139b4565b6003546040516334637d4f60e21b8152600481018490526001600160a01b038381166024830152600092169063d18df53c906044016114fe565b6000336126aa6000546001600160a01b031690565b6001600160a01b0316036126bc575060015b600354336001600160a01b03909116036126d4575060015b336000908152600b602052604090205460ff16156126f0575060015b6001811515146127125760405162461bcd60e51b8152600401610d859061379a565b506000928352600a602090815260408085206001600160a01b0394851686528252842080546001808201835591865294829020835160029096020180546001600160a01b031916959094169490941783550151910155565b60003361277f6000546001600160a01b031690565b6001600160a01b031603612791575060015b600354336001600160a01b03909116036127a9575060015b336000908152600b602052604090205460ff16156127c5575060015b6001811515146127e75760405162461bcd60e51b8152600401610d859061379a565b600354604051636b96e8b960e11b81526001600160a01b039091169063d72dd1729061113090889088908890889060040161390e565b60035460405163d846612160e01b8152600481018490526001600160a01b0383811660248301529091169063d8466121906044016111a3565b600354604051638dbdbe6d60e01b815260048101849052602481018390523360448201526001600160a01b0390911690638dbdbe6d906064016111a3565b6000828152600a602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b8282101561291b576000848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016128d3565b50505050905092915050565b6000546001600160a01b031633146129815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d85565b6001600160a01b0381166129e65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d85565b6129ef816129f2565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215612a97579160200282015b82811115612a9757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612a62565b50612aa3929150612b55565b5090565b828054828255906000526020600020908101928215612aed579160200282015b82811115612aed5782518290612add9082613815565b5091602001919060010190612ac7565b50612aa3929150612b6a565b828054828255906000526020600020908101928215612a97579160200282015b82811115612a97578251825591602001919060010190612b19565b50805460008255600202906000526020600020908101906129ef9190612b87565b5b80821115612aa35760008155600101612b56565b80821115612aa3576000612b7e8282612bad565b50600101612b6a565b5b80821115612aa35780546001600160a01b031916815560006001820155600201612b88565b508054612bb990613760565b6000825580601f10612bc9575050565b601f0160209004906000526020600020908101906129ef9190612b55565b600060208284031215612bf957600080fd5b5035919050565b6000815180845260005b81811015612c2657602081850181015186830182015201612c0a565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501945080840160005b83811015612c7f5781516001600160a01b031687529582019590820190600101612c5a565b509495945050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015612cd2578284038952612cc0848351612c00565b98850198935090840190600101612ca8565b5091979650505050505050565b600081518084526020808501945080840160005b83811015612c7f57815187529582019590820190600101612cf3565b60006101208251818552612d2582860182612c00565b9150506020830151612d4260208601826001600160a01b03169052565b506040830151612d56604086018215159052565b50606083015160608501526080830151608085015260a083015160a085015260c083015184820360c0860152612d8c8282612c46565b91505060e083015184820360e0860152612da68282612c8a565b9150506101008084015185830382870152612dc18382612cdf565b9695505050505050565b60208152600061153f6020830184612d0f565b6001600160a01b03811681146129ef57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612e2c57612e2c612df3565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612e5a57612e5a612df3565b604052919050565b60006001600160401b03831115612e7b57612e7b612df3565b612e8e601f8401601f1916602001612e32565b9050828152838383011115612ea257600080fd5b828260208301376000602084830101529392505050565b60008060008060808587031215612ecf57600080fd5b8435612eda81612dde565b93506020850135612eea81612dde565b92506040850135915060608501356001600160401b03811115612f0c57600080fd5b8501601f81018713612f1d57600080fd5b612f2c87823560208401612e62565b91505092959194509250565b600060208284031215612f4a57600080fd5b813561153f81612dde565b600080600060608486031215612f6a57600080fd5b8335612f7581612dde565b95602085013595506040909401359392505050565b600082601f830112612f9b57600080fd5b61153f83833560208501612e62565b8035612fb581612dde565b919050565b80151581146129ef57600080fd5b8035612fb581612fba565b60006001600160401b03821115612fec57612fec612df3565b5060051b60200190565b600082601f83011261300757600080fd5b8135602061301c61301783612fd3565b612e32565b82815260059290921b8401810191818101908684111561303b57600080fd5b8286015b8481101561305f57803561305281612dde565b835291830191830161303f565b509695505050505050565b600082601f83011261307b57600080fd5b8135602061308b61301783612fd3565b82815260059290921b840181019181810190868411156130aa57600080fd5b8286015b8481101561305f5780356001600160401b038111156130cd5760008081fd5b6130db8986838b0101612f8a565b8452509183019183016130ae565b600082601f8301126130fa57600080fd5b8135602061310a61301783612fd3565b82815260059290921b8401810191818101908684111561312957600080fd5b8286015b8481101561305f578035835291830191830161312d565b6000610120828403121561315757600080fd5b61315f612e09565b905081356001600160401b038082111561317857600080fd5b61318485838601612f8a565b835261319260208501612faa565b60208401526131a360408501612fc8565b6040840152606084013560608401526080840135608084015260a084013560a084015260c08401359150808211156131da57600080fd5b6131e685838601612ff6565b60c084015260e08401359150808211156131ff57600080fd5b61320b8583860161306a565b60e08401526101009150818401358181111561322657600080fd5b613232868287016130e9565b8385015250505092915050565b60006020828403121561325157600080fd5b81356001600160401b0381111561326757600080fd5b61327384828501613144565b949350505050565b6000806040838503121561328e57600080fd5b8235915060208301356132a081612dde565b809150509250929050565b600080600080608085870312156132c157600080fd5b84356001600160401b038111156132d757600080fd5b6132e387828801612f8a565b9450506020850135925060408501356132fb81612dde565b9150606085013561330b81612fba565b939692955090935050565b6000806040838503121561332957600080fd5b50508035926020909101359150565b6000806040838503121561334b57600080fd5b8235915060208301356001600160401b0381111561336857600080fd5b61337485828601613144565b9150509250929050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156133d357603f198886030184526133c1858351612d0f565b945092850192908501906001016133a5565b5092979650505050505050565b6000806000606084860312156133f557600080fd5b83359250602084013561340781612dde565b929592945050506040919091013590565b60008060006060848603121561342d57600080fd5b833561343881612dde565b925060208401359150604084013561344f81612dde565b809150509250925092565b6000806000806080858703121561347057600080fd5b84359350602085013561348281612dde565b925060408501359150606085013561330b81612dde565b600080600080608085870312156134af57600080fd5b8435935060208501356134c181612dde565b925060408501356001600160401b038111156134dc57600080fd5b6134e887828801612f8a565b949793965093946060013593505050565b600080600083850360e081121561350f57600080fd5b84359350602085013561352181612dde565b925060a0603f198201121561353557600080fd5b5060405160a081018181106001600160401b038211171561355857613558612df3565b806040525060408501358152606085013560208201526080850135604082015260a0850135606082015260c08501356080820152809150509250925092565b6000604082840312156135a957600080fd5b604051604081018181106001600160401b03821117156135cb576135cb612df3565b60405290508082356135dc81612dde565b8152602092830135920191909152919050565b60008060006080848603121561360457600080fd5b83359250602084013561361681612dde565b91506136258560408601613597565b90509250925092565b60008060006060848603121561364357600080fd5b8335925060208085013561365681612dde565b92506040858101356001600160401b0381111561367257600080fd5b8601601f8101881361368357600080fd5b803561369161301782612fd3565b81815260069190911b8201840190848101908a8311156136b057600080fd5b928501925b828410156136d6576136c78b85613597565b825292840192908501906136b5565b8096505050505050509250925092565b602080825282518282018190526000919060409081850190868401855b82811015612cd257815180516001600160a01b03168552860151868501529284019290850190600101613703565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561375957600080fd5b5051919050565b600181811c9082168061377457607f821691505b60208210810361379457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526016908201527531b0b63632b91034b9903737ba1030b71030b236b4b760511b604082015260600190565b601f82111561381057600081815260208120601f850160051c810160208610156137f15750805b601f850160051c820191505b818110156111d1578281556001016137fd565b505050565b81516001600160401b0381111561382e5761382e612df3565b6138428161383c8454613760565b846137ca565b602080601f831160018114613877576000841561385f5750858301515b600019600386901b1c1916600185901b1785556111d1565b600085815260208120601f198616915b828110156138a657888601518255948401946001909101908401613887565b50858210156138c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080815260006138e76080830187612c00565b6020830195909552506001600160a01b039290921660408301521515606090910152919050565b8481526001600160a01b038416602082015260806040820181905260009061393890830185612c00565b905082606083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161397157613971613949565b5060010190565b81810381811115610a0457610a04613949565b80820180821115610a0457610a04613949565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156139c657600080fd5b815161153f81612fba56fea2646970667358221220a33b2cc144eeee5c1a1dfc16a5b44dbcfad0aae7d4d00ea722ade087f00cdab064736f6c634300081300330000000000000000000000000b257fe969d8782facb4ec790682c1d4d3df1551000000000000000000000000b6b72f2a5ff537c0f0b21580b2bd644325411094
Deployed Bytecode
0x6080604052600436106102c95760003560e01c80637048027511610175578063ca7f3a5d116100dc578063d67dff0111610095578063da5b4ee71161006f578063da5b4ee7146108f0578063e2bbb15814610905578063e89d152b14610925578063f2fde38b1461095257600080fd5b8063d67dff0114610892578063d72dd172146108b0578063d8466121146108d057600080fd5b8063ca7f3a5d146107dd578063ca8e6c03146107fd578063d04323c51461081d578063d18df53c1461083d578063d3ffe67a1461085d578063d642086d1461087257600080fd5b80638f6693891161012e5780638f6693891461072a578063a52454d81461073d578063a69cde9a1461075d578063b2e0df961461077d578063b5b348b61461079d578063b777592b146107bd57600080fd5b80637048027514610679578063715018a61461069957806381b5e05e146106ae5780638227018f146106ce5780638b18c7e3146106ee5780638da5cb5b1461070c57600080fd5b806346430af1116102345780635aa4470f116101ed57806363a846f8116101c757806363a846f8146105d7578063641579a61461060757806369940d79146106275780636a34a03b1461065957600080fd5b80635aa4470f1461057557806360246c881461059557806362cf79b7146105b757600080fd5b806346430af1146104b55780634a9f1326146104d557806351eb05a6146104f55780635290e86e146105155780635312ea8e146105355780635958621e1461055557600080fd5b8063257664a411610286578063257664a4146103d45780632d4c6e8a146104365780633a58b91a1461044b57806340490a90146104605780634142d26714610475578063441a3e701461049557600080fd5b8063026549b5146102ce578063068bcd8d14610301578063150b7a021461032e5780631785f53c146103725780631f8434db146103945780632002ace0146103b4575b600080fd5b3480156102da57600080fd5b506102ee6102e9366004612be7565b610972565b6040519081526020015b60405180910390f35b34801561030d57600080fd5b5061032161031c366004612be7565b610a0a565b6040516102f89190612dcb565b34801561033a57600080fd5b50610359610349366004612eb9565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102f8565b34801561037e57600080fd5b5061039261038d366004612f38565b610d08565b005b3480156103a057600080fd5b506103926103af366004612f55565b610db0565b3480156103c057600080fd5b506103926103cf36600461323f565b610e77565b3480156103e057600080fd5b506103f46103ef36600461327b565b610fea565b6040516102f89190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b34801561044257600080fd5b506007546102ee565b34801561045757600080fd5b506004546102ee565b34801561046c57600080fd5b506005546102ee565b34801561048157600080fd5b506103926104903660046132ab565b61107d565b3480156104a157600080fd5b506103926104b0366004613316565b611169565b3480156104c157600080fd5b506103926104d0366004613316565b6111d9565b3480156104e157600080fd5b506103926104f0366004613338565b6112c1565b34801561050157600080fd5b50610392610510366004612be7565b61141a565b34801561052157600080fd5b506102ee61053036600461327b565b6114c8565b34801561054157600080fd5b50610392610550366004612be7565b611546565b34801561056157600080fd5b50610392610570366004612f38565b6115a6565b34801561058157600080fd5b50610392610590366004612f38565b611646565b3480156105a157600080fd5b506105aa6116e6565b6040516102f8919061337e565b3480156105c357600080fd5b506103926105d2366004612f55565b6119b6565b3480156105e357600080fd5b506105f76105f2366004612f38565b611a6f565b60405190151581526020016102f8565b34801561061357600080fd5b50610392610622366004612be7565b611af7565b34801561063357600080fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016102f8565b34801561066557600080fd5b506103926106743660046133e0565b611b7a565b34801561068557600080fd5b50610392610694366004612f38565b611bc0565b3480156106a557600080fd5b50610392611c62565b3480156106ba57600080fd5b506103926106c9366004613418565b611cc8565b3480156106da57600080fd5b506103926106e93660046133e0565b611d11565b3480156106fa57600080fd5b506003546001600160a01b0316610641565b34801561071857600080fd5b506000546001600160a01b0316610641565b61039261073836600461345a565b611d57565b34801561074957600080fd5b50610392610758366004613499565b611db5565b34801561076957600080fd5b506103926107783660046134f9565b611e68565b34801561078957600080fd5b50610392610798366004612be7565b611f37565b3480156107a957600080fd5b506103926107b8366004612f55565b611fba565b3480156107c957600080fd5b506103926107d83660046135ef565b612073565b3480156107e957600080fd5b506103926107f836600461362e565b6123a3565b34801561080957600080fd5b50610392610818366004612be7565b6124e8565b34801561082957600080fd5b50610392610838366004613418565b61256b565b34801561084957600080fd5b506102ee61085836600461327b565b61265b565b34801561086957600080fd5b506008546102ee565b34801561087e57600080fd5b5061039261088d3660046135ef565b612695565b34801561089e57600080fd5b506002546001600160a01b0316610641565b3480156108bc57600080fd5b506103926108cb366004613499565b61276a565b3480156108dc57600080fd5b506103926108eb36600461327b565b61281d565b3480156108fc57600080fd5b506006546102ee565b34801561091157600080fd5b50610392610920366004613316565b612856565b34801561093157600080fd5b5061094561094036600461327b565b612894565b6040516102f891906136e6565b34801561095e57600080fd5b5061039261096d366004612f38565b612927565b60006008828154811061098757610987613731565b60009182526020909120600890910201600101546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156109e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a049190613747565b92915050565b610a646040518061012001604052806060815260200160006001600160a01b031681526020016000151581526020016000815260200160008152602001600081526020016060815260200160608152602001606081525090565b60088281548110610a7757610a77613731565b906000526020600020906008020160405180610120016040529081600082018054610aa190613760565b80601f0160208091040260200160405190810160405280929190818152602001828054610acd90613760565b8015610b1a5780601f10610aef57610100808354040283529160200191610b1a565b820191906000526020600020905b815481529060010190602001808311610afd57829003601f168201915b505050918352505060018201546001600160a01b038116602080840191909152600160a01b90910460ff1615156040808401919091526002840154606084015260038401546080840152600484015460a084015260058401805482518185028101850190935280835260c0909401939192909190830182828015610bc757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ba9575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020016000905b82821015610ca1578382906000526020600020018054610c1490613760565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4090613760565b8015610c8d5780601f10610c6257610100808354040283529160200191610c8d565b820191906000526020600020905b815481529060010190602001808311610c7057829003601f168201915b505050505081526020019060010190610bf5565b50505050815260200160078201805480602002602001604051908101604052809291908181526020018280548015610cf857602002820191906000526020600020905b815481526020019060010190808311610ce4575b5050505050815250509050919050565b600033610d1d6000546001600160a01b031690565b6001600160a01b031603610d2f575060015b600354336001600160a01b0390911603610d47575060015b336000908152600b602052604090205460ff1615610d63575060015b600181151514610d8e5760405162461bcd60e51b8152600401610d859061379a565b60405180910390fd5b506001600160a01b03166000908152600b60205260409020805460ff19169055565b600033610dc56000546001600160a01b031690565b6001600160a01b031603610dd7575060015b600354336001600160a01b0390911603610def575060015b336000908152600b602052604090205460ff1615610e0b575060015b600181151514610e2d5760405162461bcd60e51b8152600401610d859061379a565b82846001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56884604051610e6991815260200190565b60405180910390a350505050565b600033610e8c6000546001600160a01b031690565b6001600160a01b031603610e9e575060015b600354336001600160a01b0390911603610eb6575060015b336000908152600b602052604090205460ff1615610ed2575060015b600181151514610ef45760405162461bcd60e51b8152600401610d859061379a565b60088054600181018255600082905283518492919091027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301908190610f3a9082613815565b5060208281015160018301805460408601511515600160a01b026001600160a81b03199091166001600160a01b0390931692909217919091179055606083015160028301556080830151600383015560a0830151600483015560c08301518051610faa9260058501920190612a42565b5060e08201518051610fc6916006840191602090910190612aa7565b506101008201518051610fe3916007840191602090910190612af9565b5050505050565b61101c6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b5060009182526009602090815260408084206001600160a01b0393909316845291815291819020815160a081018352815481526001820154938101939093526002810154918301919091526003810154606083015260040154608082015290565b6000336110926000546001600160a01b031690565b6001600160a01b0316036110a4575060015b600354336001600160a01b03909116036110bc575060015b336000908152600b602052604090205460ff16156110d8575060015b6001811515146110fa5760405162461bcd60e51b8152600401610d859061379a565b600354604051634142d26760e01b81526001600160a01b0390911690634142d267906111309088908890889088906004016138d4565b600060405180830381600087803b15801561114a57600080fd5b505af115801561115e573d6000803e3d6000fd5b505050505050505050565b600354604051630ad58d2f60e01b815260048101849052602481018390523360448201526001600160a01b0390911690630ad58d2f906064015b600060405180830381600087803b1580156111bd57600080fd5b505af11580156111d1573d6000803e3d6000fd5b505050505050565b6000336111ee6000546001600160a01b031690565b6001600160a01b031603611200575060015b600354336001600160a01b0390911603611218575060015b336000908152600b602052604090205460ff1615611234575060015b6001811515146112565760405162461bcd60e51b8152600401610d859061379a565b6003546040516346430af160e01b815260048101859052602481018490526001600160a01b03909116906346430af1906044015b600060405180830381600087803b1580156112a457600080fd5b505af11580156112b8573d6000803e3d6000fd5b50505050505050565b6000336112d66000546001600160a01b031690565b6001600160a01b0316036112e8575060015b600354336001600160a01b0390911603611300575060015b336000908152600b602052604090205460ff161561131c575060015b60018115151461133e5760405162461bcd60e51b8152600401610d859061379a565b816008848154811061135257611352613731565b6000918252602090912082516008909202019081906113719082613815565b5060208281015160018301805460408601511515600160a01b026001600160a81b03199091166001600160a01b0390931692909217919091179055606083015160028301556080830151600383015560a0830151600483015560c083015180516113e19260058501920190612a42565b5060e082015180516113fd916006840191602090910190612aa7565b5061010082015180516111d1916007840191602090910190612af9565b60003361142f6000546001600160a01b031690565b6001600160a01b031603611441575060015b600354336001600160a01b0390911603611459575060015b336000908152600b602052604090205460ff1615611475575060015b6001811515146114975760405162461bcd60e51b8152600401610d859061379a565b6003546040516328f582d360e11b8152600481018490526001600160a01b03909116906351eb05a6906024016111a3565b600354604051632948743760e11b8152600481018490526001600160a01b0383811660248301526000921690635290e86e906044015b602060405180830381865afa15801561151b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153f9190613747565b9392505050565b6003546040516302f940c760e41b8152600481018390523360248201526001600160a01b0390911690632f940c7090604401600060405180830381600087803b15801561159257600080fd5b505af1158015610fe3573d6000803e3d6000fd5b6000336115bb6000546001600160a01b031690565b6001600160a01b0316036115cd575060015b600354336001600160a01b03909116036115e5575060015b336000908152600b602052604090205460ff1615611601575060015b6001811515146116235760405162461bcd60e51b8152600401610d859061379a565b50600280546001600160a01b0319166001600160a01b0392909216919091179055565b60003361165b6000546001600160a01b031690565b6001600160a01b03160361166d575060015b600354336001600160a01b0390911603611685575060015b336000908152600b602052604090205460ff16156116a1575060015b6001811515146116c35760405162461bcd60e51b8152600401610d859061379a565b50600380546001600160a01b0319166001600160a01b0392909216919091179055565b60606008805480602002602001604051908101604052809291908181526020016000905b828210156119ad57838290600052602060002090600802016040518061012001604052908160008201805461173e90613760565b80601f016020809104026020016040519081016040528092919081815260200182805461176a90613760565b80156117b75780601f1061178c576101008083540402835291602001916117b7565b820191906000526020600020905b81548152906001019060200180831161179a57829003601f168201915b505050918352505060018201546001600160a01b038116602080840191909152600160a01b90910460ff1615156040808401919091526002840154606084015260038401546080840152600484015460a084015260058401805482518185028101850190935280835260c090940193919290919083018282801561186457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611846575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020016000905b8282101561193e5783829060005260206000200180546118b190613760565b80601f01602080910402602001604051908101604052809291908181526020018280546118dd90613760565b801561192a5780601f106118ff5761010080835404028352916020019161192a565b820191906000526020600020905b81548152906001019060200180831161190d57829003601f168201915b505050505081526020019060010190611892565b5050505081526020016007820180548060200260200160405190810160405280929190818152602001828054801561199557602002820191906000526020600020905b815481526020019060010190808311611981575b5050505050815250508152602001906001019061170a565b50505050905090565b6000336119cb6000546001600160a01b031690565b6001600160a01b0316036119dd575060015b600354336001600160a01b03909116036119f5575060015b336000908152600b602052604090205460ff1615611a11575060015b600181151514611a335760405162461bcd60e51b8152600401610d859061379a565b82846001600160a01b03167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae059584604051610e6991815260200190565b6000806001600160a01b038316611a8e6000546001600160a01b031690565b6001600160a01b031603611aa0575060015b6003546001600160a01b03808516911603611ab9575060015b6001600160a01b0383166000908152600b602052604090205460ff1615611ade575060015b6001600160a01b0383163003610a045750600192915050565b600033611b0c6000546001600160a01b031690565b6001600160a01b031603611b1e575060015b600354336001600160a01b0390911603611b36575060015b336000908152600b602052604090205460ff1615611b52575060015b600181151514611b745760405162461bcd60e51b8152600401610d859061379a565b50600555565b600354604051633134c11360e11b8152600481018590523360248201526001600160a01b038481166044830152606482018490529091169063626982269060840161128a565b600033611bd56000546001600160a01b031690565b6001600160a01b031603611be7575060015b600354336001600160a01b0390911603611bff575060015b336000908152600b602052604090205460ff1615611c1b575060015b600181151514611c3d5760405162461bcd60e51b8152600401610d859061379a565b506001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b03163314611cbc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d85565b611cc660006129f2565b565b604051635c46a7ef60e11b81523060048201526001600160a01b03848116602483015260448201849052608060648301526000608483015282169063b88d4fde9060a40161128a565b60035460405163882af3ef60e01b8152600481018590523360248201526001600160a01b038481166044830152606482018490529091169063882af3ef9060840161128a565b600354604051638f66938960e01b8152600481018690526001600160a01b03858116602483015260448201859052838116606483015290911690638f6693899034906084016000604051808303818588803b15801561114a57600080fd5b600033611dca6000546001600160a01b031690565b6001600160a01b031603611ddc575060015b600354336001600160a01b0390911603611df4575060015b336000908152600b602052604090205460ff1615611e10575060015b600181151514611e325760405162461bcd60e51b8152600401610d859061379a565b6003546040516314a48a9b60e31b81526001600160a01b039091169063a52454d89061113090889088908890889060040161390e565b600033611e7d6000546001600160a01b031690565b6001600160a01b031603611e8f575060015b600354336001600160a01b0390911603611ea7575060015b336000908152600b602052604090205460ff1615611ec3575060015b600181151514611ee55760405162461bcd60e51b8152600401610d859061379a565b5060009283526009602090815260408085206001600160a01b03909416855292815292829020815181559281015160018401559081015160028301556060810151600383015560800151600490910155565b600033611f4c6000546001600160a01b031690565b6001600160a01b031603611f5e575060015b600354336001600160a01b0390911603611f76575060015b336000908152600b602052604090205460ff1615611f92575060015b600181151514611fb45760405162461bcd60e51b8152600401610d859061379a565b50600755565b600033611fcf6000546001600160a01b031690565b6001600160a01b031603611fe1575060015b600354336001600160a01b0390911603611ff9575060015b336000908152600b602052604090205460ff1615612015575060015b6001811515146120375760405162461bcd60e51b8152600401610d859061379a565b82846001600160a01b03167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1584604051610e6991815260200190565b6000336120886000546001600160a01b031690565b6001600160a01b03160361209a575060015b600354336001600160a01b03909116036120b2575060015b336000908152600b602052604090205460ff16156120ce575060015b6001811515146120f05760405162461bcd60e51b8152600401610d859061379a565b6000805b6000868152600a602090815260408083206001600160a01b03891684529091529020548110156121e95783516000878152600a602090815260408083206001600160a01b038a81168552925290912080549190921691908390811061215b5761215b613731565b60009182526020909120600290910201546001600160a01b03161480156121ca57506020808501516000888152600a835260408082206001600160a01b038a168352909352919091208054839081106121b6576121b6613731565b906000526020600020906002020160010154145b156121d7578091506121e9565b806121e18161395f565b9150506120f4565b506000858152600a602090815260408083206001600160a01b0388168452909152902080548290811061221e5761221e613731565b60009182526020822060029091020180546001600160a01b031916815560010155805b6000868152600a602090815260408083206001600160a01b038916845290915290205461227090600190613978565b811015612341576000868152600a602090815260408083206001600160a01b038916845290915290206122a482600161398b565b815481106122b4576122b4613731565b60009182526020808320898452600a825260408085206001600160a01b038b1686529092529220805460029092029092019190839081106122f7576122f7613731565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b03909216919091178155600191820154910155806123398161395f565b915050612241565b506000858152600a602090815260408083206001600160a01b038816845290915290208054806123735761237361399e565b60008281526020812060026000199093019283020180546001600160a01b03191681556001015590555050505050565b6000336123b86000546001600160a01b031690565b6001600160a01b0316036123ca575060015b600354336001600160a01b03909116036123e2575060015b336000908152600b602052604090205460ff16156123fe575060015b6001811515146124205760405162461bcd60e51b8152600401610d859061379a565b6000848152600a602090815260408083206001600160a01b0387168452909152812061244b91612b34565b60005b8251811015610fe3576000858152600a602090815260408083206001600160a01b03881684529091529020835184908390811061248d5761248d613731565b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b0319166001600160a01b03909216919091178155910151910155806124e08161395f565b91505061244e565b6000336124fd6000546001600160a01b031690565b6001600160a01b03160361250f575060015b600354336001600160a01b0390911603612527575060015b336000908152600b602052604090205460ff1615612543575060015b6001811515146125655760405162461bcd60e51b8152600401610d859061379a565b50600455565b6000336125806000546001600160a01b031690565b6001600160a01b031603612592575060015b600354336001600160a01b03909116036125aa575060015b336000908152600b602052604090205460ff16156125c6575060015b6001811515146125e85760405162461bcd60e51b8152600401610d859061379a565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905283169063a9059cbb906044016020604051808303816000875af1158015612637573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe391906139b4565b6003546040516334637d4f60e21b8152600481018490526001600160a01b038381166024830152600092169063d18df53c906044016114fe565b6000336126aa6000546001600160a01b031690565b6001600160a01b0316036126bc575060015b600354336001600160a01b03909116036126d4575060015b336000908152600b602052604090205460ff16156126f0575060015b6001811515146127125760405162461bcd60e51b8152600401610d859061379a565b506000928352600a602090815260408085206001600160a01b0394851686528252842080546001808201835591865294829020835160029096020180546001600160a01b031916959094169490941783550151910155565b60003361277f6000546001600160a01b031690565b6001600160a01b031603612791575060015b600354336001600160a01b03909116036127a9575060015b336000908152600b602052604090205460ff16156127c5575060015b6001811515146127e75760405162461bcd60e51b8152600401610d859061379a565b600354604051636b96e8b960e11b81526001600160a01b039091169063d72dd1729061113090889088908890889060040161390e565b60035460405163d846612160e01b8152600481018490526001600160a01b0383811660248301529091169063d8466121906044016111a3565b600354604051638dbdbe6d60e01b815260048101849052602481018390523360448201526001600160a01b0390911690638dbdbe6d906064016111a3565b6000828152600a602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b8282101561291b576000848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016128d3565b50505050905092915050565b6000546001600160a01b031633146129815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d85565b6001600160a01b0381166129e65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d85565b6129ef816129f2565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215612a97579160200282015b82811115612a9757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612a62565b50612aa3929150612b55565b5090565b828054828255906000526020600020908101928215612aed579160200282015b82811115612aed5782518290612add9082613815565b5091602001919060010190612ac7565b50612aa3929150612b6a565b828054828255906000526020600020908101928215612a97579160200282015b82811115612a97578251825591602001919060010190612b19565b50805460008255600202906000526020600020908101906129ef9190612b87565b5b80821115612aa35760008155600101612b56565b80821115612aa3576000612b7e8282612bad565b50600101612b6a565b5b80821115612aa35780546001600160a01b031916815560006001820155600201612b88565b508054612bb990613760565b6000825580601f10612bc9575050565b601f0160209004906000526020600020908101906129ef9190612b55565b600060208284031215612bf957600080fd5b5035919050565b6000815180845260005b81811015612c2657602081850181015186830182015201612c0a565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501945080840160005b83811015612c7f5781516001600160a01b031687529582019590820190600101612c5a565b509495945050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015612cd2578284038952612cc0848351612c00565b98850198935090840190600101612ca8565b5091979650505050505050565b600081518084526020808501945080840160005b83811015612c7f57815187529582019590820190600101612cf3565b60006101208251818552612d2582860182612c00565b9150506020830151612d4260208601826001600160a01b03169052565b506040830151612d56604086018215159052565b50606083015160608501526080830151608085015260a083015160a085015260c083015184820360c0860152612d8c8282612c46565b91505060e083015184820360e0860152612da68282612c8a565b9150506101008084015185830382870152612dc18382612cdf565b9695505050505050565b60208152600061153f6020830184612d0f565b6001600160a01b03811681146129ef57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612e2c57612e2c612df3565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612e5a57612e5a612df3565b604052919050565b60006001600160401b03831115612e7b57612e7b612df3565b612e8e601f8401601f1916602001612e32565b9050828152838383011115612ea257600080fd5b828260208301376000602084830101529392505050565b60008060008060808587031215612ecf57600080fd5b8435612eda81612dde565b93506020850135612eea81612dde565b92506040850135915060608501356001600160401b03811115612f0c57600080fd5b8501601f81018713612f1d57600080fd5b612f2c87823560208401612e62565b91505092959194509250565b600060208284031215612f4a57600080fd5b813561153f81612dde565b600080600060608486031215612f6a57600080fd5b8335612f7581612dde565b95602085013595506040909401359392505050565b600082601f830112612f9b57600080fd5b61153f83833560208501612e62565b8035612fb581612dde565b919050565b80151581146129ef57600080fd5b8035612fb581612fba565b60006001600160401b03821115612fec57612fec612df3565b5060051b60200190565b600082601f83011261300757600080fd5b8135602061301c61301783612fd3565b612e32565b82815260059290921b8401810191818101908684111561303b57600080fd5b8286015b8481101561305f57803561305281612dde565b835291830191830161303f565b509695505050505050565b600082601f83011261307b57600080fd5b8135602061308b61301783612fd3565b82815260059290921b840181019181810190868411156130aa57600080fd5b8286015b8481101561305f5780356001600160401b038111156130cd5760008081fd5b6130db8986838b0101612f8a565b8452509183019183016130ae565b600082601f8301126130fa57600080fd5b8135602061310a61301783612fd3565b82815260059290921b8401810191818101908684111561312957600080fd5b8286015b8481101561305f578035835291830191830161312d565b6000610120828403121561315757600080fd5b61315f612e09565b905081356001600160401b038082111561317857600080fd5b61318485838601612f8a565b835261319260208501612faa565b60208401526131a360408501612fc8565b6040840152606084013560608401526080840135608084015260a084013560a084015260c08401359150808211156131da57600080fd5b6131e685838601612ff6565b60c084015260e08401359150808211156131ff57600080fd5b61320b8583860161306a565b60e08401526101009150818401358181111561322657600080fd5b613232868287016130e9565b8385015250505092915050565b60006020828403121561325157600080fd5b81356001600160401b0381111561326757600080fd5b61327384828501613144565b949350505050565b6000806040838503121561328e57600080fd5b8235915060208301356132a081612dde565b809150509250929050565b600080600080608085870312156132c157600080fd5b84356001600160401b038111156132d757600080fd5b6132e387828801612f8a565b9450506020850135925060408501356132fb81612dde565b9150606085013561330b81612fba565b939692955090935050565b6000806040838503121561332957600080fd5b50508035926020909101359150565b6000806040838503121561334b57600080fd5b8235915060208301356001600160401b0381111561336857600080fd5b61337485828601613144565b9150509250929050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156133d357603f198886030184526133c1858351612d0f565b945092850192908501906001016133a5565b5092979650505050505050565b6000806000606084860312156133f557600080fd5b83359250602084013561340781612dde565b929592945050506040919091013590565b60008060006060848603121561342d57600080fd5b833561343881612dde565b925060208401359150604084013561344f81612dde565b809150509250925092565b6000806000806080858703121561347057600080fd5b84359350602085013561348281612dde565b925060408501359150606085013561330b81612dde565b600080600080608085870312156134af57600080fd5b8435935060208501356134c181612dde565b925060408501356001600160401b038111156134dc57600080fd5b6134e887828801612f8a565b949793965093946060013593505050565b600080600083850360e081121561350f57600080fd5b84359350602085013561352181612dde565b925060a0603f198201121561353557600080fd5b5060405160a081018181106001600160401b038211171561355857613558612df3565b806040525060408501358152606085013560208201526080850135604082015260a0850135606082015260c08501356080820152809150509250925092565b6000604082840312156135a957600080fd5b604051604081018181106001600160401b03821117156135cb576135cb612df3565b60405290508082356135dc81612dde565b8152602092830135920191909152919050565b60008060006080848603121561360457600080fd5b83359250602084013561361681612dde565b91506136258560408601613597565b90509250925092565b60008060006060848603121561364357600080fd5b8335925060208085013561365681612dde565b92506040858101356001600160401b0381111561367257600080fd5b8601601f8101881361368357600080fd5b803561369161301782612fd3565b81815260069190911b8201840190848101908a8311156136b057600080fd5b928501925b828410156136d6576136c78b85613597565b825292840192908501906136b5565b8096505050505050509250925092565b602080825282518282018190526000919060409081850190868401855b82811015612cd257815180516001600160a01b03168552860151868501529284019290850190600101613703565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561375957600080fd5b5051919050565b600181811c9082168061377457607f821691505b60208210810361379457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526016908201527531b0b63632b91034b9903737ba1030b71030b236b4b760511b604082015260600190565b601f82111561381057600081815260208120601f850160051c810160208610156137f15750805b601f850160051c820191505b818110156111d1578281556001016137fd565b505050565b81516001600160401b0381111561382e5761382e612df3565b6138428161383c8454613760565b846137ca565b602080601f831160018114613877576000841561385f5750858301515b600019600386901b1c1916600185901b1785556111d1565b600085815260208120601f198616915b828110156138a657888601518255948401946001909101908401613887565b50858210156138c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080815260006138e76080830187612c00565b6020830195909552506001600160a01b039290921660408301521515606090910152919050565b8481526001600160a01b038416602082015260806040820181905260009061393890830185612c00565b905082606083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161397157613971613949565b5060010190565b81810381811115610a0457610a04613949565b80820180821115610a0457610a04613949565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156139c657600080fd5b815161153f81612fba56fea2646970667358221220a33b2cc144eeee5c1a1dfc16a5b44dbcfad0aae7d4d00ea722ade087f00cdab064736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000b257fe969d8782facb4ec790682c1d4d3df1551000000000000000000000000b6b72f2a5ff537c0f0b21580b2bd644325411094
-----Decoded View---------------
Arg [0] : _rewardToken (address): 0x0b257fe969d8782fAcb4ec790682C1d4d3dF1551
Arg [1] : _rewardWallet (address): 0xb6B72F2a5FF537C0F0B21580B2BD644325411094
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000b257fe969d8782facb4ec790682c1d4d3df1551
Arg [1] : 000000000000000000000000b6b72f2a5ff537c0f0b21580b2bd644325411094
Deployed Bytecode Sourcemap
20621:9296:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24036:129;;;;;;;;;;-1:-1:-1;24036:129:0;;;;;:::i;:::-;;:::i;:::-;;;345:25:1;;;333:2;318:18;24036:129:0;;;;;;;;23925:105;;;;;;;;;;-1:-1:-1;23925:105:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9348:207::-;;;;;;;;;;-1:-1:-1;9348:207:0;;;;;:::i;:::-;-1:-1:-1;;;9348:207:0;;;;;;;;;;-1:-1:-1;;;;;;6180:33:1;;;6162:52;;6150:2;6135:18;9348:207:0;6018:202:1;22678:95:0;;;;;;;;;;-1:-1:-1;22678:95:0;;;;;:::i;:::-;;:::i;:::-;;27217:143;;;;;;;;;;-1:-1:-1;27217:143:0;;;;;:::i;:::-;;:::i;26559:95::-;;;;;;;;;;-1:-1:-1;26559:95:0;;;;;:::i;:::-;;:::i;23527:133::-;;;;;;;;;;-1:-1:-1;23527:133:0;;;;;:::i;:::-;;:::i;:::-;;;;;;12175:4:1;12217:3;12206:9;12202:19;12194:27;;12254:6;12248:13;12237:9;12230:32;12318:4;12310:6;12306:17;12300:24;12293:4;12282:9;12278:20;12271:54;12381:4;12373:6;12369:17;12363:24;12356:4;12345:9;12341:20;12334:54;12444:4;12436:6;12432:17;12426:24;12419:4;12408:9;12404:20;12397:54;12507:4;12499:6;12495:17;12489:24;12482:4;12471:9;12467:20;12460:54;12031:489;;;;;23435:86:0;;;;;;;;;;-1:-1:-1;23505:8:0;;23435:86;;23127:100;;;;;;;;;;-1:-1:-1;23204:15:0;;23127:100;;23233:90;;;;;;;;;;-1:-1:-1;23305:10:0;;23233:90;;27583:187;;;;;;;;;;-1:-1:-1;27583:187:0;;;;;:::i;:::-;;:::i;28664:131::-;;;;;;;;;;-1:-1:-1;28664:131:0;;;;;:::i;:::-;;:::i;27776:133::-;;;;;;;;;;-1:-1:-1;27776:133:0;;;;;:::i;:::-;;:::i;26660:107::-;;;;;;;;;;-1:-1:-1;26660:107:0;;;;;:::i;:::-;;:::i;27915:105::-;;;;;;;;;;-1:-1:-1;27915:105:0;;;;;:::i;:::-;;:::i;29747:167::-;;;;;;;;;;-1:-1:-1;29747:167:0;;;;;:::i;:::-;;:::i;28801:123::-;;;;;;;;;;-1:-1:-1;28801:123:0;;;;;:::i;:::-;;:::i;24686:104::-;;;;;;;;;;-1:-1:-1;24686:104:0;;;;;:::i;:::-;;:::i;24796:108::-;;;;;;;;;;-1:-1:-1;24796:108:0;;;;;:::i;:::-;;:::i;23823:96::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;27366:161::-;;;;;;;;;;-1:-1:-1;27366:161:0;;;;;:::i;:::-;;:::i;24270:360::-;;;;;;;;;;-1:-1:-1;24270:360:0;;;;;:::i;:::-;;:::i;:::-;;;14892:14:1;;14885:22;14867:41;;14855:2;14840:18;24270:360:0;14727:187:1;25024:98:0;;;;;;;;;;-1:-1:-1;25024:98:0;;;;;:::i;:::-;;:::i;22828:91::-;;;;;;;;;;-1:-1:-1;22900:11:0;;-1:-1:-1;;;;;22900:11:0;22828:91;;;-1:-1:-1;;;;;15097:32:1;;;15079:51;;15067:2;15052:18;22828:91:0;14919:217:1;28930:154:0;;;;;;;;;;-1:-1:-1;28930:154:0;;;;;:::i;:::-;;:::i;22581:91::-;;;;;;;;;;-1:-1:-1;22581:91:0;;;;;:::i;:::-;;:::i;772:103::-;;;;;;;;;;;;;:::i;26919:145::-;;;;;;;;;;-1:-1:-1;26919:145:0;;;;;:::i;:::-;;:::i;29090:158::-;;;;;;;;;;-1:-1:-1;29090:158:0;;;;;:::i;:::-;;:::i;23025:96::-;;;;;;;;;;-1:-1:-1;23100:13:0;;-1:-1:-1;;;;;23100:13:0;23025:96;;549:87;;;;;;;;;;-1:-1:-1;595:7:0;622:6;-1:-1:-1;;;;;622:6:0;549:87;;29381:191;;;;;;:::i;:::-;;:::i;28250:218::-;;;;;;;;;;-1:-1:-1;28250:218:0;;;;;:::i;:::-;;:::i;25228:134::-;;;;;;;;;;-1:-1:-1;25228:134:0;;;;;:::i;:::-;;:::i;25128:94::-;;;;;;;;;;-1:-1:-1;25128:94:0;;;;;:::i;:::-;;:::i;27070:141::-;;;;;;;;;;-1:-1:-1;27070:141:0;;;;;:::i;:::-;;:::i;25846:707::-;;;;;;;;;;-1:-1:-1;25846:707:0;;;;;:::i;:::-;;:::i;25545:295::-;;;;;;;;;;-1:-1:-1;25545:295:0;;;;;:::i;:::-;;:::i;24910:108::-;;;;;;;;;;-1:-1:-1;24910:108:0;;;;;:::i;:::-;;:::i;26773:140::-;;;;;;;;;;-1:-1:-1;26773:140:0;;;;;:::i;:::-;;:::i;29578:163::-;;;;;;;;;;-1:-1:-1;29578:163:0;;;;;:::i;:::-;;:::i;24171:93::-;;;;;;;;;;-1:-1:-1;24241:8:0;:15;24171:93;;25368:171;;;;;;;;;;-1:-1:-1;25368:171:0;;;;;:::i;:::-;;:::i;22925:94::-;;;;;;;;;;-1:-1:-1;22999:12:0;;-1:-1:-1;;;;;22999:12:0;22925:94;;28026:218;;;;;;;;;;-1:-1:-1;28026:218:0;;;;;:::i;:::-;;:::i;29254:121::-;;;;;;;;;;-1:-1:-1;29254:121:0;;;;;:::i;:::-;;:::i;23329:100::-;;;;;;;;;;-1:-1:-1;23406:15:0;;23329:100;;28529:129;;;;;;;;;;-1:-1:-1;28529:129:0;;;;;:::i;:::-;;:::i;23666:151::-;;;;;;;;;;-1:-1:-1;23666:151:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;883:201::-;;;;;;;;;;-1:-1:-1;883:201:0;;;;;:::i;:::-;;:::i;24036:129::-;24083:7;24110:8;24119:4;24110:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:22;;;:47;;-1:-1:-1;;;24110:47:0;;24151:4;24110:47;;;15079:51:1;-1:-1:-1;;;;;24110:22:0;;;;:32;;15052:18:1;;24110:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24103:54;24036:129;-1:-1:-1;;24036:129:0:o;23925:105::-;23973:15;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23973:15:0;24008:8;24017:4;24008:14;;;;;;;;:::i;:::-;;;;;;;;;;;24001:21;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24001:21:0;;;-1:-1:-1;;24001:21:0;;;;-1:-1:-1;;;;;24001:21:0;;;;;;;;;;-1:-1:-1;;;24001:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24001:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23925:105;;;:::o;22678:95::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;22742:15:0::1;22760:5;22742:15:::0;;;:6:::1;:15;::::0;;;;:23;;-1:-1:-1;;22742:23:0::1;::::0;;22678:95::o;27217:143::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;27338:4:::1;27328:8;-1:-1:-1::0;;;;;27319:33:0::1;;27344:7;27319:33;;;;345:25:1::0;;333:2;318:18;;199:177;27319:33:0::1;;;;;;;;22084:293:::0;27217:143;;;:::o;26559:95::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;26627:8:::1;:19:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;26627:19:0;;;;;26641:4;;26627:19;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;26627:19:0::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;;-1:-1:-1::0;;;26627:19:0::1;-1:-1:-1::0;;;;;;26627:19:0;;;-1:-1:-1;;;;;26627:19:0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;26627:19:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;26627:19:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;;22084:293:::0;26559:95;:::o;23527:133::-;23593:15;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23593:15:0;-1:-1:-1;23628:14:0;;;;:8;:14;;;;;;;;-1:-1:-1;;;;;23628:24:0;;;;;;;;;;;;;23621:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23527:133::o;27583:187::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;27703:13:::1;::::0;27697:65:::1;::::0;-1:-1:-1;;;27697:65:0;;-1:-1:-1;;;;;27703:13:0;;::::1;::::0;27697:28:::1;::::0;:65:::1;::::0;27726:5;;27733:11;;27746:8;;27756:5;;27697:65:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22084:293:::0;27583:187;;;;:::o;28664:131::-;28737:13;;28731:56;;-1:-1:-1;;;28731:56:0;;;;;25815:25:1;;;25856:18;;;25849:34;;;28776:10:0;25899:18:1;;;25892:60;-1:-1:-1;;;;;28737:13:0;;;;28731:29;;25788:18:1;;28731:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28664:131;;:::o;27776:133::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;27860:13:::1;::::0;27854:47:::1;::::0;-1:-1:-1;;;27854:47:0;;::::1;::::0;::::1;26137:25:1::0;;;26178:18;;;26171:34;;;-1:-1:-1;;;;;27860:13:0;;::::1;::::0;27854:28:::1;::::0;26110:18:1;;27854:47:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22084:293:::0;27776:133;;:::o;26660:107::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;26754:5:::1;26737:8;26746:4;26737:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:22;;:14:::1;::::0;;::::1;;::::0;;;:22:::1;::::0;:14;:22:::1;:::i;:::-;-1:-1:-1::0;26737:22:0::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;;-1:-1:-1::0;;;26737:22:0::1;-1:-1:-1::0;;;;;;26737:22:0;;;-1:-1:-1;;;;;26737:22:0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;26737:22:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;26737:22:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;27915:105::-:0;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;27981:13:::1;::::0;27975:37:::1;::::0;-1:-1:-1;;;27975:37:0;;::::1;::::0;::::1;345:25:1::0;;;-1:-1:-1;;;;;27981:13:0;;::::1;::::0;27975:31:::1;::::0;318:18:1;;27975:37:0::1;199:177:1::0;29747:167:0;29859:13;;29853:53;;-1:-1:-1;;;29853:53:0;;;;;26390:25:1;;;-1:-1:-1;;;;;26451:32:1;;;26431:18;;;26424:60;29826:7:0;;29859:13;;29853:37;;26363:18:1;;29853:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29846:60;29747:167;-1:-1:-1;;;29747:167:0:o;28801:123::-;28866:13;;28860:56;;-1:-1:-1;;;28860:56:0;;;;;26390:25:1;;;28905:10:0;26431:18:1;;;26424:60;-1:-1:-1;;;;;28866:13:0;;;;28860:38;;26363:18:1;;28860:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24686:104;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;-1:-1:-1;24757:12:0::1;:25:::0;;-1:-1:-1;;;;;;24757:25:0::1;-1:-1:-1::0;;;;;24757:25:0;;;::::1;::::0;;;::::1;::::0;;24686:104::o;24796:108::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;-1:-1:-1;24869:13:0::1;:27:::0;;-1:-1:-1;;;;;;24869:27:0::1;-1:-1:-1::0;;;;;24869:27:0;;;::::1;::::0;;;::::1;::::0;;24796:108::o;23823:96::-;23866:17;23903:8;23896:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23896:15:0;;;-1:-1:-1;;23896:15:0;;;;-1:-1:-1;;;;;23896:15:0;;;;;;;;;;-1:-1:-1;;;23896:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23896:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23823:96;:::o;27366:161::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;27505:4:::1;27495:8;-1:-1:-1::0;;;;;27477:42:0::1;;27511:7;27477:42;;;;345:25:1::0;;333:2;318:18;;199:177;24270:360:0;24323:4;;-1:-1:-1;;;;;24377:19:0;;:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;24377:7;-1:-1:-1;;;;;24377:19:0;;24373:46;;-1:-1:-1;24412:4:0;24373:46;24433:13;;-1:-1:-1;;;;;24433:25:0;;;:13;;:25;24429:52;;-1:-1:-1;24474:4:0;24429:52;-1:-1:-1;;;;;24495:16:0;;;;;;:6;:16;;;;;;;;24491:43;;;-1:-1:-1;24527:4:0;24491:43;-1:-1:-1;;;;;24548:25:0;;24556:4;24548:25;24544:52;;-1:-1:-1;24589:4:0;24613:9;24270:360;-1:-1:-1;;24270:360:0:o;25024:98::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;-1:-1:-1;25092:10:0::1;:22:::0;25024:98::o;28930:154::-;29018:13;;29012:64;;-1:-1:-1;;;29012:64:0;;;;;26741:25:1;;;29045:10:0;26820:18:1;;;26813:43;-1:-1:-1;;;;;26892:15:1;;;26872:18;;;26865:43;26924:18;;;26917:34;;;29018:13:0;;;;29012:26;;26713:19:1;;29012:64:0;26495:462:1;22581:91:0;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;22642:15:0::1;;::::0;;;:6:::1;:15;::::0;;;;:22;;-1:-1:-1;;22642:22:0::1;22660:4;22642:22;::::0;;22581:91::o;772:103::-;595:7;622:6;-1:-1:-1;;;;;622:6:0;179:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;27164:2:1;676:68:0;;;27146:21:1;;;27183:18;;;27176:30;27242:34;27222:18;;;27215:62;27294:18;;676:68:0;26962:356:1;676:68:0;837:30:::1;864:1;837:18;:30::i;:::-;772:103::o:0;26919:145::-;27001:55;;-1:-1:-1;;;27001:55:0;;27031:4;27001:55;;;27628:34:1;-1:-1:-1;;;;;27698:15:1;;;27678:18;;;27671:43;27730:18;;;27723:34;;;27793:3;27773:18;;;27766:31;-1:-1:-1;27813:19:1;;;27806:30;27001:21:0;;;;;27853:19:1;;27001:55:0;27323:555:1;29090:158:0;29180:13;;29174:66;;-1:-1:-1;;;29174:66:0;;;;;26741:25:1;;;29209:10:0;26820:18:1;;;26813:43;-1:-1:-1;;;;;26892:15:1;;;26872:18;;;26865:43;26924:18;;;26917:34;;;29180:13:0;;;;29174:28;;26713:19:1;;29174:66:0;26495:462:1;29381:191:0;29493:13;;29487:77;;-1:-1:-1;;;29487:77:0;;;;;28114:25:1;;;-1:-1:-1;;;;;28213:15:1;;;28193:18;;;28186:43;28245:18;;;28238:34;;;28308:15;;;28288:18;;;28281:43;29493:13:0;;;;29487:26;;29521:9;;28086:19:1;;29487:77:0;;;;;;;;;;;;;;;;;;;28250:218;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;28387:13:::1;::::0;28381:79:::1;::::0;-1:-1:-1;;;28381:79:0;;-1:-1:-1;;;;;28387:13:0;;::::1;::::0;28381:31:::1;::::0;:79:::1;::::0;28413:4;;28419:8;;28429:16;;28447:12;;28381:79:::1;;;:::i;25228:134::-:0;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;-1:-1:-1;25322:14:0::1;::::0;;;:8:::1;:14;::::0;;;;;;;-1:-1:-1;;;;;25322:24:0;;::::1;::::0;;;;;;;;;:32;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;::::0;25228:134::o;25128:94::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;-1:-1:-1;25194:8:0::1;:20:::0;25128:94::o;27070:141::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;27189:4:::1;27179:8;-1:-1:-1::0;;;;;27171:32:0::1;;27195:7;27171:32;;;;345:25:1::0;;333:2;318:18;;199:177;25846:707:0;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;25964:7:::1;25990:6:::0;25986:291:::1;26006:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;26006:28:0;::::1;::::0;;;;;;;:35;26002:39;::::1;25986:291;;;26110:21:::0;;::::1;26067:18:::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;26067:28:0;;::::1;::::0;;;;;;;:31;;:64;;;::::1;::::0;:28;26096:1;;26067:31;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:39:::0;-1:-1:-1;;;;;26067:39:0::1;:64;:132:::0;::::1;;;-1:-1:-1::0;26178:21:0::1;::::0;;::::1;::::0;26135:18:::1;::::0;;;:12:::1;:18:::0;;;;;;-1:-1:-1;;;;;26135:28:0;::::1;::::0;;;;;;;;;:31;;26164:1;;26135:31;::::1;;;;;:::i;:::-;;;;;;;;;;;:39;;;:64;26067:132;26063:203;;;26225:1;26220:6;;26245:5;;26063:203;26043:3:::0;::::1;::::0;::::1;:::i;:::-;;;;25986:291;;;-1:-1:-1::0;26294:18:0::1;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;26294:28:0;::::1;::::0;;;;;;;:32;;26323:2;;26294:32;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;;::::1;;26287:39:::0;;-1:-1:-1;;;;;;26287:39:0::1;::::0;;;::::1;::::0;26350:2;26337:164:::1;26358:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;26358:28:0;::::1;::::0;;;;;;;:35;:37:::1;::::0;26394:1:::1;::::0;26358:37:::1;:::i;:::-;26354:1;:41;26337:164;;;26450:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;26450:28:0;::::1;::::0;;;;;;;26479:3:::1;:1:::0;26481::::1;26479:3;:::i;:::-;26450:33;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;26416:18;;;:12:::1;:18:::0;;;;;;-1:-1:-1;;;;;26416:28:0;::::1;::::0;;;;;;;:31;;26450:33:::1;::::0;;::::1;::::0;;::::1;::::0;26416:28;26445:1;;26416:31;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:67;;:31:::1;::::0;;::::1;;:67:::0;;-1:-1:-1;;;;;;26416:67:0::1;-1:-1:-1::0;;;;;26416:67:0;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;26397:3;::::1;::::0;::::1;:::i;:::-;;;;26337:164;;;-1:-1:-1::0;26511:18:0::1;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;26511:28:0;::::1;::::0;;;;;;;:34;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;26511:34:0;;;;;::::1;;::::0;;-1:-1:-1;;;;;;26511:34:0::1;::::0;;::::1;;::::0;;;-1:-1:-1;;;;;25846:707:0:o;25545:295::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;25669:18:::1;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;25669:28:0;::::1;::::0;;;;;;;25662:35:::1;::::0;::::1;:::i;:::-;25712:6;25708:125;25728:13;:20;25724:1;:24;25708:125;;;25770:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;25770:28:0;::::1;::::0;;;;;;;25804:16;;:13;;25818:1;;25804:16;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;25770:51;;::::1;::::0;;::::1;::::0;;-1:-1:-1;25770:51:0;;;;;;;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;;;;;;25770:51:0::1;-1:-1:-1::0;;;;;25770:51:0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;25750:3;::::1;::::0;::::1;:::i;:::-;;;;25708:125;;24910:108:::0;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;-1:-1:-1;24983:15:0::1;:27:::0;24910:108::o;26773:140::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;26871:34:::1;::::0;-1:-1:-1;;;26871:34:0;;-1:-1:-1;;;;;29675:32:1;;;26871:34:0::1;::::0;::::1;29657:51:1::0;29724:18;;;29717:34;;;26871:15:0;::::1;::::0;::::1;::::0;29630:18:1;;26871:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29578:163::-:0;29688:13;;29682:51;;-1:-1:-1;;;29682:51:0;;;;;26390:25:1;;;-1:-1:-1;;;;;26451:32:1;;;26431:18;;;26424:60;29655:7:0;;29688:13;;29682:35;;26363:18:1;;29682:51:0;26216:274:1;25368:171:0;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;-1:-1:-1;25483:18:0::1;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;25483:28:0;;::::1;::::0;;;;;;:48;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;;;;;;25483:48:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;25368:171::o;28026:218::-;22095:14;22143:10;22132:7;595;622:6;-1:-1:-1;;;;;622:6:0;;549:87;22132:7;-1:-1:-1;;;;;22132:21:0;;22128:48;;-1:-1:-1;22169:4:0;22128:48;22190:13;;22207:10;-1:-1:-1;;;;;22190:13:0;;;:27;22186:54;;-1:-1:-1;22233:4:0;22186:54;22261:10;22254:18;;;;:6;:18;;;;;;;;22250:45;;;-1:-1:-1;22288:4:0;22250:45;22326:4;22313:17;;;;22305:52;;;;-1:-1:-1;;;22305:52:0;;;;;;;:::i;:::-;28163:13:::1;::::0;28157:79:::1;::::0;-1:-1:-1;;;28157:79:0;;-1:-1:-1;;;;;28163:13:0;;::::1;::::0;28157:31:::1;::::0;:79:::1;::::0;28189:4;;28195:8;;28205:16;;28223:12;;28157:79:::1;;;:::i;29254:121::-:0;29328:13;;29322:45;;-1:-1:-1;;;29322:45:0;;;;;26390:25:1;;;-1:-1:-1;;;;;26451:32:1;;;26431:18;;;26424:60;29328:13:0;;;;29322:29;;26363:18:1;;29322:45:0;26216:274:1;28529:129:0;28601:13;;28595:55;;-1:-1:-1;;;28595:55:0;;;;;25815:25:1;;;25856:18;;;25849:34;;;28639:10:0;25899:18:1;;;25892:60;-1:-1:-1;;;;;28601:13:0;;;;28595:28;;25788:18:1;;28595:55:0;25613:345:1;23666:151:0;23781:18;;;;:12;:18;;;;;;;;-1:-1:-1;;;;;23781:28:0;;;;;;;;;23774:35;;;;;;;;;;;;;;;;;23740:21;;23774:35;;23781:28;;23774:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23774:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23666:151;;;;:::o;883:201::-;595:7;622:6;-1:-1:-1;;;;;622:6:0;179:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;27164:2:1;676:68:0;;;27146:21:1;;;27183:18;;;27176:30;27242:34;27222:18;;;27215:62;27294:18;;676:68:0;26962:356:1;676:68:0;-1:-1:-1;;;;;972:22:0;::::1;964:73;;;::::0;-1:-1:-1;;;964:73:0;;30214:2:1;964:73:0::1;::::0;::::1;30196:21:1::0;30253:2;30233:18;;;30226:30;30292:34;30272:18;;;30265:62;-1:-1:-1;;;30343:18:1;;;30336:36;30389:19;;964:73:0::1;30012:402:1::0;964:73:0::1;1048:28;1067:8;1048:18;:28::i;:::-;883:201:::0;:::o;1092:191::-;1166:16;1185:6;;-1:-1:-1;;;;;1202:17:0;;;-1:-1:-1;;;;;;1202:17:0;;;;;;1235:40;;1185:6;;;;;;;1235:40;;1166:16;1235:40;1155:128;1092:191;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;381:423::-;423:3;461:5;455:12;488:6;483:3;476:19;513:1;523:162;537:6;534:1;531:13;523:162;;;599:4;655:13;;;651:22;;645:29;627:11;;;623:20;;616:59;552:12;523:162;;;527:3;730:1;723:4;714:6;709:3;705:16;701:27;694:38;793:4;786:2;782:7;777:2;769:6;765:15;761:29;756:3;752:39;748:50;741:57;;;381:423;;;;:::o;1022:469::-;1083:3;1121:5;1115:12;1148:6;1143:3;1136:19;1174:4;1203:2;1198:3;1194:12;1187:19;;1240:2;1233:5;1229:14;1261:1;1271:195;1285:6;1282:1;1279:13;1271:195;;;1350:13;;-1:-1:-1;;;;;1346:39:1;1334:52;;1406:12;;;;1441:15;;;;1382:1;1300:9;1271:195;;;-1:-1:-1;1482:3:1;;1022:469;-1:-1:-1;;;;;1022:469:1:o;1496:616::-;1548:3;1586:5;1580:12;1613:6;1608:3;1601:19;1639:4;1680:2;1675:3;1671:12;1705:11;1732;1725:18;;1782:6;1779:1;1775:14;1768:5;1764:26;1752:38;;1824:2;1817:5;1813:14;1845:1;1855:231;1869:6;1866:1;1863:13;1855:231;;;1940:5;1934:4;1930:16;1925:3;1918:29;1968:38;2001:4;1992:6;1986:13;1968:38;:::i;:::-;2064:12;;;;1960:46;-1:-1:-1;2029:15:1;;;;1891:1;1884:9;1855:231;;;-1:-1:-1;2102:4:1;;1496:616;-1:-1:-1;;;;;;;1496:616:1:o;2117:435::-;2170:3;2208:5;2202:12;2235:6;2230:3;2223:19;2261:4;2290:2;2285:3;2281:12;2274:19;;2327:2;2320:5;2316:14;2348:1;2358:169;2372:6;2369:1;2366:13;2358:169;;;2433:13;;2421:26;;2467:12;;;;2502:15;;;;2394:1;2387:9;2358:169;;2557:1172;2608:3;2636:6;2677:5;2671:12;2704:2;2699:3;2692:15;2728:45;2769:2;2764:3;2760:12;2746;2728:45;:::i;:::-;2716:57;;;2821:4;2814:5;2810:16;2804:23;2836:58;2888:4;2883:3;2879:14;2863;-1:-1:-1;;;;;883:31:1;871:44;;809:112;2836:58;;2942:4;2935:5;2931:16;2925:23;2957:47;2998:4;2993:3;2989:14;2973;996:13;989:21;977:34;;926:91;2957:47;;3053:4;3046:5;3042:16;3036:23;3029:4;3024:3;3020:14;3013:47;3109:4;3102:5;3098:16;3092:23;3085:4;3080:3;3076:14;3069:47;3165:4;3158:5;3154:16;3148:23;3141:4;3136:3;3132:14;3125:47;3220:4;3213:5;3209:16;3203:23;3268:3;3262:4;3258:14;3251:4;3246:3;3242:14;3235:38;3296:58;3349:4;3333:14;3296:58;:::i;:::-;3282:72;;;3402:4;3395:5;3391:16;3385:23;3452:3;3444:6;3440:16;3433:4;3428:3;3424:14;3417:40;3480:51;3524:6;3508:14;3480:51;:::i;:::-;3466:65;;;3550:6;3604:2;3597:5;3593:14;3587:21;3650:3;3642:6;3638:16;3633:2;3628:3;3624:12;3617:38;3671:52;3716:6;3700:14;3671:52;:::i;:::-;3664:59;2557:1172;-1:-1:-1;;;;;;2557:1172:1:o;3734:261::-;3915:2;3904:9;3897:21;3878:4;3935:54;3985:2;3974:9;3970:18;3962:6;3935:54;:::i;4000:131::-;-1:-1:-1;;;;;4075:31:1;;4065:42;;4055:70;;4121:1;4118;4111:12;4136:127;4197:10;4192:3;4188:20;4185:1;4178:31;4228:4;4225:1;4218:15;4252:4;4249:1;4242:15;4268:255;4340:2;4334:9;4382:6;4370:19;;-1:-1:-1;;;;;4404:34:1;;4440:22;;;4401:62;4398:88;;;4466:18;;:::i;:::-;4502:2;4495:22;4268:255;:::o;4528:275::-;4599:2;4593:9;4664:2;4645:13;;-1:-1:-1;;4641:27:1;4629:40;;-1:-1:-1;;;;;4684:34:1;;4720:22;;;4681:62;4678:88;;;4746:18;;:::i;:::-;4782:2;4775:22;4528:275;;-1:-1:-1;4528:275:1:o;4808:406::-;4872:5;-1:-1:-1;;;;;4898:6:1;4895:30;4892:56;;;4928:18;;:::i;:::-;4966:57;5011:2;4990:15;;-1:-1:-1;;4986:29:1;5017:4;4982:40;4966:57;:::i;:::-;4957:66;;5046:6;5039:5;5032:21;5086:3;5077:6;5072:3;5068:16;5065:25;5062:45;;;5103:1;5100;5093:12;5062:45;5152:6;5147:3;5140:4;5133:5;5129:16;5116:43;5206:1;5199:4;5190:6;5183:5;5179:18;5175:29;5168:40;4808:406;;;;;:::o;5219:794::-;5314:6;5322;5330;5338;5391:3;5379:9;5370:7;5366:23;5362:33;5359:53;;;5408:1;5405;5398:12;5359:53;5447:9;5434:23;5466:31;5491:5;5466:31;:::i;:::-;5516:5;-1:-1:-1;5573:2:1;5558:18;;5545:32;5586:33;5545:32;5586:33;:::i;:::-;5638:7;-1:-1:-1;5692:2:1;5677:18;;5664:32;;-1:-1:-1;5747:2:1;5732:18;;5719:32;-1:-1:-1;;;;;5763:30:1;;5760:50;;;5806:1;5803;5796:12;5760:50;5829:22;;5882:4;5874:13;;5870:27;-1:-1:-1;5860:55:1;;5911:1;5908;5901:12;5860:55;5934:73;5999:7;5994:2;5981:16;5976:2;5972;5968:11;5934:73;:::i;:::-;5924:83;;;5219:794;;;;;;;:::o;6225:247::-;6284:6;6337:2;6325:9;6316:7;6312:23;6308:32;6305:52;;;6353:1;6350;6343:12;6305:52;6392:9;6379:23;6411:31;6436:5;6411:31;:::i;6477:383::-;6554:6;6562;6570;6623:2;6611:9;6602:7;6598:23;6594:32;6591:52;;;6639:1;6636;6629:12;6591:52;6678:9;6665:23;6697:31;6722:5;6697:31;:::i;:::-;6747:5;6799:2;6784:18;;6771:32;;-1:-1:-1;6850:2:1;6835:18;;;6822:32;;6477:383;-1:-1:-1;;;6477:383:1:o;6865:221::-;6908:5;6961:3;6954:4;6946:6;6942:17;6938:27;6928:55;;6979:1;6976;6969:12;6928:55;7001:79;7076:3;7067:6;7054:20;7047:4;7039:6;7035:17;7001:79;:::i;7091:142::-;7167:20;;7196:31;7167:20;7196:31;:::i;:::-;7091:142;;;:::o;7238:118::-;7324:5;7317:13;7310:21;7303:5;7300:32;7290:60;;7346:1;7343;7336:12;7361:128;7426:20;;7455:28;7426:20;7455:28;:::i;7494:191::-;7562:4;-1:-1:-1;;;;;7587:6:1;7584:30;7581:56;;;7617:18;;:::i;:::-;-1:-1:-1;7662:1:1;7658:14;7674:4;7654:25;;7494:191::o;7690:753::-;7752:5;7805:3;7798:4;7790:6;7786:17;7782:27;7772:55;;7823:1;7820;7813:12;7772:55;7859:6;7846:20;7885:4;7909:68;7925:51;7973:2;7925:51;:::i;:::-;7909:68;:::i;:::-;8011:15;;;8097:1;8093:10;;;;8081:23;;8077:32;;;8042:12;;;;8121:15;;;8118:35;;;8149:1;8146;8139:12;8118:35;8185:2;8177:6;8173:15;8197:217;8213:6;8208:3;8205:15;8197:217;;;8293:3;8280:17;8310:31;8335:5;8310:31;:::i;:::-;8354:18;;8392:12;;;;8230;;8197:217;;;-1:-1:-1;8432:5:1;7690:753;-1:-1:-1;;;;;;7690:753:1:o;8448:896::-;8501:5;8554:3;8547:4;8539:6;8535:17;8531:27;8521:55;;8572:1;8569;8562:12;8521:55;8608:6;8595:20;8634:4;8658:68;8674:51;8722:2;8674:51;:::i;8658:68::-;8760:15;;;8846:1;8842:10;;;;8830:23;;8826:32;;;8791:12;;;;8870:15;;;8867:35;;;8898:1;8895;8888:12;8867:35;8934:2;8926:6;8922:15;8946:369;8962:6;8957:3;8954:15;8946:369;;;9048:3;9035:17;-1:-1:-1;;;;;9071:11:1;9068:35;9065:125;;;9144:1;9173:2;9169;9162:14;9065:125;9215:57;9268:3;9263:2;9249:11;9241:6;9237:24;9233:33;9215:57;:::i;:::-;9203:70;;-1:-1:-1;9293:12:1;;;;8979;;8946:369;;9349:670;9403:5;9456:3;9449:4;9441:6;9437:17;9433:27;9423:55;;9474:1;9471;9464:12;9423:55;9510:6;9497:20;9536:4;9560:68;9576:51;9624:2;9576:51;:::i;9560:68::-;9662:15;;;9748:1;9744:10;;;;9732:23;;9728:32;;;9693:12;;;;9772:15;;;9769:35;;;9800:1;9797;9790:12;9769:35;9836:2;9828:6;9824:15;9848:142;9864:6;9859:3;9856:15;9848:142;;;9930:17;;9918:30;;9968:12;;;;9881;;9848:142;;10024:1330;10079:5;10127:6;10115:9;10110:3;10106:19;10102:32;10099:52;;;10147:1;10144;10137:12;10099:52;10169:22;;:::i;:::-;10160:31;;10227:9;10214:23;-1:-1:-1;;;;;10297:2:1;10289:6;10286:14;10283:34;;;10313:1;10310;10303:12;10283:34;10340:46;10382:3;10373:6;10362:9;10358:22;10340:46;:::i;:::-;10333:5;10326:61;10419:46;10461:2;10450:9;10446:18;10419:46;:::i;:::-;10414:2;10407:5;10403:14;10396:70;10498:35;10529:2;10518:9;10514:18;10498:35;:::i;:::-;10493:2;10486:5;10482:14;10475:59;10594:2;10583:9;10579:18;10566:32;10561:2;10554:5;10550:14;10543:56;10660:3;10649:9;10645:19;10632:33;10626:3;10619:5;10615:15;10608:58;10727:3;10716:9;10712:19;10699:33;10693:3;10686:5;10682:15;10675:58;10786:3;10775:9;10771:19;10758:33;10742:49;;10816:2;10806:8;10803:16;10800:36;;;10832:1;10829;10822:12;10800:36;10869:67;10932:3;10921:8;10910:9;10906:24;10869:67;:::i;:::-;10863:3;10856:5;10852:15;10845:92;10990:3;10979:9;10975:19;10962:33;10946:49;;11020:2;11010:8;11007:16;11004:36;;;11036:1;11033;11026:12;11004:36;11073:58;11127:3;11116:8;11105:9;11101:24;11073:58;:::i;:::-;11067:3;11060:5;11056:15;11049:83;11151:3;11141:13;;11207:2;11196:9;11192:18;11179:32;11236:2;11226:8;11223:16;11220:36;;;11252:1;11249;11242:12;11220:36;11288:59;11343:3;11332:8;11321:9;11317:24;11288:59;:::i;:::-;11283:2;11276:5;11272:14;11265:83;;;;10024:1330;;;;:::o;11359:347::-;11444:6;11497:2;11485:9;11476:7;11472:23;11468:32;11465:52;;;11513:1;11510;11503:12;11465:52;11553:9;11540:23;-1:-1:-1;;;;;11578:6:1;11575:30;11572:50;;;11618:1;11615;11608:12;11572:50;11641:59;11692:7;11683:6;11672:9;11668:22;11641:59;:::i;:::-;11631:69;11359:347;-1:-1:-1;;;;11359:347:1:o;11711:315::-;11779:6;11787;11840:2;11828:9;11819:7;11815:23;11811:32;11808:52;;;11856:1;11853;11846:12;11808:52;11892:9;11879:23;11869:33;;11952:2;11941:9;11937:18;11924:32;11965:31;11990:5;11965:31;:::i;:::-;12015:5;12005:15;;;11711:315;;;;;:::o;12525:675::-;12632:6;12640;12648;12656;12709:3;12697:9;12688:7;12684:23;12680:33;12677:53;;;12726:1;12723;12716:12;12677:53;12766:9;12753:23;-1:-1:-1;;;;;12791:6:1;12788:30;12785:50;;;12831:1;12828;12821:12;12785:50;12854;12896:7;12887:6;12876:9;12872:22;12854:50;:::i;:::-;12844:60;;;12951:2;12940:9;12936:18;12923:32;12913:42;;13005:2;12994:9;12990:18;12977:32;13018:31;13043:5;13018:31;:::i;:::-;13068:5;-1:-1:-1;13125:2:1;13110:18;;13097:32;13138:30;13097:32;13138:30;:::i;:::-;12525:675;;;;-1:-1:-1;12525:675:1;;-1:-1:-1;;12525:675:1:o;13205:248::-;13273:6;13281;13334:2;13322:9;13313:7;13309:23;13305:32;13302:52;;;13350:1;13347;13340:12;13302:52;-1:-1:-1;;13373:23:1;;;13443:2;13428:18;;;13415:32;;-1:-1:-1;13205:248:1:o;13458:415::-;13552:6;13560;13613:2;13601:9;13592:7;13588:23;13584:32;13581:52;;;13629:1;13626;13619:12;13581:52;13665:9;13652:23;13642:33;;13726:2;13715:9;13711:18;13698:32;-1:-1:-1;;;;;13745:6:1;13742:30;13739:50;;;13785:1;13782;13775:12;13739:50;13808:59;13859:7;13850:6;13839:9;13835:22;13808:59;:::i;:::-;13798:69;;;13458:415;;;;;:::o;13878:844::-;14072:4;14101:2;14141;14130:9;14126:18;14171:2;14160:9;14153:21;14194:6;14229;14223:13;14260:6;14252;14245:22;14298:2;14287:9;14283:18;14276:25;;14360:2;14350:6;14347:1;14343:14;14332:9;14328:30;14324:39;14310:53;;14398:2;14390:6;14386:15;14419:1;14429:264;14443:6;14440:1;14437:13;14429:264;;;14536:2;14532:7;14520:9;14512:6;14508:22;14504:36;14499:3;14492:49;14564;14606:6;14597;14591:13;14564:49;:::i;:::-;14554:59;-1:-1:-1;14671:12:1;;;;14636:15;;;;14465:1;14458:9;14429:264;;;-1:-1:-1;14710:6:1;;13878:844;-1:-1:-1;;;;;;;13878:844:1:o;15141:398::-;15233:6;15241;15249;15302:2;15290:9;15281:7;15277:23;15273:32;15270:52;;;15318:1;15315;15308:12;15270:52;15354:9;15341:23;15331:33;;15414:2;15403:9;15399:18;15386:32;15427:31;15452:5;15427:31;:::i;:::-;15141:398;;15477:5;;-1:-1:-1;;;15529:2:1;15514:18;;;;15501:32;;15141:398::o;15544:471::-;15636:6;15644;15652;15705:2;15693:9;15684:7;15680:23;15676:32;15673:52;;;15721:1;15718;15711:12;15673:52;15760:9;15747:23;15779:31;15804:5;15779:31;:::i;:::-;15829:5;-1:-1:-1;15881:2:1;15866:18;;15853:32;;-1:-1:-1;15937:2:1;15922:18;;15909:32;15950:33;15909:32;15950:33;:::i;:::-;16002:7;15992:17;;;15544:471;;;;;:::o;16228:525::-;16314:6;16322;16330;16338;16391:3;16379:9;16370:7;16366:23;16362:33;16359:53;;;16408:1;16405;16398:12;16359:53;16444:9;16431:23;16421:33;;16504:2;16493:9;16489:18;16476:32;16517:31;16542:5;16517:31;:::i;:::-;16567:5;-1:-1:-1;16619:2:1;16604:18;;16591:32;;-1:-1:-1;16675:2:1;16660:18;;16647:32;16688:33;16647:32;16688:33;:::i;16758:609::-;16869:6;16877;16885;16893;16946:3;16934:9;16925:7;16921:23;16917:33;16914:53;;;16963:1;16960;16953:12;16914:53;16999:9;16986:23;16976:33;;17059:2;17048:9;17044:18;17031:32;17072:31;17097:5;17072:31;:::i;:::-;17122:5;-1:-1:-1;17178:2:1;17163:18;;17150:32;-1:-1:-1;;;;;17194:30:1;;17191:50;;;17237:1;17234;17227:12;17191:50;17260;17302:7;17293:6;17282:9;17278:22;17260:50;:::i;:::-;16758:609;;;;-1:-1:-1;17250:60:1;;17357:2;17342:18;17329:32;;-1:-1:-1;;;16758:609:1:o;17372:991::-;17475:6;17483;17491;17535:9;17526:7;17522:23;17565:3;17561:2;17557:12;17554:32;;;17582:1;17579;17572:12;17554:32;17618:9;17605:23;17595:33;;17678:2;17667:9;17663:18;17650:32;17691:31;17716:5;17691:31;:::i;:::-;17741:5;-1:-1:-1;17780:4:1;-1:-1:-1;;17762:16:1;;17758:27;17755:47;;;17798:1;17795;17788:12;17755:47;;17831:2;17825:9;17873:4;17865:6;17861:17;17944:6;17932:10;17929:22;-1:-1:-1;;;;;17896:10:1;17893:34;17890:62;17887:88;;;17955:18;;:::i;:::-;17995:10;17991:2;17984:22;;18058:2;18047:9;18043:18;18030:32;18022:6;18015:48;18124:2;18113:9;18109:18;18096:32;18091:2;18083:6;18079:15;18072:57;18190:3;18179:9;18175:19;18162:33;18157:2;18149:6;18145:15;18138:58;18257:4;18246:9;18242:20;18229:34;18224:2;18216:6;18212:15;18205:59;18326:3;18315:9;18311:19;18298:33;18292:3;18284:6;18280:16;18273:59;18351:6;18341:16;;;17372:991;;;;;:::o;18368:554::-;18427:5;18475:4;18463:9;18458:3;18454:19;18450:30;18447:50;;;18493:1;18490;18483:12;18447:50;18526:4;18520:11;18570:4;18562:6;18558:17;18641:6;18629:10;18626:22;-1:-1:-1;;;;;18593:10:1;18590:34;18587:62;18584:88;;;18652:18;;:::i;:::-;18688:4;18681:24;18723:6;-1:-1:-1;18723:6:1;18753:23;;18785:33;18753:23;18785:33;:::i;:::-;18827:23;;18911:2;18896:18;;;18883:32;18866:15;;18859:57;;;;18368:554;;-1:-1:-1;18368:554:1:o;18927:441::-;19034:6;19042;19050;19103:3;19091:9;19082:7;19078:23;19074:33;19071:53;;;19120:1;19117;19110:12;19071:53;19156:9;19143:23;19133:33;;19216:2;19205:9;19201:18;19188:32;19229:31;19254:5;19229:31;:::i;:::-;19279:5;-1:-1:-1;19303:59:1;19354:7;19349:2;19334:18;;19303:59;:::i;:::-;19293:69;;18927:441;;;;;:::o;19373:1180::-;19505:6;19513;19521;19574:2;19562:9;19553:7;19549:23;19545:32;19542:52;;;19590:1;19587;19580:12;19542:52;19626:9;19613:23;19603:33;;19655:2;19707;19696:9;19692:18;19679:32;19720:31;19745:5;19720:31;:::i;:::-;19770:5;-1:-1:-1;19794:2:1;19832:18;;;19819:32;-1:-1:-1;;;;;19863:30:1;;19860:50;;;19906:1;19903;19896:12;19860:50;19929:22;;19982:4;19974:13;;19970:27;-1:-1:-1;19960:55:1;;20011:1;20008;20001:12;19960:55;20047:2;20034:16;20070:68;20086:51;20134:2;20086:51;:::i;20070:68::-;20172:15;;;20254:1;20250:10;;;;20242:19;;20238:28;;;20203:12;;;;20278:19;;;20275:39;;;20310:1;20307;20300:12;20275:39;20334:11;;;;20354:169;20370:6;20365:3;20362:15;20354:169;;;20436:44;20472:7;20467:3;20436:44;:::i;:::-;20424:57;;20387:12;;;;20501;;;;20354:169;;;20542:5;20532:15;;;;;;;;19373:1180;;;;;:::o;21033:824::-;21264:2;21316:21;;;21386:13;;21289:18;;;21408:22;;;21235:4;;21264:2;21449;;21467:18;;;;21508:15;;;21235:4;21551:280;21565:6;21562:1;21559:13;21551:280;;;21624:13;;21666:9;;-1:-1:-1;;;;;21662:35:1;21650:48;;21738:11;;21732:18;21718:12;;;21711:40;21771:12;;;;21806:15;;;;21694:1;21580:9;21551:280;;21862:127;21923:10;21918:3;21914:20;21911:1;21904:31;21954:4;21951:1;21944:15;21978:4;21975:1;21968:15;21994:184;22064:6;22117:2;22105:9;22096:7;22092:23;22088:32;22085:52;;;22133:1;22130;22123:12;22085:52;-1:-1:-1;22156:16:1;;21994:184;-1:-1:-1;21994:184:1:o;22183:380::-;22262:1;22258:12;;;;22305;;;22326:61;;22380:4;22372:6;22368:17;22358:27;;22326:61;22433:2;22425:6;22422:14;22402:18;22399:38;22396:161;;22479:10;22474:3;22470:20;22467:1;22460:31;22514:4;22511:1;22504:15;22542:4;22539:1;22532:15;22396:161;;22183:380;;;:::o;22568:346::-;22770:2;22752:21;;;22809:2;22789:18;;;22782:30;-1:-1:-1;;;22843:2:1;22828:18;;22821:52;22905:2;22890:18;;22568:346::o;23045:545::-;23147:2;23142:3;23139:11;23136:448;;;23183:1;23208:5;23204:2;23197:17;23253:4;23249:2;23239:19;23323:2;23311:10;23307:19;23304:1;23300:27;23294:4;23290:38;23359:4;23347:10;23344:20;23341:47;;;-1:-1:-1;23382:4:1;23341:47;23437:2;23432:3;23428:12;23425:1;23421:20;23415:4;23411:31;23401:41;;23492:82;23510:2;23503:5;23500:13;23492:82;;;23555:17;;;23536:1;23525:13;23492:82;;23136:448;23045:545;;;:::o;23766:1352::-;23892:3;23886:10;-1:-1:-1;;;;;23911:6:1;23908:30;23905:56;;;23941:18;;:::i;:::-;23970:97;24060:6;24020:38;24052:4;24046:11;24020:38;:::i;:::-;24014:4;23970:97;:::i;:::-;24122:4;;24186:2;24175:14;;24203:1;24198:663;;;;24905:1;24922:6;24919:89;;;-1:-1:-1;24974:19:1;;;24968:26;24919:89;-1:-1:-1;;23723:1:1;23719:11;;;23715:24;23711:29;23701:40;23747:1;23743:11;;;23698:57;25021:81;;24168:944;;24198:663;22992:1;22985:14;;;23029:4;23016:18;;-1:-1:-1;;24234:20:1;;;24352:236;24366:7;24363:1;24360:14;24352:236;;;24455:19;;;24449:26;24434:42;;24547:27;;;;24515:1;24503:14;;;;24382:19;;24352:236;;;24356:3;24616:6;24607:7;24604:19;24601:201;;;24677:19;;;24671:26;-1:-1:-1;;24760:1:1;24756:14;;;24772:3;24752:24;24748:37;24744:42;24729:58;24714:74;;24601:201;-1:-1:-1;;;;;24848:1:1;24832:14;;;24828:22;24815:36;;-1:-1:-1;23766:1352:1:o;25123:485::-;25364:3;25353:9;25346:22;25327:4;25385:46;25426:3;25415:9;25411:19;25403:6;25385:46;:::i;:::-;25462:2;25447:18;;25440:34;;;;-1:-1:-1;;;;;;25510:32:1;;;;25505:2;25490:18;;25483:60;25586:14;25579:22;25574:2;25559:18;;;25552:50;25377:54;25123:485;-1:-1:-1;25123:485:1:o;28335:476::-;28565:25;;;-1:-1:-1;;;;;28626:32:1;;28621:2;28606:18;;28599:60;28695:3;28690:2;28675:18;;28668:31;;;-1:-1:-1;;28716:46:1;;28742:19;;28734:6;28716:46;:::i;:::-;28708:54;;28798:6;28793:2;28782:9;28778:18;28771:34;28335:476;;;;;;;:::o;28816:127::-;28877:10;28872:3;28868:20;28865:1;28858:31;28908:4;28905:1;28898:15;28932:4;28929:1;28922:15;28948:135;28987:3;29008:17;;;29005:43;;29028:18;;:::i;:::-;-1:-1:-1;29075:1:1;29064:13;;28948:135::o;29088:128::-;29155:9;;;29176:11;;;29173:37;;;29190:18;;:::i;29221:125::-;29286:9;;;29307:10;;;29304:36;;;29320:18;;:::i;29351:127::-;29412:10;29407:3;29403:20;29400:1;29393:31;29443:4;29440:1;29433:15;29467:4;29464:1;29457:15;29762:245;29829:6;29882:2;29870:9;29861:7;29857:23;29853:32;29850:52;;;29898:1;29895;29888:12;29850:52;29930:9;29924:16;29949:28;29971:5;29949:28;:::i
Swarm Source
ipfs://a33b2cc144eeee5c1a1dfc16a5b44dbcfad0aae7d4d00ea722ade087f00cdab0
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
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.