More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 28 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Pick Winner | 9036567 | 35 hrs ago | IN | 0 APE | 0.00383921 | ||||
Enroll | 9036455 | 35 hrs ago | IN | 10 wei | 0.00321444 | ||||
Enroll | 9036308 | 35 hrs ago | IN | 10 wei | 0.00321444 | ||||
Enroll | 9036283 | 35 hrs ago | IN | 1 wei | 0.00320778 | ||||
Enroll | 9036250 | 35 hrs ago | IN | 1 wei | 0.00407717 | ||||
Create Match | 9031625 | 37 hrs ago | IN | 0 APE | 0.00734985 | ||||
Create Match | 9031601 | 37 hrs ago | IN | 0 APE | 0.00734985 | ||||
Update Caller | 9031335 | 37 hrs ago | IN | 0 APE | 0.00123038 | ||||
Pick Winner | 9031025 | 38 hrs ago | IN | 0 APE | 0.00444546 | ||||
Enroll | 9031007 | 38 hrs ago | IN | 10 wei | 0.00321444 | ||||
Pick Winner | 9030975 | 38 hrs ago | IN | 0 APE | 0.00098192 | ||||
Enroll | 9030888 | 38 hrs ago | IN | 10 wei | 0.00321444 | ||||
Enroll | 9030883 | 38 hrs ago | IN | 10 wei | 0.00321444 | ||||
Enroll | 9030852 | 38 hrs ago | IN | 5 wei | 0.00321111 | ||||
Enroll | 9030391 | 38 hrs ago | IN | 5 wei | 0.0040805 | ||||
Create Match | 9030048 | 38 hrs ago | IN | 0 APE | 0.00736081 | ||||
Cancel Match | 9030022 | 38 hrs ago | IN | 0 APE | 0.00263129 | ||||
Create Match | 9029870 | 38 hrs ago | IN | 0 APE | 0.00736081 | ||||
Cancel Match | 9029765 | 38 hrs ago | IN | 0 APE | 0.00263129 | ||||
Create Match | 9029673 | 38 hrs ago | IN | 0 APE | 0.00736081 | ||||
Add Tier | 9029659 | 38 hrs ago | IN | 0 APE | 0.00307486 | ||||
Add Tier | 9029651 | 38 hrs ago | IN | 0 APE | 0.00307486 | ||||
Pick Winner | 9029093 | 39 hrs ago | IN | 0 APE | 0.0026424 | ||||
Enroll | 9029060 | 39 hrs ago | IN | 1 wei | 0.00309832 | ||||
Enroll | 9029059 | 39 hrs ago | IN | 1 wei | 0.00396771 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ApeRoyale
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at apescan.io on 2025-01-31 */ // File: @openzeppelin/contracts/utils/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, * consider using {ReentrancyGuardTransient} instead. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant NOT_ENTERED = 1; uint256 private constant ENTERED = 2; uint256 private _status; /** * @dev Unauthorized reentrant call. */ error ReentrancyGuardReentrantCall(); constructor() { _status = NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be NOT_ENTERED if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // Any calls to nonReentrant after this point will fail _status = ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ 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); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: contracts/Winpadv1.sol pragma solidity ^0.8.26; interface INft { function transferFrom(address from, address to, uint256 tokenId) external; function ownerOf(uint256 tokenId) external view returns (address); } contract ApeRoyale is Ownable, ReentrancyGuard { using SafeMath for uint256; // Revenue distribution percentages uint8 public constant FEE_PERCENT = 8; uint8 public constant TREASURY_PERCENT = 72; uint8 public constant OPERATIONS_PERCENT = 20; // Revenue distribution addresses address payable public feeAccount; address payable public treasuryAccount; address payable public operationsAccount; // Entry tier structure struct EntryTier { uint256 apeCost; uint256 baseEntries; uint256 bonusEntries; bool exists; } // Match structure struct Match { bytes32 id; uint256[] allowedTiers; address nftAddress; uint256 nftId; uint256 totalEntries; uint256 targetEntries; uint256 endDate; bool isEnded; bool exists; } // Participant tracking struct Participation { address participant; uint256 tierId; // Add back tierId uint256 entries; } // Storage mapping(uint256 => EntryTier) public tiers; uint256 public nextTierId = 1; mapping(bytes32 => Match) public matches; mapping(bytes32 => Participation[]) public participations; bytes32[] public allMatchIds; mapping(address => bool) public authorizedCallers; // Events event MatchCreated(bytes32 indexed matchId, address nftAddress, uint256 nftId, uint256 targetEntries, uint256 endDate); event ParticipantEnrolled(bytes32 indexed matchId, address participant, uint256 entries); event MatchCanceled(bytes32 indexed matchId, uint256 totalRefunded); event WinnerSelected(bytes32 indexed matchId, address winner, uint256 entries); event FundsDistributed(bytes32 indexed matchId, uint256 totalAmount, uint256 fee, uint256 treasury, uint256 operations); event TierUpdated(uint256 indexed tierId, uint256 apeCost, uint256 baseEntries, uint256 bonusEntries); event CallerUpdated(address indexed caller, bool status); modifier onlyCaller() { require(owner() == msg.sender || authorizedCallers[msg.sender], "Unauthorized"); _; } constructor( address _initialOwner, address payable _feeAccount, address payable _treasuryAccount, address payable _operationsAccount ) Ownable(_initialOwner) { feeAccount = _feeAccount; treasuryAccount = _treasuryAccount; operationsAccount = _operationsAccount; } // Tier management function addTier( uint256 apeCost, uint256 baseEntries, uint256 bonusEntries ) external onlyOwner { tiers[nextTierId] = EntryTier(apeCost, baseEntries, bonusEntries, true); emit TierUpdated(nextTierId, apeCost, baseEntries, bonusEntries); nextTierId++; } // Match creation function createMatch( uint256[] memory allowedTiers, address nftAddress, uint256 nftId, uint256 targetEntries, uint256 duration ) external onlyOwner returns (bytes32 matchId) { require(targetEntries > 0, "Invalid target"); require(duration > 0, "Invalid duration"); require(INft(nftAddress).ownerOf(nftId) == address(this), "NFT not owned"); matchId = keccak256(abi.encodePacked( block.timestamp, nftAddress, nftId, msg.sender )); matches[matchId] = Match({ id: matchId, allowedTiers: allowedTiers, nftAddress: nftAddress, nftId: nftId, totalEntries: 0, targetEntries: targetEntries, endDate: block.timestamp + duration, isEnded: false, exists: true }); allMatchIds.push(matchId); emit MatchCreated(matchId, nftAddress, nftId, targetEntries, block.timestamp + duration); } // Participant enrollment function enroll(bytes32 matchId, uint256 tierId) external payable nonReentrant { Match storage m = matches[matchId]; EntryTier memory tier = tiers[tierId]; require(m.exists, "Invalid match"); require(!m.isEnded, "Match ended"); require(block.timestamp < m.endDate, "Enrollment closed"); require(tier.exists, "Invalid tier"); require(contains(m.allowedTiers, tierId), "Tier not allowed"); require(msg.value == tier.apeCost, "Incorrect APE amount"); uint256 totalEntries = tier.baseEntries + tier.bonusEntries; participations[matchId].push(Participation(msg.sender, tierId, totalEntries)); m.totalEntries += totalEntries; emit ParticipantEnrolled(matchId, msg.sender, totalEntries); } // Match resolution function pickWinner(bytes32 matchId, uint256 randomSeed) external onlyCaller nonReentrant { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); require(m.totalEntries >= m.targetEntries || block.timestamp >= m.endDate, "Not ready"); uint256 randomNumber = uint256(keccak256(abi.encodePacked(randomSeed, block.timestamp))) % m.totalEntries; uint256 cumulative; address winner; uint256 winnerEntries; Participation[] memory parts = participations[matchId]; for(uint256 i = 0; i < parts.length; i++) { Participation memory p = parts[i]; if(randomNumber < cumulative + p.entries) { winner = p.participant; winnerEntries = p.entries; break; } cumulative += p.entries; } uint256 totalPrizePool = address(this).balance; uint256 feeAmount = totalPrizePool.mul(FEE_PERCENT).div(100); uint256 treasuryAmount = totalPrizePool.mul(TREASURY_PERCENT).div(100); uint256 operationsAmount = totalPrizePool.sub(feeAmount).sub(treasuryAmount); feeAccount.transfer(feeAmount); treasuryAccount.transfer(treasuryAmount); operationsAccount.transfer(operationsAmount); INft(m.nftAddress).transferFrom(address(this), winner, m.nftId); m.isEnded = true; emit FundsDistributed(matchId, totalPrizePool, feeAmount, treasuryAmount, operationsAmount); emit WinnerSelected(matchId, winner, winnerEntries); } // Fix the cancellation logic function cancelMatch(bytes32 matchId) external onlyCaller nonReentrant { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); uint256 totalRefunded; for(uint256 i = 0; i < participations[matchId].length; i++) { Participation memory p = participations[matchId][i]; EntryTier memory tier = tiers[p.tierId]; // Now works payable(p.participant).transfer(tier.apeCost); totalRefunded += tier.apeCost; } INft(m.nftAddress).transferFrom(address(this), owner(), m.nftId); m.isEnded = true; emit MatchCanceled(matchId, totalRefunded); } // View functions function getEntryTypes() public view returns (EntryTier[] memory) { EntryTier[] memory types = new EntryTier[](nextTierId-1); for(uint256 i = 1; i < nextTierId; i++) { types[i-1] = tiers[i]; } return types; } function getOngoingMatches() public view returns (Match[] memory) { return _filterMatches(0); } function getMatchHistory() public view returns (Match[] memory) { return _filterMatches(1); } function getReadyMatches() public view returns (Match[] memory) { return _filterMatches(2); } // Internal helpers function _filterMatches(uint8 filterType) private view returns (Match[] memory) { Match[] memory result = new Match[](allMatchIds.length); uint256 count = 0; for(uint256 i = 0; i < allMatchIds.length; i++) { bytes32 id = allMatchIds[i]; Match storage m = matches[id]; bool include; if(filterType == 0) { // Ongoing include = !m.isEnded && block.timestamp < m.endDate; } else if(filterType == 1) { // History include = m.isEnded; } else if(filterType == 2) { // Ready include = !m.isEnded && (m.totalEntries >= m.targetEntries || block.timestamp >= m.endDate); } if(include) { result[count] = m; count++; } } Match[] memory trimmed = new Match[](count); for(uint256 i = 0; i < count; i++) { trimmed[i] = result[i]; } return trimmed; } function contains(uint256[] memory arr, uint256 value) private pure returns (bool) { for(uint256 i = 0; i < arr.length; i++) { if(arr[i] == value) return true; } return false; } // Authorization management function updateCaller(address caller, bool status) external onlyOwner { authorizedCallers[caller] = status; emit CallerUpdated(caller, status); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"},{"internalType":"address payable","name":"_feeAccount","type":"address"},{"internalType":"address payable","name":"_treasuryAccount","type":"address"},{"internalType":"address payable","name":"_operationsAccount","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"CallerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasury","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"operations","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"totalRefunded","type":"uint256"}],"name":"MatchCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"nftId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"targetEntries","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"}],"name":"MatchCreated","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":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"participant","type":"address"},{"indexed":false,"internalType":"uint256","name":"entries","type":"uint256"}],"name":"ParticipantEnrolled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tierId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"apeCost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"baseEntries","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bonusEntries","type":"uint256"}],"name":"TierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"entries","type":"uint256"}],"name":"WinnerSelected","type":"event"},{"inputs":[],"name":"FEE_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATIONS_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURY_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"}],"name":"addTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allMatchIds","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedCallers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"name":"cancelMatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"targetEntries","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"createMatch","outputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"enroll","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"feeAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntryTypes","outputs":[{"components":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct ApeRoyale.EntryTier[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMatchHistory","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"targetEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct ApeRoyale.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOngoingMatches","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"targetEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct ApeRoyale.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReadyMatches","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"targetEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct ApeRoyale.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"matches","outputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"targetEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextTierId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"participations","outputs":[{"internalType":"address","name":"participant","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"entries","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"randomSeed","type":"uint256"}],"name":"pickWinner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600655348015610014575f80fd5b506040516138eb3803806138eb833981810160405281019061003691906102e1565b835f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a7575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009e9190610354565b60405180910390fd5b6100b68161018760201b60201c565b50600180819055508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505061036d565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102758261024c565b9050919050565b6102858161026b565b811461028f575f80fd5b50565b5f815190506102a08161027c565b92915050565b5f6102b08261024c565b9050919050565b6102c0816102a6565b81146102ca575f80fd5b50565b5f815190506102db816102b7565b92915050565b5f805f80608085870312156102f9576102f8610248565b5b5f61030687828801610292565b9450506020610317878288016102cd565b9350506040610328878288016102cd565b9250506060610339878288016102cd565b91505092959194509250565b61034e8161026b565b82525050565b5f6020820190506103675f830184610345565b92915050565b6135718061037a5f395ff3fe608060405260043610610169575f3560e01c806380e36dd8116100d0578063cb525a3f11610089578063e7e8517c11610063578063e7e8517c14610520578063eaf98d231461054a578063ecdc2c0114610574578063f2fde38b146105b257610170565b8063cb525a3f146104a0578063dc3a4e9b146104dc578063dfbed623146104f857610170565b806380e36dd81461038d57806383d5e726146103b75780638da5cb5b146103e15780639a1564f01461040b5780639fe9ada314610435578063c82db8f91461047857610170565b8063536fff6c11610122578063536fff6c1461028357806354f276b9146102bf57806361eba652146102fb5780636358ec571461032557806365e17c9d1461034d578063715018a61461037757610170565b8063039af9eb146101745780630594fd04146101b35780630a47f932146101dd5780630f5f1dbc146102075780631966cdbe14610231578063339b2cff1461025957610170565b3661017057005b5f80fd5b34801561017f575f80fd5b5061019a600480360381019061019591906122b4565b6105da565b6040516101aa9493929190612308565b60405180910390f35b3480156101be575f80fd5b506101c7610612565b6040516101d4919061234b565b60405180910390f35b3480156101e8575f80fd5b506101f1610618565b6040516101fe91906125fe565b60405180910390f35b348015610212575f80fd5b5061021b610629565b604051610228919061263e565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612681565b61064e565b005b348015610264575f80fd5b5061026d610c4e565b60405161027a919061263e565b60405180910390f35b34801561028e575f80fd5b506102a960048036038101906102a491906126e9565b610c73565b6040516102b69190612714565b60405180910390f35b3480156102ca575f80fd5b506102e560048036038101906102e091906122b4565b610c90565b6040516102f2919061273c565b60405180910390f35b348015610306575f80fd5b5061030f610cb0565b60405161031c91906125fe565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612755565b610cc1565b005b348015610358575f80fd5b50610361610d98565b60405161036e919061263e565b60405180910390f35b348015610382575f80fd5b5061038b610dbd565b005b348015610398575f80fd5b506103a1610dd0565b6040516103ae91906128a0565b60405180910390f35b3480156103c2575f80fd5b506103cb610ed9565b6040516103d891906128db565b60405180910390f35b3480156103ec575f80fd5b506103f5610ede565b6040516104029190612903565b60405180910390f35b348015610416575f80fd5b5061041f610f05565b60405161042c91906125fe565b60405180910390f35b348015610440575f80fd5b5061045b6004803603810190610456919061291c565b610f15565b60405161046f989796959493929190612947565b60405180910390f35b348015610483575f80fd5b5061049e6004803603810190610499919061291c565b610f91565b005b3480156104ab575f80fd5b506104c660048036038101906104c19190612b13565b611349565b6040516104d3919061273c565b60405180910390f35b6104f660048036038101906104f19190612681565b6116af565b005b348015610503575f80fd5b5061051e60048036038101906105199190612bd0565b611a67565b005b34801561052b575f80fd5b50610534611b15565b60405161054191906128db565b60405180910390f35b348015610555575f80fd5b5061055e611b1a565b60405161056b91906128db565b60405180910390f35b34801561057f575f80fd5b5061059a60048036038101906105959190612681565b611b1f565b6040516105a993929190612c0e565b60405180910390f35b3480156105bd575f80fd5b506105d860048036038101906105d391906126e9565b611b7e565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b60606106246001611c02565b905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1661066d610ede565b73ffffffffffffffffffffffffffffffffffffffff1614806106d55750600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070b90612c9d565b60405180910390fd5b61071c611f54565b5f60075f8481526020019081526020015f209050806007015f9054906101000a900460ff1615610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077890612d05565b60405180910390fd5b8060050154816004015410158061079c575080600601544210155b6107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290612d6d565b60405180910390fd5b5f816004015483426040516020016107f4929190612dab565b604051602081830303815290604052805190602001205f1c6108169190612e03565b90505f805f8060085f8981526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b828210156108e4578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250508152602001906001019061084c565b5050505090505f5b815181101561095d575f82828151811061090957610908612e33565b5b602002602001015190508060400151866109239190612e8d565b87101561093d57805f01519450806040015193505061095d565b80604001518661094d9190612e8d565b95505080806001019150506108ec565b505f4790505f61098d606461097f600860ff1685611f9a90919063ffffffff16565b611faf90919063ffffffff16565b90505f6109ba60646109ac604860ff1686611f9a90919063ffffffff16565b611faf90919063ffffffff16565b90505f6109e2826109d48587611fc490919063ffffffff16565b611fc490919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610a48573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610aad573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b12573d5f803e3d5ffd5b50896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30898d600301546040518463ffffffff1660e01b8152600401610b7793929190612ec0565b5f604051808303815f87803b158015610b8e575f80fd5b505af1158015610ba0573d5f803e3d5ffd5b5050505060018a6007015f6101000a81548160ff0219169083151502179055508b7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc9585858585604051610bf69493929190612ef5565b60405180910390a28b7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc8888604051610c30929190612f38565b60405180910390a250505050505050505050610c4a611fd9565b5050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f915054906101000a900460ff1681565b60098181548110610c9f575f80fd5b905f5260205f20015f915090505481565b6060610cbc6002611c02565b905090565b610cc9611fe2565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a848484604051610d7493929190612f5f565b60405180910390a260065f815480929190610d8e90612f94565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dc5611fe2565b610dce5f612069565b565b60605f6001600654610de29190612fdb565b67ffffffffffffffff811115610dfb57610dfa6129d7565b5b604051908082528060200260200182016040528015610e3457816020015b610e21612183565b815260200190600190039081610e195790505b5090505f600190505b600654811015610ed15760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505082600183610ea89190612fdb565b81518110610eb957610eb8612e33565b5b60200260200101819052508080600101915050610e3d565b508091505090565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060610f105f611c02565b905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015490806007015f9054906101000a900460ff16908060070160019054906101000a900460ff16905088565b3373ffffffffffffffffffffffffffffffffffffffff16610fb0610ede565b73ffffffffffffffffffffffffffffffffffffffff1614806110185750600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90612c9d565b60405180910390fd5b61105f611f54565b5f60075f8381526020019081526020015f209050806007015f9054906101000a900460ff16156110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90612d05565b60405180910390fd5b5f805f90505b60085f8581526020019081526020015f208054905081101561124f575f60085f8681526020019081526020015f20828154811061110a57611109612e33565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f1935050505015801561122e573d5f803e3d5ffd5b50805f01518461123e9190612e8d565b9350505080806001019150506110ca565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30611298610ede565b85600301546040518463ffffffff1660e01b81526004016112bb93929190612ec0565b5f604051808303815f87803b1580156112d2575f80fd5b505af11580156112e4573d5f803e3d5ffd5b505050506001826007015f6101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e682604051611334919061234b565b60405180910390a25050611346611fd9565b50565b5f611352611fe2565b5f8311611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90613058565b60405180910390fd5b5f82116113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd906130c0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b8152600401611426919061234b565b602060405180830381865afa158015611441573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146591906130f2565b73ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b290613167565b60405180910390fd5b428585336040516020016114d294939291906131ca565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020015f8152602001848152602001834261153c9190612e8d565b81526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f015560208201518160010190805190602001906115859291906121a9565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015f6101000a81548160ff0219169083151502179055506101008201518160070160016101000a81548160ff021916908315150217905550905050600981908060018154018082558091505060019003905f5260205f20015f9091909190915055807f3b7847a02041ae017dcb9db9abe0e7ebc764ea42cb2b7a56f1ac3f17ba746558868686864261168e9190612e8d565b60405161169e9493929190613217565b60405180910390a295945050505050565b6116b7611f54565b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160070160019054906101000a900460ff16611772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611769906132a4565b60405180910390fd5b816007015f9054906101000a900460ff16156117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba9061330c565b60405180910390fd5b81600601544210611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090613374565b60405180910390fd5b806060015161184d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611844906133dc565b60405180910390fd5b6118a78260010180548060200260200160405190810160405280929190818152602001828054801561189c57602002820191905f5260205f20905b815481526020019060010190808311611888575b50505050508461212a565b6118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613444565b60405180910390fd5b805f0151341461192b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611922906134ac565b60405180910390fd5b5f816040015182602001516119409190612e8d565b905060085f8681526020019081526020015f2060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155505080836004015f828254611a179190612e8d565b92505081905550847f9547adb56b87436876e7c387b0becc7270032515aedda7a210440394c8146d6d3383604051611a50929190612f38565b60405180910390a2505050611a63611fd9565b5050565b611a6f611fe2565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c279682604051611b099190612714565b60405180910390a25050565b601481565b600881565b6008602052815f5260405f208181548110611b38575f80fd5b905f5260205f2090600302015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b611b86611fe2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf6575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611bed9190612903565b60405180910390fd5b611bff81612069565b50565b60605f60098054905067ffffffffffffffff811115611c2457611c236129d7565b5b604051908082528060200260200182016040528015611c5d57816020015b611c4a6121f4565b815260200190600190039081611c425790505b5090505f805b600980549050811015611ea0575f60098281548110611c8557611c84612e33565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff1603611cd757816007015f9054906101000a900460ff16158015611cd05750816006015442105b9050611d3f565b60018860ff1603611cfa57816007015f9054906101000a900460ff169050611d3e565b60028860ff1603611d3d57816007015f9054906101000a900460ff16158015611d3a575081600501548260040154101580611d39575081600601544210155b5b90505b5b5b8015611e905781604051806101200160405290815f820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015611da857602002820191905f5260205f20905b815481526020019060010190808311611d94575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff161515151581526020016007820160019054906101000a900460ff161515151581525050868681518110611e7657611e75612e33565b5b60200260200101819052508480611e8c90612f94565b9550505b5050508080600101915050611c63565b505f8167ffffffffffffffff811115611ebc57611ebb6129d7565b5b604051908082528060200260200182016040528015611ef557816020015b611ee26121f4565b815260200190600190039081611eda5790505b5090505f5b82811015611f4857838181518110611f1557611f14612e33565b5b6020026020010151828281518110611f3057611f2f612e33565b5b60200260200101819052508080600101915050611efa565b50809350505050919050565b600260015403611f90576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f8183611fa791906134ca565b905092915050565b5f8183611fbc919061350b565b905092915050565b5f8183611fd19190612fdb565b905092915050565b60018081905550565b611fea61217c565b73ffffffffffffffffffffffffffffffffffffffff16612008610ede565b73ffffffffffffffffffffffffffffffffffffffff16146120675761202b61217c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161205e9190612903565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b8351811015612171578284828151811061214d5761214c612e33565b5b602002602001015103612164576001915050612176565b8080600101915050612130565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f209081019282156121e3579160200282015b828111156121e25782518255916020019190600101906121c7565b5b5090506121f09190612255565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81526020015f151581526020015f151581525090565b5b8082111561226c575f815f905550600101612256565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61229381612281565b811461229d575f80fd5b50565b5f813590506122ae8161228a565b92915050565b5f602082840312156122c9576122c8612279565b5b5f6122d6848285016122a0565b91505092915050565b6122e881612281565b82525050565b5f8115159050919050565b612302816122ee565b82525050565b5f60808201905061231b5f8301876122df565b61232860208301866122df565b61233560408301856122df565b61234260608301846122f9565b95945050505050565b5f60208201905061235e5f8301846122df565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61239f8161238d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6123d781612281565b82525050565b5f6123e883836123ce565b60208301905092915050565b5f602082019050919050565b5f61240a826123a5565b61241481856123af565b935061241f836123bf565b805f5b8381101561244f57815161243688826123dd565b9750612441836123f4565b925050600181019050612422565b5085935050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124858261245c565b9050919050565b6124958161247b565b82525050565b6124a4816122ee565b82525050565b5f61012083015f8301516124c05f860182612396565b50602083015184820360208601526124d88282612400565b91505060408301516124ed604086018261248c565b50606083015161250060608601826123ce565b50608083015161251360808601826123ce565b5060a083015161252660a08601826123ce565b5060c083015161253960c08601826123ce565b5060e083015161254c60e086018261249b565b5061010083015161256161010086018261249b565b508091505092915050565b5f61257783836124aa565b905092915050565b5f602082019050919050565b5f61259582612364565b61259f818561236e565b9350836020820285016125b18561237e565b805f5b858110156125ec57848403895281516125cd858261256c565b94506125d88361257f565b925060208a019950506001810190506125b4565b50829750879550505050505092915050565b5f6020820190508181035f830152612616818461258b565b905092915050565b5f6126288261245c565b9050919050565b6126388161261e565b82525050565b5f6020820190506126515f83018461262f565b92915050565b6126608161238d565b811461266a575f80fd5b50565b5f8135905061267b81612657565b92915050565b5f806040838503121561269757612696612279565b5b5f6126a48582860161266d565b92505060206126b5858286016122a0565b9150509250929050565b6126c88161247b565b81146126d2575f80fd5b50565b5f813590506126e3816126bf565b92915050565b5f602082840312156126fe576126fd612279565b5b5f61270b848285016126d5565b91505092915050565b5f6020820190506127275f8301846122f9565b92915050565b6127368161238d565b82525050565b5f60208201905061274f5f83018461272d565b92915050565b5f805f6060848603121561276c5761276b612279565b5b5f612779868287016122a0565b935050602061278a868287016122a0565b925050604061279b868287016122a0565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f8201516127e25f8501826123ce565b5060208201516127f560208501826123ce565b50604082015161280860408501826123ce565b50606082015161281b606085018261249b565b50505050565b5f61282c83836127ce565b60808301905092915050565b5f602082019050919050565b5f61284e826127a5565b61285881856127af565b9350612863836127bf565b805f5b8381101561289357815161287a8882612821565b975061288583612838565b925050600181019050612866565b5085935050505092915050565b5f6020820190508181035f8301526128b88184612844565b905092915050565b5f60ff82169050919050565b6128d5816128c0565b82525050565b5f6020820190506128ee5f8301846128cc565b92915050565b6128fd8161247b565b82525050565b5f6020820190506129165f8301846128f4565b92915050565b5f6020828403121561293157612930612279565b5b5f61293e8482850161266d565b91505092915050565b5f6101008201905061295b5f83018b61272d565b612968602083018a6128f4565b61297560408301896122df565b61298260608301886122df565b61298f60808301876122df565b61299c60a08301866122df565b6129a960c08301856122f9565b6129b660e08301846122f9565b9998505050505050505050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a0d826129c7565b810181811067ffffffffffffffff82111715612a2c57612a2b6129d7565b5b80604052505050565b5f612a3e612270565b9050612a4a8282612a04565b919050565b5f67ffffffffffffffff821115612a6957612a686129d7565b5b602082029050602081019050919050565b5f80fd5b5f612a90612a8b84612a4f565b612a35565b90508083825260208201905060208402830185811115612ab357612ab2612a7a565b5b835b81811015612adc5780612ac888826122a0565b845260208401935050602081019050612ab5565b5050509392505050565b5f82601f830112612afa57612af96129c3565b5b8135612b0a848260208601612a7e565b91505092915050565b5f805f805f60a08688031215612b2c57612b2b612279565b5b5f86013567ffffffffffffffff811115612b4957612b4861227d565b5b612b5588828901612ae6565b9550506020612b66888289016126d5565b9450506040612b77888289016122a0565b9350506060612b88888289016122a0565b9250506080612b99888289016122a0565b9150509295509295909350565b612baf816122ee565b8114612bb9575f80fd5b50565b5f81359050612bca81612ba6565b92915050565b5f8060408385031215612be657612be5612279565b5b5f612bf3858286016126d5565b9250506020612c0485828601612bbc565b9150509250929050565b5f606082019050612c215f8301866128f4565b612c2e60208301856122df565b612c3b60408301846122df565b949350505050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f612c87600c83612c43565b9150612c9282612c53565b602082019050919050565b5f6020820190508181035f830152612cb481612c7b565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f612cef601383612c43565b9150612cfa82612cbb565b602082019050919050565b5f6020820190508181035f830152612d1c81612ce3565b9050919050565b7f4e6f7420726561647900000000000000000000000000000000000000000000005f82015250565b5f612d57600983612c43565b9150612d6282612d23565b602082019050919050565b5f6020820190508181035f830152612d8481612d4b565b9050919050565b5f819050919050565b612da5612da082612281565b612d8b565b82525050565b5f612db68285612d94565b602082019150612dc68284612d94565b6020820191508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e0d82612281565b9150612e1883612281565b925082612e2857612e27612dd6565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e9782612281565b9150612ea283612281565b9250828201905080821115612eba57612eb9612e60565b5b92915050565b5f606082019050612ed35f8301866128f4565b612ee060208301856128f4565b612eed60408301846122df565b949350505050565b5f608082019050612f085f8301876122df565b612f1560208301866122df565b612f2260408301856122df565b612f2f60608301846122df565b95945050505050565b5f604082019050612f4b5f8301856128f4565b612f5860208301846122df565b9392505050565b5f606082019050612f725f8301866122df565b612f7f60208301856122df565b612f8c60408301846122df565b949350505050565b5f612f9e82612281565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fd057612fcf612e60565b5b600182019050919050565b5f612fe582612281565b9150612ff083612281565b925082820390508181111561300857613007612e60565b5b92915050565b7f496e76616c6964207461726765740000000000000000000000000000000000005f82015250565b5f613042600e83612c43565b915061304d8261300e565b602082019050919050565b5f6020820190508181035f83015261306f81613036565b9050919050565b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f6130aa601083612c43565b91506130b582613076565b602082019050919050565b5f6020820190508181035f8301526130d78161309e565b9050919050565b5f815190506130ec816126bf565b92915050565b5f6020828403121561310757613106612279565b5b5f613114848285016130de565b91505092915050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f613151600d83612c43565b915061315c8261311d565b602082019050919050565b5f6020820190508181035f83015261317e81613145565b9050919050565b5f8160601b9050919050565b5f61319b82613185565b9050919050565b5f6131ac82613191565b9050919050565b6131c46131bf8261247b565b6131a2565b82525050565b5f6131d58287612d94565b6020820191506131e582866131b3565b6014820191506131f58285612d94565b60208201915061320582846131b3565b60148201915081905095945050505050565b5f60808201905061322a5f8301876128f4565b61323760208301866122df565b61324460408301856122df565b61325160608301846122df565b95945050505050565b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f61328e600d83612c43565b91506132998261325a565b602082019050919050565b5f6020820190508181035f8301526132bb81613282565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f6132f6600b83612c43565b9150613301826132c2565b602082019050919050565b5f6020820190508181035f830152613323816132ea565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f61335e601183612c43565b91506133698261332a565b602082019050919050565b5f6020820190508181035f83015261338b81613352565b9050919050565b7f496e76616c6964207469657200000000000000000000000000000000000000005f82015250565b5f6133c6600c83612c43565b91506133d182613392565b602082019050919050565b5f6020820190508181035f8301526133f3816133ba565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f61342e601083612c43565b9150613439826133fa565b602082019050919050565b5f6020820190508181035f83015261345b81613422565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f613496601483612c43565b91506134a182613462565b602082019050919050565b5f6020820190508181035f8301526134c38161348a565b9050919050565b5f6134d482612281565b91506134df83612281565b92508282026134ed81612281565b9150828204841483151761350457613503612e60565b5b5092915050565b5f61351582612281565b915061352083612281565b9250826135305761352f612dd6565b5b82820490509291505056fea2646970667358221220a0ca0ba9784c9a0aa5bb38189d281e27215eb1c0c748d0523b28df7cf478755b64736f6c634300081a0033000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Deployed Bytecode
0x608060405260043610610169575f3560e01c806380e36dd8116100d0578063cb525a3f11610089578063e7e8517c11610063578063e7e8517c14610520578063eaf98d231461054a578063ecdc2c0114610574578063f2fde38b146105b257610170565b8063cb525a3f146104a0578063dc3a4e9b146104dc578063dfbed623146104f857610170565b806380e36dd81461038d57806383d5e726146103b75780638da5cb5b146103e15780639a1564f01461040b5780639fe9ada314610435578063c82db8f91461047857610170565b8063536fff6c11610122578063536fff6c1461028357806354f276b9146102bf57806361eba652146102fb5780636358ec571461032557806365e17c9d1461034d578063715018a61461037757610170565b8063039af9eb146101745780630594fd04146101b35780630a47f932146101dd5780630f5f1dbc146102075780631966cdbe14610231578063339b2cff1461025957610170565b3661017057005b5f80fd5b34801561017f575f80fd5b5061019a600480360381019061019591906122b4565b6105da565b6040516101aa9493929190612308565b60405180910390f35b3480156101be575f80fd5b506101c7610612565b6040516101d4919061234b565b60405180910390f35b3480156101e8575f80fd5b506101f1610618565b6040516101fe91906125fe565b60405180910390f35b348015610212575f80fd5b5061021b610629565b604051610228919061263e565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612681565b61064e565b005b348015610264575f80fd5b5061026d610c4e565b60405161027a919061263e565b60405180910390f35b34801561028e575f80fd5b506102a960048036038101906102a491906126e9565b610c73565b6040516102b69190612714565b60405180910390f35b3480156102ca575f80fd5b506102e560048036038101906102e091906122b4565b610c90565b6040516102f2919061273c565b60405180910390f35b348015610306575f80fd5b5061030f610cb0565b60405161031c91906125fe565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612755565b610cc1565b005b348015610358575f80fd5b50610361610d98565b60405161036e919061263e565b60405180910390f35b348015610382575f80fd5b5061038b610dbd565b005b348015610398575f80fd5b506103a1610dd0565b6040516103ae91906128a0565b60405180910390f35b3480156103c2575f80fd5b506103cb610ed9565b6040516103d891906128db565b60405180910390f35b3480156103ec575f80fd5b506103f5610ede565b6040516104029190612903565b60405180910390f35b348015610416575f80fd5b5061041f610f05565b60405161042c91906125fe565b60405180910390f35b348015610440575f80fd5b5061045b6004803603810190610456919061291c565b610f15565b60405161046f989796959493929190612947565b60405180910390f35b348015610483575f80fd5b5061049e6004803603810190610499919061291c565b610f91565b005b3480156104ab575f80fd5b506104c660048036038101906104c19190612b13565b611349565b6040516104d3919061273c565b60405180910390f35b6104f660048036038101906104f19190612681565b6116af565b005b348015610503575f80fd5b5061051e60048036038101906105199190612bd0565b611a67565b005b34801561052b575f80fd5b50610534611b15565b60405161054191906128db565b60405180910390f35b348015610555575f80fd5b5061055e611b1a565b60405161056b91906128db565b60405180910390f35b34801561057f575f80fd5b5061059a60048036038101906105959190612681565b611b1f565b6040516105a993929190612c0e565b60405180910390f35b3480156105bd575f80fd5b506105d860048036038101906105d391906126e9565b611b7e565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b60606106246001611c02565b905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1661066d610ede565b73ffffffffffffffffffffffffffffffffffffffff1614806106d55750600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070b90612c9d565b60405180910390fd5b61071c611f54565b5f60075f8481526020019081526020015f209050806007015f9054906101000a900460ff1615610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077890612d05565b60405180910390fd5b8060050154816004015410158061079c575080600601544210155b6107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290612d6d565b60405180910390fd5b5f816004015483426040516020016107f4929190612dab565b604051602081830303815290604052805190602001205f1c6108169190612e03565b90505f805f8060085f8981526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b828210156108e4578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250508152602001906001019061084c565b5050505090505f5b815181101561095d575f82828151811061090957610908612e33565b5b602002602001015190508060400151866109239190612e8d565b87101561093d57805f01519450806040015193505061095d565b80604001518661094d9190612e8d565b95505080806001019150506108ec565b505f4790505f61098d606461097f600860ff1685611f9a90919063ffffffff16565b611faf90919063ffffffff16565b90505f6109ba60646109ac604860ff1686611f9a90919063ffffffff16565b611faf90919063ffffffff16565b90505f6109e2826109d48587611fc490919063ffffffff16565b611fc490919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610a48573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610aad573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b12573d5f803e3d5ffd5b50896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30898d600301546040518463ffffffff1660e01b8152600401610b7793929190612ec0565b5f604051808303815f87803b158015610b8e575f80fd5b505af1158015610ba0573d5f803e3d5ffd5b5050505060018a6007015f6101000a81548160ff0219169083151502179055508b7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc9585858585604051610bf69493929190612ef5565b60405180910390a28b7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc8888604051610c30929190612f38565b60405180910390a250505050505050505050610c4a611fd9565b5050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f915054906101000a900460ff1681565b60098181548110610c9f575f80fd5b905f5260205f20015f915090505481565b6060610cbc6002611c02565b905090565b610cc9611fe2565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a848484604051610d7493929190612f5f565b60405180910390a260065f815480929190610d8e90612f94565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dc5611fe2565b610dce5f612069565b565b60605f6001600654610de29190612fdb565b67ffffffffffffffff811115610dfb57610dfa6129d7565b5b604051908082528060200260200182016040528015610e3457816020015b610e21612183565b815260200190600190039081610e195790505b5090505f600190505b600654811015610ed15760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505082600183610ea89190612fdb565b81518110610eb957610eb8612e33565b5b60200260200101819052508080600101915050610e3d565b508091505090565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060610f105f611c02565b905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015490806007015f9054906101000a900460ff16908060070160019054906101000a900460ff16905088565b3373ffffffffffffffffffffffffffffffffffffffff16610fb0610ede565b73ffffffffffffffffffffffffffffffffffffffff1614806110185750600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90612c9d565b60405180910390fd5b61105f611f54565b5f60075f8381526020019081526020015f209050806007015f9054906101000a900460ff16156110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bb90612d05565b60405180910390fd5b5f805f90505b60085f8581526020019081526020015f208054905081101561124f575f60085f8681526020019081526020015f20828154811061110a57611109612e33565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f1935050505015801561122e573d5f803e3d5ffd5b50805f01518461123e9190612e8d565b9350505080806001019150506110ca565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30611298610ede565b85600301546040518463ffffffff1660e01b81526004016112bb93929190612ec0565b5f604051808303815f87803b1580156112d2575f80fd5b505af11580156112e4573d5f803e3d5ffd5b505050506001826007015f6101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e682604051611334919061234b565b60405180910390a25050611346611fd9565b50565b5f611352611fe2565b5f8311611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90613058565b60405180910390fd5b5f82116113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd906130c0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b8152600401611426919061234b565b602060405180830381865afa158015611441573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146591906130f2565b73ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b290613167565b60405180910390fd5b428585336040516020016114d294939291906131ca565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020015f8152602001848152602001834261153c9190612e8d565b81526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f015560208201518160010190805190602001906115859291906121a9565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015f6101000a81548160ff0219169083151502179055506101008201518160070160016101000a81548160ff021916908315150217905550905050600981908060018154018082558091505060019003905f5260205f20015f9091909190915055807f3b7847a02041ae017dcb9db9abe0e7ebc764ea42cb2b7a56f1ac3f17ba746558868686864261168e9190612e8d565b60405161169e9493929190613217565b60405180910390a295945050505050565b6116b7611f54565b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160070160019054906101000a900460ff16611772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611769906132a4565b60405180910390fd5b816007015f9054906101000a900460ff16156117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba9061330c565b60405180910390fd5b81600601544210611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090613374565b60405180910390fd5b806060015161184d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611844906133dc565b60405180910390fd5b6118a78260010180548060200260200160405190810160405280929190818152602001828054801561189c57602002820191905f5260205f20905b815481526020019060010190808311611888575b50505050508461212a565b6118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613444565b60405180910390fd5b805f0151341461192b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611922906134ac565b60405180910390fd5b5f816040015182602001516119409190612e8d565b905060085f8681526020019081526020015f2060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155505080836004015f828254611a179190612e8d565b92505081905550847f9547adb56b87436876e7c387b0becc7270032515aedda7a210440394c8146d6d3383604051611a50929190612f38565b60405180910390a2505050611a63611fd9565b5050565b611a6f611fe2565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c279682604051611b099190612714565b60405180910390a25050565b601481565b600881565b6008602052815f5260405f208181548110611b38575f80fd5b905f5260205f2090600302015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b611b86611fe2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf6575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611bed9190612903565b60405180910390fd5b611bff81612069565b50565b60605f60098054905067ffffffffffffffff811115611c2457611c236129d7565b5b604051908082528060200260200182016040528015611c5d57816020015b611c4a6121f4565b815260200190600190039081611c425790505b5090505f805b600980549050811015611ea0575f60098281548110611c8557611c84612e33565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff1603611cd757816007015f9054906101000a900460ff16158015611cd05750816006015442105b9050611d3f565b60018860ff1603611cfa57816007015f9054906101000a900460ff169050611d3e565b60028860ff1603611d3d57816007015f9054906101000a900460ff16158015611d3a575081600501548260040154101580611d39575081600601544210155b5b90505b5b5b8015611e905781604051806101200160405290815f820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015611da857602002820191905f5260205f20905b815481526020019060010190808311611d94575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff161515151581526020016007820160019054906101000a900460ff161515151581525050868681518110611e7657611e75612e33565b5b60200260200101819052508480611e8c90612f94565b9550505b5050508080600101915050611c63565b505f8167ffffffffffffffff811115611ebc57611ebb6129d7565b5b604051908082528060200260200182016040528015611ef557816020015b611ee26121f4565b815260200190600190039081611eda5790505b5090505f5b82811015611f4857838181518110611f1557611f14612e33565b5b6020026020010151828281518110611f3057611f2f612e33565b5b60200260200101819052508080600101915050611efa565b50809350505050919050565b600260015403611f90576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f8183611fa791906134ca565b905092915050565b5f8183611fbc919061350b565b905092915050565b5f8183611fd19190612fdb565b905092915050565b60018081905550565b611fea61217c565b73ffffffffffffffffffffffffffffffffffffffff16612008610ede565b73ffffffffffffffffffffffffffffffffffffffff16146120675761202b61217c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161205e9190612903565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b8351811015612171578284828151811061214d5761214c612e33565b5b602002602001015103612164576001915050612176565b8080600101915050612130565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f209081019282156121e3579160200282015b828111156121e25782518255916020019190600101906121c7565b5b5090506121f09190612255565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81526020015f151581526020015f151581525090565b5b8082111561226c575f815f905550600101612256565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61229381612281565b811461229d575f80fd5b50565b5f813590506122ae8161228a565b92915050565b5f602082840312156122c9576122c8612279565b5b5f6122d6848285016122a0565b91505092915050565b6122e881612281565b82525050565b5f8115159050919050565b612302816122ee565b82525050565b5f60808201905061231b5f8301876122df565b61232860208301866122df565b61233560408301856122df565b61234260608301846122f9565b95945050505050565b5f60208201905061235e5f8301846122df565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61239f8161238d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6123d781612281565b82525050565b5f6123e883836123ce565b60208301905092915050565b5f602082019050919050565b5f61240a826123a5565b61241481856123af565b935061241f836123bf565b805f5b8381101561244f57815161243688826123dd565b9750612441836123f4565b925050600181019050612422565b5085935050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124858261245c565b9050919050565b6124958161247b565b82525050565b6124a4816122ee565b82525050565b5f61012083015f8301516124c05f860182612396565b50602083015184820360208601526124d88282612400565b91505060408301516124ed604086018261248c565b50606083015161250060608601826123ce565b50608083015161251360808601826123ce565b5060a083015161252660a08601826123ce565b5060c083015161253960c08601826123ce565b5060e083015161254c60e086018261249b565b5061010083015161256161010086018261249b565b508091505092915050565b5f61257783836124aa565b905092915050565b5f602082019050919050565b5f61259582612364565b61259f818561236e565b9350836020820285016125b18561237e565b805f5b858110156125ec57848403895281516125cd858261256c565b94506125d88361257f565b925060208a019950506001810190506125b4565b50829750879550505050505092915050565b5f6020820190508181035f830152612616818461258b565b905092915050565b5f6126288261245c565b9050919050565b6126388161261e565b82525050565b5f6020820190506126515f83018461262f565b92915050565b6126608161238d565b811461266a575f80fd5b50565b5f8135905061267b81612657565b92915050565b5f806040838503121561269757612696612279565b5b5f6126a48582860161266d565b92505060206126b5858286016122a0565b9150509250929050565b6126c88161247b565b81146126d2575f80fd5b50565b5f813590506126e3816126bf565b92915050565b5f602082840312156126fe576126fd612279565b5b5f61270b848285016126d5565b91505092915050565b5f6020820190506127275f8301846122f9565b92915050565b6127368161238d565b82525050565b5f60208201905061274f5f83018461272d565b92915050565b5f805f6060848603121561276c5761276b612279565b5b5f612779868287016122a0565b935050602061278a868287016122a0565b925050604061279b868287016122a0565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f8201516127e25f8501826123ce565b5060208201516127f560208501826123ce565b50604082015161280860408501826123ce565b50606082015161281b606085018261249b565b50505050565b5f61282c83836127ce565b60808301905092915050565b5f602082019050919050565b5f61284e826127a5565b61285881856127af565b9350612863836127bf565b805f5b8381101561289357815161287a8882612821565b975061288583612838565b925050600181019050612866565b5085935050505092915050565b5f6020820190508181035f8301526128b88184612844565b905092915050565b5f60ff82169050919050565b6128d5816128c0565b82525050565b5f6020820190506128ee5f8301846128cc565b92915050565b6128fd8161247b565b82525050565b5f6020820190506129165f8301846128f4565b92915050565b5f6020828403121561293157612930612279565b5b5f61293e8482850161266d565b91505092915050565b5f6101008201905061295b5f83018b61272d565b612968602083018a6128f4565b61297560408301896122df565b61298260608301886122df565b61298f60808301876122df565b61299c60a08301866122df565b6129a960c08301856122f9565b6129b660e08301846122f9565b9998505050505050505050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a0d826129c7565b810181811067ffffffffffffffff82111715612a2c57612a2b6129d7565b5b80604052505050565b5f612a3e612270565b9050612a4a8282612a04565b919050565b5f67ffffffffffffffff821115612a6957612a686129d7565b5b602082029050602081019050919050565b5f80fd5b5f612a90612a8b84612a4f565b612a35565b90508083825260208201905060208402830185811115612ab357612ab2612a7a565b5b835b81811015612adc5780612ac888826122a0565b845260208401935050602081019050612ab5565b5050509392505050565b5f82601f830112612afa57612af96129c3565b5b8135612b0a848260208601612a7e565b91505092915050565b5f805f805f60a08688031215612b2c57612b2b612279565b5b5f86013567ffffffffffffffff811115612b4957612b4861227d565b5b612b5588828901612ae6565b9550506020612b66888289016126d5565b9450506040612b77888289016122a0565b9350506060612b88888289016122a0565b9250506080612b99888289016122a0565b9150509295509295909350565b612baf816122ee565b8114612bb9575f80fd5b50565b5f81359050612bca81612ba6565b92915050565b5f8060408385031215612be657612be5612279565b5b5f612bf3858286016126d5565b9250506020612c0485828601612bbc565b9150509250929050565b5f606082019050612c215f8301866128f4565b612c2e60208301856122df565b612c3b60408301846122df565b949350505050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f612c87600c83612c43565b9150612c9282612c53565b602082019050919050565b5f6020820190508181035f830152612cb481612c7b565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f612cef601383612c43565b9150612cfa82612cbb565b602082019050919050565b5f6020820190508181035f830152612d1c81612ce3565b9050919050565b7f4e6f7420726561647900000000000000000000000000000000000000000000005f82015250565b5f612d57600983612c43565b9150612d6282612d23565b602082019050919050565b5f6020820190508181035f830152612d8481612d4b565b9050919050565b5f819050919050565b612da5612da082612281565b612d8b565b82525050565b5f612db68285612d94565b602082019150612dc68284612d94565b6020820191508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e0d82612281565b9150612e1883612281565b925082612e2857612e27612dd6565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e9782612281565b9150612ea283612281565b9250828201905080821115612eba57612eb9612e60565b5b92915050565b5f606082019050612ed35f8301866128f4565b612ee060208301856128f4565b612eed60408301846122df565b949350505050565b5f608082019050612f085f8301876122df565b612f1560208301866122df565b612f2260408301856122df565b612f2f60608301846122df565b95945050505050565b5f604082019050612f4b5f8301856128f4565b612f5860208301846122df565b9392505050565b5f606082019050612f725f8301866122df565b612f7f60208301856122df565b612f8c60408301846122df565b949350505050565b5f612f9e82612281565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fd057612fcf612e60565b5b600182019050919050565b5f612fe582612281565b9150612ff083612281565b925082820390508181111561300857613007612e60565b5b92915050565b7f496e76616c6964207461726765740000000000000000000000000000000000005f82015250565b5f613042600e83612c43565b915061304d8261300e565b602082019050919050565b5f6020820190508181035f83015261306f81613036565b9050919050565b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f6130aa601083612c43565b91506130b582613076565b602082019050919050565b5f6020820190508181035f8301526130d78161309e565b9050919050565b5f815190506130ec816126bf565b92915050565b5f6020828403121561310757613106612279565b5b5f613114848285016130de565b91505092915050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f613151600d83612c43565b915061315c8261311d565b602082019050919050565b5f6020820190508181035f83015261317e81613145565b9050919050565b5f8160601b9050919050565b5f61319b82613185565b9050919050565b5f6131ac82613191565b9050919050565b6131c46131bf8261247b565b6131a2565b82525050565b5f6131d58287612d94565b6020820191506131e582866131b3565b6014820191506131f58285612d94565b60208201915061320582846131b3565b60148201915081905095945050505050565b5f60808201905061322a5f8301876128f4565b61323760208301866122df565b61324460408301856122df565b61325160608301846122df565b95945050505050565b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f61328e600d83612c43565b91506132998261325a565b602082019050919050565b5f6020820190508181035f8301526132bb81613282565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f6132f6600b83612c43565b9150613301826132c2565b602082019050919050565b5f6020820190508181035f830152613323816132ea565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f61335e601183612c43565b91506133698261332a565b602082019050919050565b5f6020820190508181035f83015261338b81613352565b9050919050565b7f496e76616c6964207469657200000000000000000000000000000000000000005f82015250565b5f6133c6600c83612c43565b91506133d182613392565b602082019050919050565b5f6020820190508181035f8301526133f3816133ba565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f61342e601083612c43565b9150613439826133fa565b602082019050919050565b5f6020820190508181035f83015261345b81613422565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f613496601483612c43565b91506134a182613462565b602082019050919050565b5f6020820190508181035f8301526134c38161348a565b9050919050565b5f6134d482612281565b91506134df83612281565b92508282026134ed81612281565b9150828204841483151761350457613503612e60565b5b5092915050565b5f61351582612281565b915061352083612281565b9250826135305761352f612dd6565b5b82820490509291505056fea2646970667358221220a0ca0ba9784c9a0aa5bb38189d281e27215eb1c0c748d0523b28df7cf478755b64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
-----Decoded View---------------
Arg [0] : _initialOwner (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [1] : _feeAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [2] : _treasuryAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [3] : _operationsAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [1] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [2] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [3] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Deployed Bytecode Sourcemap
14886:9507:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15989:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16038:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22572:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15288:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19831:1628;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15243:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16220:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16185:28;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22687:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17510:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15203:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6865:103;;;;;;;;;;;;;:::i;:::-;;22185:262;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15060:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6190:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22455:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16074:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;21498:656;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17859:1083;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18981:817;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24185:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15110:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15016:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16121:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7123:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15989:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16038:29::-;;;;:::o;22572:107::-;22620:14;22654:17;22669:1;22654:14;:17::i;:::-;22647:24;;22572:107;:::o;15288:40::-;;;;;;;;;;;;;:::o;19831:1628::-;17053:10;17042:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;17067:17;:29;17085:10;17067:29;;;;;;;;;;;;;;;;;;;;;;;;;17042:54;17034:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;2589:21:::1;:19;:21::i;:::-;19932:15:::2;19950:7;:16;19958:7;19950:16;;;;;;;;;;;19932:34;;19986:1;:9;;;;;;;;;;;;19985:10;19977:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;20056:1;:15;;;20038:1;:14;;;:33;;:65;;;;20094:1;:9;;;20075:15;:28;;20038:65;20030:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;20138:20;20229:1;:14;;;20196:10;20208:15;20179:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20169:56;;;;;;20161:65;;:82;;;;:::i;:::-;20138:105;;20254:18;20283:14:::0;20308:21:::2;20342:28:::0;20373:14:::2;:23;20388:7;20373:23;;;;;;;;;;;20342:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;20411:9;20407:321;20430:5;:12;20426:1;:16;20407:321;;;20464:22;20489:5;20495:1;20489:8;;;;;;;;:::i;:::-;;;;;;;;20464:33;;20543:1;:9;;;20530:10;:22;;;;:::i;:::-;20515:12;:37;20512:167;;;20582:1;:13;;;20573:22;;20630:1;:9;;;20614:25;;20658:5;;;20512:167;20707:1;:9;;;20693:23;;;;;:::i;:::-;;;20449:279;20444:3;;;;;;;20407:321;;;;20740:22;20765:21;20740:46;;20797:17;20817:40;20853:3;20817:31;15052:1;20817:31;;:14;:18;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;20797:60;;20868:22;20893:45;20934:3;20893:36;15101:2;20893:36;;:14;:18;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;20868:70;;20949:24;20976:49;21010:14;20976:29;20995:9;20976:14;:18;;:29;;;;:::i;:::-;:33;;:49;;;;:::i;:::-;20949:76;;21038:10;;;;;;;;;;;:19;;:30;21058:9;21038:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;21079:15;;;;;;;;;;;:24;;:40;21104:14;21079:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;21130:17;;;;;;;;;;;:26;;:44;21157:16;21130:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;21192:1;:12;;;;;;;;;;;;21187:31;;;21227:4;21234:6;21242:1;:7;;;21187:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;21273:4;21261:1;:9;;;:16;;;;;;;;;;;;;;;;;;21320:7;21303:86;21329:14;21345:9;21356:14;21372:16;21303:86;;;;;;;;;:::i;:::-;;;;;;;;21420:7;21405:46;21429:6;21437:13;21405:46;;;;;;;:::i;:::-;;;;;;;;19921:1538;;;;;;;;;;2633:20:::1;:18;:20::i;:::-;19831:1628:::0;;:::o;15243:38::-;;;;;;;;;;;;;:::o;16220:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;16185:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22687:107::-;22735:14;22769:17;22784:1;22769:14;:17::i;:::-;22762:24;;22687:107;:::o;17510:318::-;6076:13;:11;:13::i;:::-;17671:51:::1;;;;;;;;17681:7;17671:51;;;;17690:11;17671:51;;;;17703:12;17671:51;;;;17717:4;17671:51;;;;::::0;17651:5:::1;:17;17657:10;;17651:17;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17750:10;;17738:59;17762:7;17771:11;17784:12;17738:59;;;;;;;;:::i;:::-;;;;;;;;17808:10;;:12;;;;;;;;;:::i;:::-;;;;;;17510:318:::0;;;:::o;15203:33::-;;;;;;;;;;;;;:::o;6865:103::-;6076:13;:11;:13::i;:::-;6930:30:::1;6957:1;6930:18;:30::i;:::-;6865:103::o:0;22185:262::-;22231:18;22262:24;22316:1;22305:10;;:12;;;;:::i;:::-;22289:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;22262:56;;22333:9;22345:1;22333:13;;22329:88;22352:10;;22348:1;:14;22329:88;;;22397:5;:8;22403:1;22397:8;;;;;;;;;;;22384:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;22392:1;22390;:3;;;;:::i;:::-;22384:10;;;;;;;;:::i;:::-;;;;;;;:21;;;;22364:3;;;;;;;22329:88;;;;22434:5;22427:12;;;22185:262;:::o;15060:43::-;15101:2;15060:43;:::o;6190:87::-;6236:7;6263:6;;;;;;;;;;;6256:13;;6190:87;:::o;22455:109::-;22505:14;22539:17;22554:1;22539:14;:17::i;:::-;22532:24;;22455:109;:::o;16074:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21498:656::-;17053:10;17042:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;17067:17;:29;17085:10;17067:29;;;;;;;;;;;;;;;;;;;;;;;;;17042:54;17034:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;2589:21:::1;:19;:21::i;:::-;21576:15:::2;21594:7;:16;21602:7;21594:16;;;;;;;;;;;21576:34;;21626:1;:9;;;;;;;;;;;;21625:10;21617:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;21672:21;21710:9:::0;21722:1:::2;21710:13;;21706:290;21729:14;:23;21744:7;21729:23;;;;;;;;;;;:30;;;;21725:1;:34;21706:290;;;21777:22;21802:14;:23;21817:7;21802:23;;;;;;;;;;;21826:1;21802:26;;;;;;;;:::i;:::-;;;;;;;;;;;;21777:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;21839:21;21863:5;:15;21869:1;:8;;;21863:15;;;;;;;;;;;21839:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;21911:1;:13;;;21903:31;;:45;21935:4;:12;;;21903:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;21976:4;:12;;;21959:29;;;;;:::i;:::-;;;21766:230;;21761:3;;;;;;;21706:290;;;;22013:1;:12;;;;;;;;;;;;22008:31;;;22048:4;22055:7;:5;:7::i;:::-;22064:1;:7;;;22008:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;22091:4;22079:1;:9;;;:16;;;;;;;;;;;;;;;;;;22127:7;22113:37;22136:13;22113:37;;;;;;:::i;:::-;;;;;;;;21569:585;;2633:20:::1;:18;:20::i;:::-;21498:656:::0;:::o;17859:1083::-;18067:15;6076:13;:11;:13::i;:::-;18119:1:::1;18103:13;:17;18095:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;18169:1;18158:8;:12;18150:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;18253:4;18210:48;;18215:10;18210:24;;;18235:5;18210:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;18202:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18340:15;18370:10;18395:5;18415:10;18309:127;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18299:138;;;;;;18289:148;;18469:328;;;;;;;;18494:7;18469:328;;;;18530:12;18469:328;;;;18569:10;18469:328;;;;;;18601:5;18469:328;;;;18635:1;18469:328;;;;18666:13;18469:328;;;;18721:8;18703:15;:26;;;;:::i;:::-;18469:328;;;;18753:5;18469:328;;;;;;18781:4;18469:328;;;;::::0;18450:7:::1;:16;18458:7;18450:16;;;;;;;;;;;:347;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18810:11;18827:7;18810:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18864:7;18851:83;18873:10;18885:5;18892:13;18925:8;18907:15;:26;;;;:::i;:::-;18851:83;;;;;;;;;:::i;:::-;;;;;;;;17859:1083:::0;;;;;;;:::o;18981:817::-;2589:21;:19;:21::i;:::-;19071:15:::1;19089:7;:16;19097:7;19089:16;;;;;;;;;;;19071:34;;19116:21;19140:5;:13;19146:6;19140:13;;;;;;;;;;;19116:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;19182:1;:8;;;;;;;;;;;;19174:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;19228:1;:9;;;;;;;;;;;;19227:10;19219:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;19290:1;:9;;;19272:15;:27;19264:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;19340:4;:11;;;19332:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;19387:32;19396:1;:14;;19387:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19412:6;19387:8;:32::i;:::-;19379:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19472:4;:12;;;19459:9;:25;19451:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19522:20;19564:4;:17;;;19545:4;:16;;;:36;;;;:::i;:::-;19522:59;;19592:14;:23;19607:7;19592:23;;;;;;;;;;;19621:47;;;;;;;;19635:10;19621:47;;;;;;19647:6;19621:47;;;;19655:12;19621:47;;::::0;19592:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19698:12;19680:1;:14;;;:30;;;;;;;:::i;:::-;;;;;;;;19756:7;19736:54;19765:10;19777:12;19736:54;;;;;;;:::i;:::-;;;;;;;;19060:738;;;2633:20:::0;:18;:20::i;:::-;18981:817;;:::o;24185:168::-;6076:13;:11;:13::i;:::-;24294:6:::1;24266:17;:25;24284:6;24266:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24330:6;24316:29;;;24338:6;24316:29;;;;;;:::i;:::-;;;;;;;;24185:168:::0;;:::o;15110:45::-;15153:2;15110:45;:::o;15016:37::-;15052:1;15016:37;:::o;16121:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7123:220::-;6076:13;:11;:13::i;:::-;7228:1:::1;7208:22;;:8;:22;;::::0;7204:93:::1;;7282:1;7254:31;;;;;;;;;;;:::i;:::-;;;;;;;;7204:93;7307:28;7326:8;7307:18;:28::i;:::-;7123:220:::0;:::o;22827:1087::-;22891:14;22918:21;22954:11;:18;;;;22942:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;22918:55;;22984:13;23026:9;23022:710;23045:11;:18;;;;23041:1;:22;23022:710;;;23085:10;23098:11;23110:1;23098:14;;;;;;;;:::i;:::-;;;;;;;;;;23085:27;;23127:15;23145:7;:11;23153:2;23145:11;;;;;;;;;;;23127:29;;23185:12;23229:1;23215:10;:15;;;23212:391;;23273:1;:9;;;;;;;;;;;;23272:10;:41;;;;;23304:1;:9;;;23286:15;:27;23272:41;23262:51;;23212:391;;;23352:1;23338:10;:15;;;23335:268;;23395:1;:9;;;;;;;;;;;;23385:19;;23335:268;;;23443:1;23429:10;:15;;;23426:177;;23485:1;:9;;;;;;;;;;;;23484:10;:103;;;;;23539:1;:15;;;23521:1;:14;;;:33;;:65;;;;23577:1;:9;;;23558:15;:28;;23521:65;23484:103;23474:113;;23426:177;23335:268;23212:391;23634:7;23631:90;;;23678:1;23662:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;23669:5;23662:13;;;;;;;;:::i;:::-;;;;;;;:17;;;;23698:7;;;;;:::i;:::-;;;;23631:90;23070:662;;;23065:3;;;;;;;23022:710;;;;23744:22;23781:5;23769:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;23744:43;;23802:9;23798:84;23821:5;23817:1;:9;23798:84;;;23861:6;23868:1;23861:9;;;;;;;;:::i;:::-;;;;;;;;23848:7;23856:1;23848:10;;;;;;;;:::i;:::-;;;;;;;:22;;;;23828:3;;;;;;;23798:84;;;;23899:7;23892:14;;;;;22827:1087;;;:::o;2669:315::-;1967:1;2798:7;;:18;2794:88;;2840:30;;;;;;;;;;;;;;2794:88;1967:1;2959:7;:17;;;;2669:315::o;11315:98::-;11373:7;11404:1;11400;:5;;;;:::i;:::-;11393:12;;11315:98;;;;:::o;11714:::-;11772:7;11803:1;11799;:5;;;;:::i;:::-;11792:12;;11714:98;;;;:::o;10958:::-;11016:7;11047:1;11043;:5;;;;:::i;:::-;11036:12;;10958:98;;;;:::o;2992:212::-;1924:1;3175:7;:21;;;;2992:212::o;6355:166::-;6426:12;:10;:12::i;:::-;6415:23;;:7;:5;:7::i;:::-;:23;;;6411:103;;6489:12;:10;:12::i;:::-;6462:40;;;;;;;;;;;:::i;:::-;;;;;;;;6411:103;6355:166::o;7503:191::-;7577:16;7596:6;;;;;;;;;;;7577:25;;7622:8;7613:6;;:17;;;;;;;;;;;;;;;;;;7677:8;7646:40;;7667:8;7646:40;;;;;;;;;;;;7566:128;7503:191;:::o;23922:222::-;23999:4;24020:9;24032:1;24020:13;;24016:98;24039:3;:10;24035:1;:14;24016:98;;;24084:5;24074:3;24078:1;24074:6;;;;;;;;:::i;:::-;;;;;;;;:15;24071:31;;24098:4;24091:11;;;;;24071:31;24051:3;;;;;;;24016:98;;;;24131:5;24124:12;;23922:222;;;;;:::o;4199:98::-;4252:7;4279:10;4272:17;;4199:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:90::-;1183:7;1226:5;1219:13;1212:21;1201:32;;1149:90;;;:::o;1245:109::-;1326:21;1341:5;1326:21;:::i;:::-;1321:3;1314:34;1245:109;;:::o;1360:541::-;1531:4;1569:3;1558:9;1554:19;1546:27;;1583:71;1651:1;1640:9;1636:17;1627:6;1583:71;:::i;:::-;1664:72;1732:2;1721:9;1717:18;1708:6;1664:72;:::i;:::-;1746;1814:2;1803:9;1799:18;1790:6;1746:72;:::i;:::-;1828:66;1890:2;1879:9;1875:18;1866:6;1828:66;:::i;:::-;1360:541;;;;;;;:::o;1907:222::-;2000:4;2038:2;2027:9;2023:18;2015:26;;2051:71;2119:1;2108:9;2104:17;2095:6;2051:71;:::i;:::-;1907:222;;;;:::o;2135:136::-;2224:6;2258:5;2252:12;2242:22;;2135:136;;;:::o;2277:206::-;2398:11;2432:6;2427:3;2420:19;2472:4;2467:3;2463:14;2448:29;;2277:206;;;;:::o;2489:154::-;2578:4;2601:3;2593:11;;2631:4;2626:3;2622:14;2614:22;;2489:154;;;:::o;2649:77::-;2686:7;2715:5;2704:16;;2649:77;;;:::o;2732:108::-;2809:24;2827:5;2809:24;:::i;:::-;2804:3;2797:37;2732:108;;:::o;2846:114::-;2913:6;2947:5;2941:12;2931:22;;2846:114;;;:::o;2966:174::-;3055:11;3089:6;3084:3;3077:19;3129:4;3124:3;3120:14;3105:29;;2966:174;;;;:::o;3146:132::-;3213:4;3236:3;3228:11;;3266:4;3261:3;3257:14;3249:22;;3146:132;;;:::o;3284:108::-;3361:24;3379:5;3361:24;:::i;:::-;3356:3;3349:37;3284:108;;:::o;3398:179::-;3467:10;3488:46;3530:3;3522:6;3488:46;:::i;:::-;3566:4;3561:3;3557:14;3543:28;;3398:179;;;;:::o;3583:113::-;3653:4;3685;3680:3;3676:14;3668:22;;3583:113;;;:::o;3732:712::-;3841:3;3870:54;3918:5;3870:54;:::i;:::-;3940:76;4009:6;4004:3;3940:76;:::i;:::-;3933:83;;4040:56;4090:5;4040:56;:::i;:::-;4119:7;4150:1;4135:284;4160:6;4157:1;4154:13;4135:284;;;4236:6;4230:13;4263:63;4322:3;4307:13;4263:63;:::i;:::-;4256:70;;4349:60;4402:6;4349:60;:::i;:::-;4339:70;;4195:224;4182:1;4179;4175:9;4170:14;;4135:284;;;4139:14;4435:3;4428:10;;3846:598;;;3732:712;;;;:::o;4450:126::-;4487:7;4527:42;4520:5;4516:54;4505:65;;4450:126;;;:::o;4582:96::-;4619:7;4648:24;4666:5;4648:24;:::i;:::-;4637:35;;4582:96;;;:::o;4684:108::-;4761:24;4779:5;4761:24;:::i;:::-;4756:3;4749:37;4684:108;;:::o;4798:99::-;4869:21;4884:5;4869:21;:::i;:::-;4864:3;4857:34;4798:99;;:::o;4959:1870::-;5062:3;5098:6;5093:3;5089:16;5185:4;5178:5;5174:16;5168:23;5204:63;5261:4;5256:3;5252:14;5238:12;5204:63;:::i;:::-;5115:162;5367:4;5360:5;5356:16;5350:23;5420:3;5414:4;5410:14;5403:4;5398:3;5394:14;5387:38;5446:103;5544:4;5530:12;5446:103;:::i;:::-;5438:111;;5287:273;5648:4;5641:5;5637:16;5631:23;5667:63;5724:4;5719:3;5715:14;5701:12;5667:63;:::i;:::-;5570:170;5823:4;5816:5;5812:16;5806:23;5842:63;5899:4;5894:3;5890:14;5876:12;5842:63;:::i;:::-;5750:165;6005:4;5998:5;5994:16;5988:23;6024:63;6081:4;6076:3;6072:14;6058:12;6024:63;:::i;:::-;5925:172;6188:4;6181:5;6177:16;6171:23;6207:63;6264:4;6259:3;6255:14;6241:12;6207:63;:::i;:::-;6107:173;6365:4;6358:5;6354:16;6348:23;6384:63;6441:4;6436:3;6432:14;6418:12;6384:63;:::i;:::-;6290:167;6542:4;6535:5;6531:16;6525:23;6561:57;6612:4;6607:3;6603:14;6589:12;6561:57;:::i;:::-;6467:161;6712:6;6705:5;6701:18;6695:25;6733:59;6784:6;6779:3;6775:16;6761:12;6733:59;:::i;:::-;6638:164;6819:4;6812:11;;5067:1762;4959:1870;;;;:::o;6835:244::-;6948:10;6983:90;7069:3;7061:6;6983:90;:::i;:::-;6969:104;;6835:244;;;;:::o;7085:135::-;7177:4;7209;7204:3;7200:14;7192:22;;7085:135;;;:::o;7286:1087::-;7449:3;7478:76;7548:5;7478:76;:::i;:::-;7570:108;7671:6;7666:3;7570:108;:::i;:::-;7563:115;;7704:3;7749:4;7741:6;7737:17;7732:3;7728:27;7779:78;7851:5;7779:78;:::i;:::-;7880:7;7911:1;7896:432;7921:6;7918:1;7915:13;7896:432;;;7992:9;7986:4;7982:20;7977:3;7970:33;8043:6;8037:13;8071:108;8174:4;8159:13;8071:108;:::i;:::-;8063:116;;8202:82;8277:6;8202:82;:::i;:::-;8192:92;;8313:4;8308:3;8304:14;8297:21;;7956:372;7943:1;7940;7936:9;7931:14;;7896:432;;;7900:14;8344:4;8337:11;;8364:3;8357:10;;7454:919;;;;;7286:1087;;;;:::o;8379:461::-;8566:4;8604:2;8593:9;8589:18;8581:26;;8653:9;8647:4;8643:20;8639:1;8628:9;8624:17;8617:47;8681:152;8828:4;8819:6;8681:152;:::i;:::-;8673:160;;8379:461;;;;:::o;8846:104::-;8891:7;8920:24;8938:5;8920:24;:::i;:::-;8909:35;;8846:104;;;:::o;8956:142::-;9059:32;9085:5;9059:32;:::i;:::-;9054:3;9047:45;8956:142;;:::o;9104:254::-;9213:4;9251:2;9240:9;9236:18;9228:26;;9264:87;9348:1;9337:9;9333:17;9324:6;9264:87;:::i;:::-;9104:254;;;;:::o;9364:122::-;9437:24;9455:5;9437:24;:::i;:::-;9430:5;9427:35;9417:63;;9476:1;9473;9466:12;9417:63;9364:122;:::o;9492:139::-;9538:5;9576:6;9563:20;9554:29;;9592:33;9619:5;9592:33;:::i;:::-;9492:139;;;;:::o;9637:474::-;9705:6;9713;9762:2;9750:9;9741:7;9737:23;9733:32;9730:119;;;9768:79;;:::i;:::-;9730:119;9888:1;9913:53;9958:7;9949:6;9938:9;9934:22;9913:53;:::i;:::-;9903:63;;9859:117;10015:2;10041:53;10086:7;10077:6;10066:9;10062:22;10041:53;:::i;:::-;10031:63;;9986:118;9637:474;;;;;:::o;10117:122::-;10190:24;10208:5;10190:24;:::i;:::-;10183:5;10180:35;10170:63;;10229:1;10226;10219:12;10170:63;10117:122;:::o;10245:139::-;10291:5;10329:6;10316:20;10307:29;;10345:33;10372:5;10345:33;:::i;:::-;10245:139;;;;:::o;10390:329::-;10449:6;10498:2;10486:9;10477:7;10473:23;10469:32;10466:119;;;10504:79;;:::i;:::-;10466:119;10624:1;10649:53;10694:7;10685:6;10674:9;10670:22;10649:53;:::i;:::-;10639:63;;10595:117;10390:329;;;;:::o;10725:210::-;10812:4;10850:2;10839:9;10835:18;10827:26;;10863:65;10925:1;10914:9;10910:17;10901:6;10863:65;:::i;:::-;10725:210;;;;:::o;10941:118::-;11028:24;11046:5;11028:24;:::i;:::-;11023:3;11016:37;10941:118;;:::o;11065:222::-;11158:4;11196:2;11185:9;11181:18;11173:26;;11209:71;11277:1;11266:9;11262:17;11253:6;11209:71;:::i;:::-;11065:222;;;;:::o;11293:619::-;11370:6;11378;11386;11435:2;11423:9;11414:7;11410:23;11406:32;11403:119;;;11441:79;;:::i;:::-;11403:119;11561:1;11586:53;11631:7;11622:6;11611:9;11607:22;11586:53;:::i;:::-;11576:63;;11532:117;11688:2;11714:53;11759:7;11750:6;11739:9;11735:22;11714:53;:::i;:::-;11704:63;;11659:118;11816:2;11842:53;11887:7;11878:6;11867:9;11863:22;11842:53;:::i;:::-;11832:63;;11787:118;11293:619;;;;;:::o;11918:140::-;12011:6;12045:5;12039:12;12029:22;;11918:140;;;:::o;12064:210::-;12189:11;12223:6;12218:3;12211:19;12263:4;12258:3;12254:14;12239:29;;12064:210;;;;:::o;12280:158::-;12373:4;12396:3;12388:11;;12426:4;12421:3;12417:14;12409:22;;12280:158;;;:::o;12508:861::-;12647:4;12642:3;12638:14;12737:4;12730:5;12726:16;12720:23;12756:63;12813:4;12808:3;12804:14;12790:12;12756:63;:::i;:::-;12662:167;12918:4;12911:5;12907:16;12901:23;12937:63;12994:4;12989:3;12985:14;12971:12;12937:63;:::i;:::-;12839:171;13100:4;13093:5;13089:16;13083:23;13119:63;13176:4;13171:3;13167:14;13153:12;13119:63;:::i;:::-;13020:172;13276:4;13269:5;13265:16;13259:23;13295:57;13346:4;13341:3;13337:14;13323:12;13295:57;:::i;:::-;13202:160;12616:753;12508:861;;:::o;13375:283::-;13496:10;13517:98;13611:3;13603:6;13517:98;:::i;:::-;13647:4;13642:3;13638:14;13624:28;;13375:283;;;;:::o;13664:139::-;13760:4;13792;13787:3;13783:14;13775:22;;13664:139;;;:::o;13877:940::-;14048:3;14077:80;14151:5;14077:80;:::i;:::-;14173:112;14278:6;14273:3;14173:112;:::i;:::-;14166:119;;14309:82;14385:5;14309:82;:::i;:::-;14414:7;14445:1;14430:362;14455:6;14452:1;14449:13;14430:362;;;14531:6;14525:13;14558:115;14669:3;14654:13;14558:115;:::i;:::-;14551:122;;14696:86;14775:6;14696:86;:::i;:::-;14686:96;;14490:302;14477:1;14474;14470:9;14465:14;;14430:362;;;14434:14;14808:3;14801:10;;14053:764;;;13877:940;;;;:::o;14823:477::-;15018:4;15056:2;15045:9;15041:18;15033:26;;15105:9;15099:4;15095:20;15091:1;15080:9;15076:17;15069:47;15133:160;15288:4;15279:6;15133:160;:::i;:::-;15125:168;;14823:477;;;;:::o;15306:86::-;15341:7;15381:4;15374:5;15370:16;15359:27;;15306:86;;;:::o;15398:112::-;15481:22;15497:5;15481:22;:::i;:::-;15476:3;15469:35;15398:112;;:::o;15516:214::-;15605:4;15643:2;15632:9;15628:18;15620:26;;15656:67;15720:1;15709:9;15705:17;15696:6;15656:67;:::i;:::-;15516:214;;;;:::o;15736:118::-;15823:24;15841:5;15823:24;:::i;:::-;15818:3;15811:37;15736:118;;:::o;15860:222::-;15953:4;15991:2;15980:9;15976:18;15968:26;;16004:71;16072:1;16061:9;16057:17;16048:6;16004:71;:::i;:::-;15860:222;;;;:::o;16088:329::-;16147:6;16196:2;16184:9;16175:7;16171:23;16167:32;16164:119;;;16202:79;;:::i;:::-;16164:119;16322:1;16347:53;16392:7;16383:6;16372:9;16368:22;16347:53;:::i;:::-;16337:63;;16293:117;16088:329;;;;:::o;16423:973::-;16700:4;16738:3;16727:9;16723:19;16715:27;;16752:71;16820:1;16809:9;16805:17;16796:6;16752:71;:::i;:::-;16833:72;16901:2;16890:9;16886:18;16877:6;16833:72;:::i;:::-;16915;16983:2;16972:9;16968:18;16959:6;16915:72;:::i;:::-;16997;17065:2;17054:9;17050:18;17041:6;16997:72;:::i;:::-;17079:73;17147:3;17136:9;17132:19;17123:6;17079:73;:::i;:::-;17162;17230:3;17219:9;17215:19;17206:6;17162:73;:::i;:::-;17245:67;17307:3;17296:9;17292:19;17283:6;17245:67;:::i;:::-;17322;17384:3;17373:9;17369:19;17360:6;17322:67;:::i;:::-;16423:973;;;;;;;;;;;:::o;17402:117::-;17511:1;17508;17501:12;17525:102;17566:6;17617:2;17613:7;17608:2;17601:5;17597:14;17593:28;17583:38;;17525:102;;;:::o;17633:180::-;17681:77;17678:1;17671:88;17778:4;17775:1;17768:15;17802:4;17799:1;17792:15;17819:281;17902:27;17924:4;17902:27;:::i;:::-;17894:6;17890:40;18032:6;18020:10;18017:22;17996:18;17984:10;17981:34;17978:62;17975:88;;;18043:18;;:::i;:::-;17975:88;18083:10;18079:2;18072:22;17862:238;17819:281;;:::o;18106:129::-;18140:6;18167:20;;:::i;:::-;18157:30;;18196:33;18224:4;18216:6;18196:33;:::i;:::-;18106:129;;;:::o;18241:311::-;18318:4;18408:18;18400:6;18397:30;18394:56;;;18430:18;;:::i;:::-;18394:56;18480:4;18472:6;18468:17;18460:25;;18540:4;18534;18530:15;18522:23;;18241:311;;;:::o;18558:117::-;18667:1;18664;18657:12;18698:710;18794:5;18819:81;18835:64;18892:6;18835:64;:::i;:::-;18819:81;:::i;:::-;18810:90;;18920:5;18949:6;18942:5;18935:21;18983:4;18976:5;18972:16;18965:23;;19036:4;19028:6;19024:17;19016:6;19012:30;19065:3;19057:6;19054:15;19051:122;;;19084:79;;:::i;:::-;19051:122;19199:6;19182:220;19216:6;19211:3;19208:15;19182:220;;;19291:3;19320:37;19353:3;19341:10;19320:37;:::i;:::-;19315:3;19308:50;19387:4;19382:3;19378:14;19371:21;;19258:144;19242:4;19237:3;19233:14;19226:21;;19182:220;;;19186:21;18800:608;;18698:710;;;;;:::o;19431:370::-;19502:5;19551:3;19544:4;19536:6;19532:17;19528:27;19518:122;;19559:79;;:::i;:::-;19518:122;19676:6;19663:20;19701:94;19791:3;19783:6;19776:4;19768:6;19764:17;19701:94;:::i;:::-;19692:103;;19508:293;19431:370;;;;:::o;19807:1121::-;19927:6;19935;19943;19951;19959;20008:3;19996:9;19987:7;19983:23;19979:33;19976:120;;;20015:79;;:::i;:::-;19976:120;20163:1;20152:9;20148:17;20135:31;20193:18;20185:6;20182:30;20179:117;;;20215:79;;:::i;:::-;20179:117;20320:78;20390:7;20381:6;20370:9;20366:22;20320:78;:::i;:::-;20310:88;;20106:302;20447:2;20473:53;20518:7;20509:6;20498:9;20494:22;20473:53;:::i;:::-;20463:63;;20418:118;20575:2;20601:53;20646:7;20637:6;20626:9;20622:22;20601:53;:::i;:::-;20591:63;;20546:118;20703:2;20729:53;20774:7;20765:6;20754:9;20750:22;20729:53;:::i;:::-;20719:63;;20674:118;20831:3;20858:53;20903:7;20894:6;20883:9;20879:22;20858:53;:::i;:::-;20848:63;;20802:119;19807:1121;;;;;;;;:::o;20934:116::-;21004:21;21019:5;21004:21;:::i;:::-;20997:5;20994:32;20984:60;;21040:1;21037;21030:12;20984:60;20934:116;:::o;21056:133::-;21099:5;21137:6;21124:20;21115:29;;21153:30;21177:5;21153:30;:::i;:::-;21056:133;;;;:::o;21195:468::-;21260:6;21268;21317:2;21305:9;21296:7;21292:23;21288:32;21285:119;;;21323:79;;:::i;:::-;21285:119;21443:1;21468:53;21513:7;21504:6;21493:9;21489:22;21468:53;:::i;:::-;21458:63;;21414:117;21570:2;21596:50;21638:7;21629:6;21618:9;21614:22;21596:50;:::i;:::-;21586:60;;21541:115;21195:468;;;;;:::o;21669:442::-;21818:4;21856:2;21845:9;21841:18;21833:26;;21869:71;21937:1;21926:9;21922:17;21913:6;21869:71;:::i;:::-;21950:72;22018:2;22007:9;22003:18;21994:6;21950:72;:::i;:::-;22032;22100:2;22089:9;22085:18;22076:6;22032:72;:::i;:::-;21669:442;;;;;;:::o;22117:169::-;22201:11;22235:6;22230:3;22223:19;22275:4;22270:3;22266:14;22251:29;;22117:169;;;;:::o;22292:162::-;22432:14;22428:1;22420:6;22416:14;22409:38;22292:162;:::o;22460:366::-;22602:3;22623:67;22687:2;22682:3;22623:67;:::i;:::-;22616:74;;22699:93;22788:3;22699:93;:::i;:::-;22817:2;22812:3;22808:12;22801:19;;22460:366;;;:::o;22832:419::-;22998:4;23036:2;23025:9;23021:18;23013:26;;23085:9;23079:4;23075:20;23071:1;23060:9;23056:17;23049:47;23113:131;23239:4;23113:131;:::i;:::-;23105:139;;22832:419;;;:::o;23257:169::-;23397:21;23393:1;23385:6;23381:14;23374:45;23257:169;:::o;23432:366::-;23574:3;23595:67;23659:2;23654:3;23595:67;:::i;:::-;23588:74;;23671:93;23760:3;23671:93;:::i;:::-;23789:2;23784:3;23780:12;23773:19;;23432:366;;;:::o;23804:419::-;23970:4;24008:2;23997:9;23993:18;23985:26;;24057:9;24051:4;24047:20;24043:1;24032:9;24028:17;24021:47;24085:131;24211:4;24085:131;:::i;:::-;24077:139;;23804:419;;;:::o;24229:159::-;24369:11;24365:1;24357:6;24353:14;24346:35;24229:159;:::o;24394:365::-;24536:3;24557:66;24621:1;24616:3;24557:66;:::i;:::-;24550:73;;24632:93;24721:3;24632:93;:::i;:::-;24750:2;24745:3;24741:12;24734:19;;24394:365;;;:::o;24765:419::-;24931:4;24969:2;24958:9;24954:18;24946:26;;25018:9;25012:4;25008:20;25004:1;24993:9;24989:17;24982:47;25046:131;25172:4;25046:131;:::i;:::-;25038:139;;24765:419;;;:::o;25190:79::-;25229:7;25258:5;25247:16;;25190:79;;;:::o;25275:157::-;25380:45;25400:24;25418:5;25400:24;:::i;:::-;25380:45;:::i;:::-;25375:3;25368:58;25275:157;;:::o;25438:397::-;25578:3;25593:75;25664:3;25655:6;25593:75;:::i;:::-;25693:2;25688:3;25684:12;25677:19;;25706:75;25777:3;25768:6;25706:75;:::i;:::-;25806:2;25801:3;25797:12;25790:19;;25826:3;25819:10;;25438:397;;;;;:::o;25841:180::-;25889:77;25886:1;25879:88;25986:4;25983:1;25976:15;26010:4;26007:1;26000:15;26027:176;26059:1;26076:20;26094:1;26076:20;:::i;:::-;26071:25;;26110:20;26128:1;26110:20;:::i;:::-;26105:25;;26149:1;26139:35;;26154:18;;:::i;:::-;26139:35;26195:1;26192;26188:9;26183:14;;26027:176;;;;:::o;26209:180::-;26257:77;26254:1;26247:88;26354:4;26351:1;26344:15;26378:4;26375:1;26368:15;26395:180;26443:77;26440:1;26433:88;26540:4;26537:1;26530:15;26564:4;26561:1;26554:15;26581:191;26621:3;26640:20;26658:1;26640:20;:::i;:::-;26635:25;;26674:20;26692:1;26674:20;:::i;:::-;26669:25;;26717:1;26714;26710:9;26703:16;;26738:3;26735:1;26732:10;26729:36;;;26745:18;;:::i;:::-;26729:36;26581:191;;;;:::o;26778:442::-;26927:4;26965:2;26954:9;26950:18;26942:26;;26978:71;27046:1;27035:9;27031:17;27022:6;26978:71;:::i;:::-;27059:72;27127:2;27116:9;27112:18;27103:6;27059:72;:::i;:::-;27141;27209:2;27198:9;27194:18;27185:6;27141:72;:::i;:::-;26778:442;;;;;;:::o;27226:553::-;27403:4;27441:3;27430:9;27426:19;27418:27;;27455:71;27523:1;27512:9;27508:17;27499:6;27455:71;:::i;:::-;27536:72;27604:2;27593:9;27589:18;27580:6;27536:72;:::i;:::-;27618;27686:2;27675:9;27671:18;27662:6;27618:72;:::i;:::-;27700;27768:2;27757:9;27753:18;27744:6;27700:72;:::i;:::-;27226:553;;;;;;;:::o;27785:332::-;27906:4;27944:2;27933:9;27929:18;27921:26;;27957:71;28025:1;28014:9;28010:17;28001:6;27957:71;:::i;:::-;28038:72;28106:2;28095:9;28091:18;28082:6;28038:72;:::i;:::-;27785:332;;;;;:::o;28123:442::-;28272:4;28310:2;28299:9;28295:18;28287:26;;28323:71;28391:1;28380:9;28376:17;28367:6;28323:71;:::i;:::-;28404:72;28472:2;28461:9;28457:18;28448:6;28404:72;:::i;:::-;28486;28554:2;28543:9;28539:18;28530:6;28486:72;:::i;:::-;28123:442;;;;;;:::o;28571:233::-;28610:3;28633:24;28651:5;28633:24;:::i;:::-;28624:33;;28679:66;28672:5;28669:77;28666:103;;28749:18;;:::i;:::-;28666:103;28796:1;28789:5;28785:13;28778:20;;28571:233;;;:::o;28810:194::-;28850:4;28870:20;28888:1;28870:20;:::i;:::-;28865:25;;28904:20;28922:1;28904:20;:::i;:::-;28899:25;;28948:1;28945;28941:9;28933:17;;28972:1;28966:4;28963:11;28960:37;;;28977:18;;:::i;:::-;28960:37;28810:194;;;;:::o;29010:164::-;29150:16;29146:1;29138:6;29134:14;29127:40;29010:164;:::o;29180:366::-;29322:3;29343:67;29407:2;29402:3;29343:67;:::i;:::-;29336:74;;29419:93;29508:3;29419:93;:::i;:::-;29537:2;29532:3;29528:12;29521:19;;29180:366;;;:::o;29552:419::-;29718:4;29756:2;29745:9;29741:18;29733:26;;29805:9;29799:4;29795:20;29791:1;29780:9;29776:17;29769:47;29833:131;29959:4;29833:131;:::i;:::-;29825:139;;29552:419;;;:::o;29977:166::-;30117:18;30113:1;30105:6;30101:14;30094:42;29977:166;:::o;30149:366::-;30291:3;30312:67;30376:2;30371:3;30312:67;:::i;:::-;30305:74;;30388:93;30477:3;30388:93;:::i;:::-;30506:2;30501:3;30497:12;30490:19;;30149:366;;;:::o;30521:419::-;30687:4;30725:2;30714:9;30710:18;30702:26;;30774:9;30768:4;30764:20;30760:1;30749:9;30745:17;30738:47;30802:131;30928:4;30802:131;:::i;:::-;30794:139;;30521:419;;;:::o;30946:143::-;31003:5;31034:6;31028:13;31019:22;;31050:33;31077:5;31050:33;:::i;:::-;30946:143;;;;:::o;31095:351::-;31165:6;31214:2;31202:9;31193:7;31189:23;31185:32;31182:119;;;31220:79;;:::i;:::-;31182:119;31340:1;31365:64;31421:7;31412:6;31401:9;31397:22;31365:64;:::i;:::-;31355:74;;31311:128;31095:351;;;;:::o;31452:163::-;31592:15;31588:1;31580:6;31576:14;31569:39;31452:163;:::o;31621:366::-;31763:3;31784:67;31848:2;31843:3;31784:67;:::i;:::-;31777:74;;31860:93;31949:3;31860:93;:::i;:::-;31978:2;31973:3;31969:12;31962:19;;31621:366;;;:::o;31993:419::-;32159:4;32197:2;32186:9;32182:18;32174:26;;32246:9;32240:4;32236:20;32232:1;32221:9;32217:17;32210:47;32274:131;32400:4;32274:131;:::i;:::-;32266:139;;31993:419;;;:::o;32418:94::-;32451:8;32499:5;32495:2;32491:14;32470:35;;32418:94;;;:::o;32518:::-;32557:7;32586:20;32600:5;32586:20;:::i;:::-;32575:31;;32518:94;;;:::o;32618:100::-;32657:7;32686:26;32706:5;32686:26;:::i;:::-;32675:37;;32618:100;;;:::o;32724:157::-;32829:45;32849:24;32867:5;32849:24;:::i;:::-;32829:45;:::i;:::-;32824:3;32817:58;32724:157;;:::o;32887:679::-;33083:3;33098:75;33169:3;33160:6;33098:75;:::i;:::-;33198:2;33193:3;33189:12;33182:19;;33211:75;33282:3;33273:6;33211:75;:::i;:::-;33311:2;33306:3;33302:12;33295:19;;33324:75;33395:3;33386:6;33324:75;:::i;:::-;33424:2;33419:3;33415:12;33408:19;;33437:75;33508:3;33499:6;33437:75;:::i;:::-;33537:2;33532:3;33528:12;33521:19;;33557:3;33550:10;;32887:679;;;;;;;:::o;33572:553::-;33749:4;33787:3;33776:9;33772:19;33764:27;;33801:71;33869:1;33858:9;33854:17;33845:6;33801:71;:::i;:::-;33882:72;33950:2;33939:9;33935:18;33926:6;33882:72;:::i;:::-;33964;34032:2;34021:9;34017:18;34008:6;33964:72;:::i;:::-;34046;34114:2;34103:9;34099:18;34090:6;34046:72;:::i;:::-;33572:553;;;;;;;:::o;34131:163::-;34271:15;34267:1;34259:6;34255:14;34248:39;34131:163;:::o;34300:366::-;34442:3;34463:67;34527:2;34522:3;34463:67;:::i;:::-;34456:74;;34539:93;34628:3;34539:93;:::i;:::-;34657:2;34652:3;34648:12;34641:19;;34300:366;;;:::o;34672:419::-;34838:4;34876:2;34865:9;34861:18;34853:26;;34925:9;34919:4;34915:20;34911:1;34900:9;34896:17;34889:47;34953:131;35079:4;34953:131;:::i;:::-;34945:139;;34672:419;;;:::o;35097:161::-;35237:13;35233:1;35225:6;35221:14;35214:37;35097:161;:::o;35264:366::-;35406:3;35427:67;35491:2;35486:3;35427:67;:::i;:::-;35420:74;;35503:93;35592:3;35503:93;:::i;:::-;35621:2;35616:3;35612:12;35605:19;;35264:366;;;:::o;35636:419::-;35802:4;35840:2;35829:9;35825:18;35817:26;;35889:9;35883:4;35879:20;35875:1;35864:9;35860:17;35853:47;35917:131;36043:4;35917:131;:::i;:::-;35909:139;;35636:419;;;:::o;36061:167::-;36201:19;36197:1;36189:6;36185:14;36178:43;36061:167;:::o;36234:366::-;36376:3;36397:67;36461:2;36456:3;36397:67;:::i;:::-;36390:74;;36473:93;36562:3;36473:93;:::i;:::-;36591:2;36586:3;36582:12;36575:19;;36234:366;;;:::o;36606:419::-;36772:4;36810:2;36799:9;36795:18;36787:26;;36859:9;36853:4;36849:20;36845:1;36834:9;36830:17;36823:47;36887:131;37013:4;36887:131;:::i;:::-;36879:139;;36606:419;;;:::o;37031:162::-;37171:14;37167:1;37159:6;37155:14;37148:38;37031:162;:::o;37199:366::-;37341:3;37362:67;37426:2;37421:3;37362:67;:::i;:::-;37355:74;;37438:93;37527:3;37438:93;:::i;:::-;37556:2;37551:3;37547:12;37540:19;;37199:366;;;:::o;37571:419::-;37737:4;37775:2;37764:9;37760:18;37752:26;;37824:9;37818:4;37814:20;37810:1;37799:9;37795:17;37788:47;37852:131;37978:4;37852:131;:::i;:::-;37844:139;;37571:419;;;:::o;37996:166::-;38136:18;38132:1;38124:6;38120:14;38113:42;37996:166;:::o;38168:366::-;38310:3;38331:67;38395:2;38390:3;38331:67;:::i;:::-;38324:74;;38407:93;38496:3;38407:93;:::i;:::-;38525:2;38520:3;38516:12;38509:19;;38168:366;;;:::o;38540:419::-;38706:4;38744:2;38733:9;38729:18;38721:26;;38793:9;38787:4;38783:20;38779:1;38768:9;38764:17;38757:47;38821:131;38947:4;38821:131;:::i;:::-;38813:139;;38540:419;;;:::o;38965:170::-;39105:22;39101:1;39093:6;39089:14;39082:46;38965:170;:::o;39141:366::-;39283:3;39304:67;39368:2;39363:3;39304:67;:::i;:::-;39297:74;;39380:93;39469:3;39380:93;:::i;:::-;39498:2;39493:3;39489:12;39482:19;;39141:366;;;:::o;39513:419::-;39679:4;39717:2;39706:9;39702:18;39694:26;;39766:9;39760:4;39756:20;39752:1;39741:9;39737:17;39730:47;39794:131;39920:4;39794:131;:::i;:::-;39786:139;;39513:419;;;:::o;39938:410::-;39978:7;40001:20;40019:1;40001:20;:::i;:::-;39996:25;;40035:20;40053:1;40035:20;:::i;:::-;40030:25;;40090:1;40087;40083:9;40112:30;40130:11;40112:30;:::i;:::-;40101:41;;40291:1;40282:7;40278:15;40275:1;40272:22;40252:1;40245:9;40225:83;40202:139;;40321:18;;:::i;:::-;40202:139;39986:362;39938:410;;;;:::o;40354:185::-;40394:1;40411:20;40429:1;40411:20;:::i;:::-;40406:25;;40445:20;40463:1;40445:20;:::i;:::-;40440:25;;40484:1;40474:35;;40489:18;;:::i;:::-;40474:35;40531:1;40528;40524:9;40519:14;;40354:185;;;;:::o
Swarm Source
ipfs://a0ca0ba9784c9a0aa5bb38189d281e27215eb1c0c748d0523b28df7cf478755b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.