More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Add Entry NFT | 9229833 | 23 days ago | IN | 0 APE | 0.00062184 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Winpad
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at apescan.io on 2025-02-03 */ // 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/Winpad.sol pragma solidity ^0.8.26; // ___ ___ ___ ___ _____ // /__/\ ___ /__/\ / /\ / /\ / /::\ // _\_ \:\ / /\ \ \:\ / /::\ / /::\ / /:/\:\ // /__/\ \:\ / /:/ \ \:\ / /:/\:\ / /:/\:\ / /:/ \:\ // _\_ \:\ \:\ /__/::\ _____\__\:\ / /:/~/:/ / /:/~/::\ /__/:/ \__\:| // /__/\ \:\ \:\ \__\/\:\__ /__/::::::::\ /__/:/ /:/ /__/:/ /:/\:\ \ \:\ / /:/ // \ \:\ \:\/:/ \ \:\/\ \ \:\~~\~~\/ \ \:\/:/ \ \:\/:/__\/ \ \:\ /:/ // \ \:\ \::/ \__\::/ \ \:\ ~~~ \ \::/ \ \::/ \ \:\/:/ // \ \:\/:/ /__/:/ \ \:\ \ \:\ \ \:\ \ \::/ // \ \::/ \__\/ \ \:\ \ \:\ \ \:\ \__\/ // \__\/ \__\/ \__\/ \__\/ // Official Contract of Winpad. interface INft { function transferFrom( address from, address to, uint256 tokenId ) external; function balanceOf(address owner) external view returns (uint256); function ownerOf(uint256 tokenId) external view returns (address); } contract Winpad 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 endDate; address winner; 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 => mapping(address => bool)) public hasUsedFreeEntry; mapping(bytes32 => Participation[]) public participations; bytes32[] public allMatchIds; mapping(address => bool) public authorizedCallers; // Free entry for those NFTs. address[] public entryNFTs; // 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 MatchExtended(bytes32 indexed matchId, uint256 endDate); 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; } // Entry NFTs management function addEntryNFT(address nft) external onlyOwner { entryNFTs.push(nft); } function removeEntryNFT(uint256 index) external onlyOwner { require(index < entryNFTs.length, "Index out of bounds"); entryNFTs[index] = entryNFTs[entryNFTs.length - 1]; entryNFTs.pop(); } // 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, endDate: block.timestamp + duration, winner: address(0), 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"); if (tier.apeCost == 0) { require( !hasUsedFreeEntry[matchId][msg.sender], "Free entry already used" ); bool hasEntryNFT = false; for (uint256 i = 0; i < entryNFTs.length; i++) { if (INft(entryNFTs[i]).balanceOf(msg.sender) > 0) { hasEntryNFT = true; break; } require(hasEntryNFT, "No qualifying NFT found"); hasUsedFreeEntry[matchId][msg.sender] = true; } } else { 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"); 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); require(INft(m.nftAddress).ownerOf(m.nftId) == address(this), "Contract does not own NFT"); INft(m.nftAddress).transferFrom(address(this), winner, m.nftId); m.winner = winner; 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); } // Extending match duration function extendMatchEndDate(bytes32 matchId, uint256 additionalDuration) external onlyCaller { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); require(additionalDuration > 0, "Invalid duration"); m.endDate += additionalDuration; emit MatchExtended(matchId, m.endDate); } // 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); } function getParticipations(bytes32 matchId) public view returns (Participation[] memory) { return participations[matchId]; } // 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 && (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":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"}],"name":"MatchExtended","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":"address","name":"nft","type":"address"}],"name":"addEntryNFT","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"entryNFTs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"additionalDuration","type":"uint256"}],"name":"extendMatchEndDate","outputs":[],"stateMutability":"nonpayable","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 Winpad.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":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.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":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"name":"getParticipations","outputs":[{"components":[{"internalType":"address","name":"participant","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"entries","type":"uint256"}],"internalType":"struct Winpad.Participation[]","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":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"hasUsedFreeEntry","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"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":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removeEntryNFT","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
60806040526001600655348015610014575f80fd5b5060405161460a38038061460a833981810160405281019061003691906102e1565b835f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a7575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009e9190610354565b60405180910390fd5b6100b68161018760201b60201c565b50600180819055508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505061036d565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102758261024c565b9050919050565b6102858161026b565b811461028f575f80fd5b50565b5f815190506102a08161027c565b92915050565b5f6102b08261024c565b9050919050565b6102c0816102a6565b81146102ca575f80fd5b50565b5f815190506102db816102b7565b92915050565b5f805f80608085870312156102f9576102f8610248565b5b5f61030687828801610292565b9450506020610317878288016102cd565b9350506040610328878288016102cd565b9250506060610339878288016102cd565b91505092959194509250565b61034e8161026b565b82525050565b5f6020820190506103675f830184610345565b92915050565b6142908061037a5f395ff3fe6080604052600436106101db575f3560e01c806380e36dd811610101578063cc8db4ff11610094578063e7e8517c11610063578063e7e8517c146106be578063eaf98d23146106e8578063ecdc2c0114610712578063f2fde38b14610750576101e2565b8063cc8db4ff14610616578063cfb95e171461063e578063dc3a4e9b1461067a578063dfbed62314610696576101e2565b80639fe9ada3116100d05780639fe9ada314610547578063b82ee8c71461058a578063c82db8f9146105b2578063cb525a3f146105da576101e2565b806380e36dd81461049f57806383d5e726146104c95780638da5cb5b146104f35780639a1564f01461051d576101e2565b8063339b2cff1161017957806361eba6521161014857806361eba6521461040d5780636358ec571461043757806365e17c9d1461045f578063715018a614610489576101e2565b8063339b2cff1461032f578063463fec0f14610359578063536fff6c1461039557806354f276b9146103d1576101e2565b80630bf9ed2b116101b55780630bf9ed2b146102795780630f5f1dbc146102a15780631966cdbe146102cb5780632f333d2e146102f3576101e2565b8063039af9eb146101e65780630594fd04146102255780630a47f9321461024f576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b5061020c60048036038101906102079190612ce9565b610778565b60405161021c9493929190612d3d565b60405180910390f35b348015610230575f80fd5b506102396107b0565b6040516102469190612d80565b60405180910390f35b34801561025a575f80fd5b506102636107b6565b6040516102709190613033565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a919061307d565b6107c7565b005b3480156102ac575f80fd5b506102b5610832565b6040516102c291906130c8565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec919061310b565b610857565b005b3480156102fe575f80fd5b5061031960048036038101906103149190613149565b610f4d565b6040516103269190613187565b60405180910390f35b34801561033a575f80fd5b50610343610f77565b60405161035091906130c8565b60405180910390f35b348015610364575f80fd5b5061037f600480360381019061037a9190612ce9565b610f9c565b60405161038c91906131af565b60405180910390f35b3480156103a0575f80fd5b506103bb60048036038101906103b6919061307d565b610fd7565b6040516103c89190613187565b60405180910390f35b3480156103dc575f80fd5b506103f760048036038101906103f29190612ce9565b610ff4565b60405161040491906131d7565b60405180910390f35b348015610418575f80fd5b50610421611014565b60405161042e9190613033565b60405180910390f35b348015610442575f80fd5b5061045d600480360381019061045891906131f0565b611025565b005b34801561046a575f80fd5b506104736110fc565b60405161048091906130c8565b60405180910390f35b348015610494575f80fd5b5061049d611121565b005b3480156104aa575f80fd5b506104b3611134565b6040516104c0919061333b565b60405180910390f35b3480156104d4575f80fd5b506104dd61123d565b6040516104ea9190613376565b60405180910390f35b3480156104fe575f80fd5b50610507611242565b60405161051491906131af565b60405180910390f35b348015610528575f80fd5b50610531611269565b60405161053e9190613033565b60405180910390f35b348015610552575f80fd5b5061056d6004803603810190610568919061338f565b611279565b6040516105819897969594939291906133ba565b60405180910390f35b348015610595575f80fd5b506105b060048036038101906105ab9190612ce9565b611315565b005b3480156105bd575f80fd5b506105d860048036038101906105d3919061338f565b611451565b005b3480156105e5575f80fd5b5061060060048036038101906105fb9190613586565b61180b565b60405161060d91906131d7565b60405180910390f35b348015610621575f80fd5b5061063c6004803603810190610637919061310b565b611bc4565b005b348015610649575f80fd5b50610664600480360381019061065f919061338f565b611d8d565b6040516106719190613701565b60405180910390f35b610694600480360381019061068f919061310b565b611e62565b005b3480156106a1575f80fd5b506106bc60048036038101906106b7919061374b565b61244a565b005b3480156106c9575f80fd5b506106d26124f8565b6040516106df9190613376565b60405180910390f35b3480156106f3575f80fd5b506106fc6124fd565b6040516107099190613376565b60405180910390f35b34801561071d575f80fd5b506107386004803603810190610733919061310b565b612502565b60405161074793929190613789565b60405180910390f35b34801561075b575f80fd5b506107766004803603810190610771919061307d565b612561565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b60606107c260016125e5565b905090565b6107cf612973565b600c81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610876611242565b73ffffffffffffffffffffffffffffffffffffffff1614806108de5750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61091d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091490613818565b60405180910390fd5b6109256129fa565b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff161561098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098290613880565b60405180910390fd5b5f816004015483426040516020016109a49291906138be565b604051602081830303815290604052805190602001205f1c6109c69190613916565b90505f805f8060095f8981526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610a94578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481525050815260200190600101906109fc565b5050505090505f5b8151811015610b0d575f828281518110610ab957610ab8613946565b5b60200260200101519050806040015186610ad391906139a0565b871015610aed57805f015194508060400151935050610b0d565b806040015186610afd91906139a0565b9550508080600101915050610a9c565b505f4790505f610b3d6064610b2f600860ff1685612a4090919063ffffffff16565b612a5590919063ffffffff16565b90505f610b6a6064610b5c604860ff1686612a4090919063ffffffff16565b612a5590919063ffffffff16565b90505f610b9282610b848587612a6a90919063ffffffff16565b612a6a90919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610bf8573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610c5d573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610cc2573d5f803e3d5ffd5b503073ffffffffffffffffffffffffffffffffffffffff168a6002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c600301546040518263ffffffff1660e01b8152600401610d3a9190612d80565b602060405180830381865afa158015610d55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7991906139e7565b73ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690613a5c565b60405180910390fd5b896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30898d600301546040518463ffffffff1660e01b8152600401610e3393929190613a7a565b5f604051808303815f87803b158015610e4a575f80fd5b505af1158015610e5c573d5f803e3d5ffd5b50505050868a6006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018a60060160146101000a81548160ff0219169083151502179055508b7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc9585858585604051610ef59493929190613aaf565b60405180910390a28b7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc8888604051610f2f929190613af2565b60405180910390a250505050505050505050610f49612a7f565b5050565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8181548110610fab575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900460ff1681565b600a8181548110611003575f80fd5b905f5260205f20015f915090505481565b606061102060026125e5565b905090565b61102d612973565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a8484846040516110d893929190613b19565b60405180910390a260065f8154809291906110f290613b4e565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611129612973565b6111325f612a88565b565b60605f60016006546111469190613b95565b67ffffffffffffffff81111561115f5761115e61344a565b5b60405190808252806020026020018201604052801561119857816020015b611185612ba2565b81526020019060019003908161117d5790505b5090505f600190505b6006548110156112355760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250508260018361120c9190613b95565b8151811061121d5761121c613946565b5b602002602001018190525080806001019150506111a1565b508091505090565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606112745f6125e5565b905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160149054906101000a900460ff16908060060160159054906101000a900460ff16905088565b61131d612973565b600c805490508110611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135b90613c12565b60405180910390fd5b600c6001600c805490506113789190613b95565b8154811061138957611388613946565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c82815481106113c5576113c4613946565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c80548061141c5761141b613c30565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b3373ffffffffffffffffffffffffffffffffffffffff16611470611242565b73ffffffffffffffffffffffffffffffffffffffff1614806114d85750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e90613818565b60405180910390fd5b61151f6129fa565b5f60075f8381526020019081526020015f2090508060060160149054906101000a900460ff1615611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90613880565b60405180910390fd5b5f805f90505b60095f8581526020019081526020015f2080549050811015611710575f60095f8681526020019081526020015f2082815481106115cb576115ca613946565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f193505050501580156116ef573d5f803e3d5ffd5b50805f0151846116ff91906139a0565b93505050808060010191505061158b565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30611759611242565b85600301546040518463ffffffff1660e01b815260040161177c93929190613a7a565b5f604051808303815f87803b158015611793575f80fd5b505af11580156117a5573d5f803e3d5ffd5b5050505060018260060160146101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e6826040516117f69190612d80565b60405180910390a25050611808612a7f565b50565b5f611814612973565b5f8311611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d90613ca7565b60405180910390fd5b5f8211611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f90613d0f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b81526004016118e89190612d80565b602060405180830381865afa158015611903573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192791906139e7565b73ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197490613d77565b60405180910390fd5b428585336040516020016119949493929190613dda565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020015f815260200183426119f891906139a0565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f01556020820151816001019080519060200190611a5d929190612bc8565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160060160146101000a81548160ff0219169083151502179055506101008201518160060160156101000a81548160ff021916908315150217905550905050600a81908060018154018082558091505060019003905f5260205f20015f9091909190915055807f3b7847a02041ae017dcb9db9abe0e7ebc764ea42cb2b7a56f1ac3f17ba7465588686868642611ba391906139a0565b604051611bb39493929190613e27565b60405180910390a295945050505050565b3373ffffffffffffffffffffffffffffffffffffffff16611be3611242565b73ffffffffffffffffffffffffffffffffffffffff161480611c4b5750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8190613818565b60405180910390fd5b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff1615611cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce790613880565b60405180910390fd5b5f8211611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990613d0f565b60405180910390fd5b81816005015f828254611d4591906139a0565b92505081905550827f4e7343e3df0eebdc37f76fccb079c3c667a33ba7f25ec82d4130549c3bf247d48260050154604051611d809190612d80565b60405180910390a2505050565b606060095f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015611e57578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190611dbf565b505050509050919050565b611e6a6129fa565b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160060160159054906101000a900460ff16611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c90613eb4565b60405180910390fd5b8160060160149054906101000a900460ff1615611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6e90613f1c565b60405180910390fd5b81600501544210611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490613f84565b60405180910390fd5b8060600151612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890613fec565b60405180910390fd5b61205b8260010180548060200260200160405190810160405280929190818152602001828054801561205057602002820191905f5260205f20905b81548152602001906001019080831161203c575b505050505084612b49565b61209a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209190614054565b60405180910390fd5b5f815f0151036122c85760085f8581526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561213d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612134906140bc565b60405180910390fd5b5f805b600c805490508110156122c1575f600c828154811061216257612161613946565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016121c291906131af565b602060405180830381865afa1580156121dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061220191906140ee565b111561221057600191506122c1565b81612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614163565b60405180910390fd5b600160085f8881526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050612140565b505061230e565b805f0151341461230d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612304906141cb565b60405180910390fd5b5b5f8160400151826020015161232391906139a0565b905060095f8681526020019081526020015f2060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155505080836004015f8282546123fa91906139a0565b92505081905550847f9547adb56b87436876e7c387b0becc7270032515aedda7a210440394c8146d6d3383604051612433929190613af2565b60405180910390a2505050612446612a7f565b5050565b612452612973565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c2796826040516124ec9190613187565b60405180910390a25050565b601481565b600881565b6009602052815f5260405f20818154811061251b575f80fd5b905f5260205f2090600302015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b612569612973565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125d9575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016125d091906131af565b60405180910390fd5b6125e281612a88565b50565b60605f600a8054905067ffffffffffffffff8111156126075761260661344a565b5b60405190808252806020026020018201604052801561264057816020015b61262d612c13565b8152602001906001900390816126255790505b5090505f805b600a805490508110156128bf575f600a828154811061266857612667613946565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff16036126bb578160060160149054906101000a900460ff161580156126b45750816005015442105b9050612712565b60018860ff16036126df578160060160149054906101000a900460ff169050612711565b60028860ff1603612710578160060160149054906101000a900460ff1615801561270d575081600501544210155b90505b5b5b80156128af5781604051806101200160405290815f82015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561277b57602002820191905f5260205f20905b815481526020019060010190808311612767575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160149054906101000a900460ff161515151581526020016006820160159054906101000a900460ff16151515158152505086868151811061289557612894613946565b5b602002602001018190525084806128ab90613b4e565b9550505b5050508080600101915050612646565b505f8167ffffffffffffffff8111156128db576128da61344a565b5b60405190808252806020026020018201604052801561291457816020015b612901612c13565b8152602001906001900390816128f95790505b5090505f5b828110156129675783818151811061293457612933613946565b5b602002602001015182828151811061294f5761294e613946565b5b60200260200101819052508080600101915050612919565b50809350505050919050565b61297b612b9b565b73ffffffffffffffffffffffffffffffffffffffff16612999611242565b73ffffffffffffffffffffffffffffffffffffffff16146129f8576129bc612b9b565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016129ef91906131af565b60405180910390fd5b565b600260015403612a36576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f8183612a4d91906141e9565b905092915050565b5f8183612a62919061422a565b905092915050565b5f8183612a779190613b95565b905092915050565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b8351811015612b905782848281518110612b6c57612b6b613946565b5b602002602001015103612b83576001915050612b95565b8080600101915050612b4f565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f20908101928215612c02579160200282015b82811115612c01578251825591602001919060010190612be6565b5b509050612c0f9190612c8a565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5b80821115612ca1575f815f905550600101612c8b565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612cc881612cb6565b8114612cd2575f80fd5b50565b5f81359050612ce381612cbf565b92915050565b5f60208284031215612cfe57612cfd612cae565b5b5f612d0b84828501612cd5565b91505092915050565b612d1d81612cb6565b82525050565b5f8115159050919050565b612d3781612d23565b82525050565b5f608082019050612d505f830187612d14565b612d5d6020830186612d14565b612d6a6040830185612d14565b612d776060830184612d2e565b95945050505050565b5f602082019050612d935f830184612d14565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b612dd481612dc2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e0c81612cb6565b82525050565b5f612e1d8383612e03565b60208301905092915050565b5f602082019050919050565b5f612e3f82612dda565b612e498185612de4565b9350612e5483612df4565b805f5b83811015612e84578151612e6b8882612e12565b9750612e7683612e29565b925050600181019050612e57565b5085935050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612eba82612e91565b9050919050565b612eca81612eb0565b82525050565b612ed981612d23565b82525050565b5f61012083015f830151612ef55f860182612dcb565b5060208301518482036020860152612f0d8282612e35565b9150506040830151612f226040860182612ec1565b506060830151612f356060860182612e03565b506080830151612f486080860182612e03565b5060a0830151612f5b60a0860182612e03565b5060c0830151612f6e60c0860182612ec1565b5060e0830151612f8160e0860182612ed0565b50610100830151612f96610100860182612ed0565b508091505092915050565b5f612fac8383612edf565b905092915050565b5f602082019050919050565b5f612fca82612d99565b612fd48185612da3565b935083602082028501612fe685612db3565b805f5b8581101561302157848403895281516130028582612fa1565b945061300d83612fb4565b925060208a01995050600181019050612fe9565b50829750879550505050505092915050565b5f6020820190508181035f83015261304b8184612fc0565b905092915050565b61305c81612eb0565b8114613066575f80fd5b50565b5f8135905061307781613053565b92915050565b5f6020828403121561309257613091612cae565b5b5f61309f84828501613069565b91505092915050565b5f6130b282612e91565b9050919050565b6130c2816130a8565b82525050565b5f6020820190506130db5f8301846130b9565b92915050565b6130ea81612dc2565b81146130f4575f80fd5b50565b5f81359050613105816130e1565b92915050565b5f806040838503121561312157613120612cae565b5b5f61312e858286016130f7565b925050602061313f85828601612cd5565b9150509250929050565b5f806040838503121561315f5761315e612cae565b5b5f61316c858286016130f7565b925050602061317d85828601613069565b9150509250929050565b5f60208201905061319a5f830184612d2e565b92915050565b6131a981612eb0565b82525050565b5f6020820190506131c25f8301846131a0565b92915050565b6131d181612dc2565b82525050565b5f6020820190506131ea5f8301846131c8565b92915050565b5f805f6060848603121561320757613206612cae565b5b5f61321486828701612cd5565b935050602061322586828701612cd5565b925050604061323686828701612cd5565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f82015161327d5f850182612e03565b5060208201516132906020850182612e03565b5060408201516132a36040850182612e03565b5060608201516132b66060850182612ed0565b50505050565b5f6132c78383613269565b60808301905092915050565b5f602082019050919050565b5f6132e982613240565b6132f3818561324a565b93506132fe8361325a565b805f5b8381101561332e57815161331588826132bc565b9750613320836132d3565b925050600181019050613301565b5085935050505092915050565b5f6020820190508181035f83015261335381846132df565b905092915050565b5f60ff82169050919050565b6133708161335b565b82525050565b5f6020820190506133895f830184613367565b92915050565b5f602082840312156133a4576133a3612cae565b5b5f6133b1848285016130f7565b91505092915050565b5f610100820190506133ce5f83018b6131c8565b6133db602083018a6131a0565b6133e86040830189612d14565b6133f56060830188612d14565b6134026080830187612d14565b61340f60a08301866131a0565b61341c60c0830185612d2e565b61342960e0830184612d2e565b9998505050505050505050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6134808261343a565b810181811067ffffffffffffffff8211171561349f5761349e61344a565b5b80604052505050565b5f6134b1612ca5565b90506134bd8282613477565b919050565b5f67ffffffffffffffff8211156134dc576134db61344a565b5b602082029050602081019050919050565b5f80fd5b5f6135036134fe846134c2565b6134a8565b90508083825260208201905060208402830185811115613526576135256134ed565b5b835b8181101561354f578061353b8882612cd5565b845260208401935050602081019050613528565b5050509392505050565b5f82601f83011261356d5761356c613436565b5b813561357d8482602086016134f1565b91505092915050565b5f805f805f60a0868803121561359f5761359e612cae565b5b5f86013567ffffffffffffffff8111156135bc576135bb612cb2565b5b6135c888828901613559565b95505060206135d988828901613069565b94505060406135ea88828901612cd5565b93505060606135fb88828901612cd5565b925050608061360c88828901612cd5565b9150509295509295909350565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f8201516136565f850182612ec1565b5060208201516136696020850182612e03565b50604082015161367c6040850182612e03565b50505050565b5f61368d8383613642565b60608301905092915050565b5f602082019050919050565b5f6136af82613619565b6136b98185613623565b93506136c483613633565b805f5b838110156136f45781516136db8882613682565b97506136e683613699565b9250506001810190506136c7565b5085935050505092915050565b5f6020820190508181035f83015261371981846136a5565b905092915050565b61372a81612d23565b8114613734575f80fd5b50565b5f8135905061374581613721565b92915050565b5f806040838503121561376157613760612cae565b5b5f61376e85828601613069565b925050602061377f85828601613737565b9150509250929050565b5f60608201905061379c5f8301866131a0565b6137a96020830185612d14565b6137b66040830184612d14565b949350505050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613802600c836137be565b915061380d826137ce565b602082019050919050565b5f6020820190508181035f83015261382f816137f6565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f61386a6013836137be565b915061387582613836565b602082019050919050565b5f6020820190508181035f8301526138978161385e565b9050919050565b5f819050919050565b6138b86138b382612cb6565b61389e565b82525050565b5f6138c982856138a7565b6020820191506138d982846138a7565b6020820191508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61392082612cb6565b915061392b83612cb6565b92508261393b5761393a6138e9565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139aa82612cb6565b91506139b583612cb6565b92508282019050808211156139cd576139cc613973565b5b92915050565b5f815190506139e181613053565b92915050565b5f602082840312156139fc576139fb612cae565b5b5f613a09848285016139d3565b91505092915050565b7f436f6e747261637420646f6573206e6f74206f776e204e4654000000000000005f82015250565b5f613a466019836137be565b9150613a5182613a12565b602082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b5f606082019050613a8d5f8301866131a0565b613a9a60208301856131a0565b613aa76040830184612d14565b949350505050565b5f608082019050613ac25f830187612d14565b613acf6020830186612d14565b613adc6040830185612d14565b613ae96060830184612d14565b95945050505050565b5f604082019050613b055f8301856131a0565b613b126020830184612d14565b9392505050565b5f606082019050613b2c5f830186612d14565b613b396020830185612d14565b613b466040830184612d14565b949350505050565b5f613b5882612cb6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b8a57613b89613973565b5b600182019050919050565b5f613b9f82612cb6565b9150613baa83612cb6565b9250828203905081811115613bc257613bc1613973565b5b92915050565b7f496e646578206f7574206f6620626f756e6473000000000000000000000000005f82015250565b5f613bfc6013836137be565b9150613c0782613bc8565b602082019050919050565b5f6020820190508181035f830152613c2981613bf0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f496e76616c6964207461726765740000000000000000000000000000000000005f82015250565b5f613c91600e836137be565b9150613c9c82613c5d565b602082019050919050565b5f6020820190508181035f830152613cbe81613c85565b9050919050565b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f613cf96010836137be565b9150613d0482613cc5565b602082019050919050565b5f6020820190508181035f830152613d2681613ced565b9050919050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f613d61600d836137be565b9150613d6c82613d2d565b602082019050919050565b5f6020820190508181035f830152613d8e81613d55565b9050919050565b5f8160601b9050919050565b5f613dab82613d95565b9050919050565b5f613dbc82613da1565b9050919050565b613dd4613dcf82612eb0565b613db2565b82525050565b5f613de582876138a7565b602082019150613df58286613dc3565b601482019150613e0582856138a7565b602082019150613e158284613dc3565b60148201915081905095945050505050565b5f608082019050613e3a5f8301876131a0565b613e476020830186612d14565b613e546040830185612d14565b613e616060830184612d14565b95945050505050565b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f613e9e600d836137be565b9150613ea982613e6a565b602082019050919050565b5f6020820190508181035f830152613ecb81613e92565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f613f06600b836137be565b9150613f1182613ed2565b602082019050919050565b5f6020820190508181035f830152613f3381613efa565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f613f6e6011836137be565b9150613f7982613f3a565b602082019050919050565b5f6020820190508181035f830152613f9b81613f62565b9050919050565b7f496e76616c6964207469657200000000000000000000000000000000000000005f82015250565b5f613fd6600c836137be565b9150613fe182613fa2565b602082019050919050565b5f6020820190508181035f83015261400381613fca565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f61403e6010836137be565b91506140498261400a565b602082019050919050565b5f6020820190508181035f83015261406b81614032565b9050919050565b7f4672656520656e74727920616c726561647920757365640000000000000000005f82015250565b5f6140a66017836137be565b91506140b182614072565b602082019050919050565b5f6020820190508181035f8301526140d38161409a565b9050919050565b5f815190506140e881612cbf565b92915050565b5f6020828403121561410357614102612cae565b5b5f614110848285016140da565b91505092915050565b7f4e6f207175616c696679696e67204e465420666f756e640000000000000000005f82015250565b5f61414d6017836137be565b915061415882614119565b602082019050919050565b5f6020820190508181035f83015261417a81614141565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f6141b56014836137be565b91506141c082614181565b602082019050919050565b5f6020820190508181035f8301526141e2816141a9565b9050919050565b5f6141f382612cb6565b91506141fe83612cb6565b925082820261420c81612cb6565b9150828204841483151761422357614222613973565b5b5092915050565b5f61423482612cb6565b915061423f83612cb6565b92508261424f5761424e6138e9565b5b82820490509291505056fea2646970667358221220d6aa855fc9c30fd83d20d5b33e7941494bf0b15a02d49e82255b5d336feb6fa164736f6c634300081a00330000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc40000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc40000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc40000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc4
Deployed Bytecode
0x6080604052600436106101db575f3560e01c806380e36dd811610101578063cc8db4ff11610094578063e7e8517c11610063578063e7e8517c146106be578063eaf98d23146106e8578063ecdc2c0114610712578063f2fde38b14610750576101e2565b8063cc8db4ff14610616578063cfb95e171461063e578063dc3a4e9b1461067a578063dfbed62314610696576101e2565b80639fe9ada3116100d05780639fe9ada314610547578063b82ee8c71461058a578063c82db8f9146105b2578063cb525a3f146105da576101e2565b806380e36dd81461049f57806383d5e726146104c95780638da5cb5b146104f35780639a1564f01461051d576101e2565b8063339b2cff1161017957806361eba6521161014857806361eba6521461040d5780636358ec571461043757806365e17c9d1461045f578063715018a614610489576101e2565b8063339b2cff1461032f578063463fec0f14610359578063536fff6c1461039557806354f276b9146103d1576101e2565b80630bf9ed2b116101b55780630bf9ed2b146102795780630f5f1dbc146102a15780631966cdbe146102cb5780632f333d2e146102f3576101e2565b8063039af9eb146101e65780630594fd04146102255780630a47f9321461024f576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b5061020c60048036038101906102079190612ce9565b610778565b60405161021c9493929190612d3d565b60405180910390f35b348015610230575f80fd5b506102396107b0565b6040516102469190612d80565b60405180910390f35b34801561025a575f80fd5b506102636107b6565b6040516102709190613033565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a919061307d565b6107c7565b005b3480156102ac575f80fd5b506102b5610832565b6040516102c291906130c8565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec919061310b565b610857565b005b3480156102fe575f80fd5b5061031960048036038101906103149190613149565b610f4d565b6040516103269190613187565b60405180910390f35b34801561033a575f80fd5b50610343610f77565b60405161035091906130c8565b60405180910390f35b348015610364575f80fd5b5061037f600480360381019061037a9190612ce9565b610f9c565b60405161038c91906131af565b60405180910390f35b3480156103a0575f80fd5b506103bb60048036038101906103b6919061307d565b610fd7565b6040516103c89190613187565b60405180910390f35b3480156103dc575f80fd5b506103f760048036038101906103f29190612ce9565b610ff4565b60405161040491906131d7565b60405180910390f35b348015610418575f80fd5b50610421611014565b60405161042e9190613033565b60405180910390f35b348015610442575f80fd5b5061045d600480360381019061045891906131f0565b611025565b005b34801561046a575f80fd5b506104736110fc565b60405161048091906130c8565b60405180910390f35b348015610494575f80fd5b5061049d611121565b005b3480156104aa575f80fd5b506104b3611134565b6040516104c0919061333b565b60405180910390f35b3480156104d4575f80fd5b506104dd61123d565b6040516104ea9190613376565b60405180910390f35b3480156104fe575f80fd5b50610507611242565b60405161051491906131af565b60405180910390f35b348015610528575f80fd5b50610531611269565b60405161053e9190613033565b60405180910390f35b348015610552575f80fd5b5061056d6004803603810190610568919061338f565b611279565b6040516105819897969594939291906133ba565b60405180910390f35b348015610595575f80fd5b506105b060048036038101906105ab9190612ce9565b611315565b005b3480156105bd575f80fd5b506105d860048036038101906105d3919061338f565b611451565b005b3480156105e5575f80fd5b5061060060048036038101906105fb9190613586565b61180b565b60405161060d91906131d7565b60405180910390f35b348015610621575f80fd5b5061063c6004803603810190610637919061310b565b611bc4565b005b348015610649575f80fd5b50610664600480360381019061065f919061338f565b611d8d565b6040516106719190613701565b60405180910390f35b610694600480360381019061068f919061310b565b611e62565b005b3480156106a1575f80fd5b506106bc60048036038101906106b7919061374b565b61244a565b005b3480156106c9575f80fd5b506106d26124f8565b6040516106df9190613376565b60405180910390f35b3480156106f3575f80fd5b506106fc6124fd565b6040516107099190613376565b60405180910390f35b34801561071d575f80fd5b506107386004803603810190610733919061310b565b612502565b60405161074793929190613789565b60405180910390f35b34801561075b575f80fd5b506107766004803603810190610771919061307d565b612561565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b60606107c260016125e5565b905090565b6107cf612973565b600c81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610876611242565b73ffffffffffffffffffffffffffffffffffffffff1614806108de5750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61091d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091490613818565b60405180910390fd5b6109256129fa565b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff161561098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098290613880565b60405180910390fd5b5f816004015483426040516020016109a49291906138be565b604051602081830303815290604052805190602001205f1c6109c69190613916565b90505f805f8060095f8981526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610a94578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481525050815260200190600101906109fc565b5050505090505f5b8151811015610b0d575f828281518110610ab957610ab8613946565b5b60200260200101519050806040015186610ad391906139a0565b871015610aed57805f015194508060400151935050610b0d565b806040015186610afd91906139a0565b9550508080600101915050610a9c565b505f4790505f610b3d6064610b2f600860ff1685612a4090919063ffffffff16565b612a5590919063ffffffff16565b90505f610b6a6064610b5c604860ff1686612a4090919063ffffffff16565b612a5590919063ffffffff16565b90505f610b9282610b848587612a6a90919063ffffffff16565b612a6a90919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610bf8573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610c5d573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610cc2573d5f803e3d5ffd5b503073ffffffffffffffffffffffffffffffffffffffff168a6002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c600301546040518263ffffffff1660e01b8152600401610d3a9190612d80565b602060405180830381865afa158015610d55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7991906139e7565b73ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690613a5c565b60405180910390fd5b896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30898d600301546040518463ffffffff1660e01b8152600401610e3393929190613a7a565b5f604051808303815f87803b158015610e4a575f80fd5b505af1158015610e5c573d5f803e3d5ffd5b50505050868a6006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018a60060160146101000a81548160ff0219169083151502179055508b7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc9585858585604051610ef59493929190613aaf565b60405180910390a28b7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc8888604051610f2f929190613af2565b60405180910390a250505050505050505050610f49612a7f565b5050565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8181548110610fab575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900460ff1681565b600a8181548110611003575f80fd5b905f5260205f20015f915090505481565b606061102060026125e5565b905090565b61102d612973565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a8484846040516110d893929190613b19565b60405180910390a260065f8154809291906110f290613b4e565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611129612973565b6111325f612a88565b565b60605f60016006546111469190613b95565b67ffffffffffffffff81111561115f5761115e61344a565b5b60405190808252806020026020018201604052801561119857816020015b611185612ba2565b81526020019060019003908161117d5790505b5090505f600190505b6006548110156112355760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250508260018361120c9190613b95565b8151811061121d5761121c613946565b5b602002602001018190525080806001019150506111a1565b508091505090565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606112745f6125e5565b905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160149054906101000a900460ff16908060060160159054906101000a900460ff16905088565b61131d612973565b600c805490508110611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135b90613c12565b60405180910390fd5b600c6001600c805490506113789190613b95565b8154811061138957611388613946565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c82815481106113c5576113c4613946565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c80548061141c5761141b613c30565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b3373ffffffffffffffffffffffffffffffffffffffff16611470611242565b73ffffffffffffffffffffffffffffffffffffffff1614806114d85750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e90613818565b60405180910390fd5b61151f6129fa565b5f60075f8381526020019081526020015f2090508060060160149054906101000a900460ff1615611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90613880565b60405180910390fd5b5f805f90505b60095f8581526020019081526020015f2080549050811015611710575f60095f8681526020019081526020015f2082815481106115cb576115ca613946565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f193505050501580156116ef573d5f803e3d5ffd5b50805f0151846116ff91906139a0565b93505050808060010191505061158b565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30611759611242565b85600301546040518463ffffffff1660e01b815260040161177c93929190613a7a565b5f604051808303815f87803b158015611793575f80fd5b505af11580156117a5573d5f803e3d5ffd5b5050505060018260060160146101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e6826040516117f69190612d80565b60405180910390a25050611808612a7f565b50565b5f611814612973565b5f8311611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d90613ca7565b60405180910390fd5b5f8211611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f90613d0f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b81526004016118e89190612d80565b602060405180830381865afa158015611903573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192791906139e7565b73ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197490613d77565b60405180910390fd5b428585336040516020016119949493929190613dda565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020015f815260200183426119f891906139a0565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f01556020820151816001019080519060200190611a5d929190612bc8565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160060160146101000a81548160ff0219169083151502179055506101008201518160060160156101000a81548160ff021916908315150217905550905050600a81908060018154018082558091505060019003905f5260205f20015f9091909190915055807f3b7847a02041ae017dcb9db9abe0e7ebc764ea42cb2b7a56f1ac3f17ba7465588686868642611ba391906139a0565b604051611bb39493929190613e27565b60405180910390a295945050505050565b3373ffffffffffffffffffffffffffffffffffffffff16611be3611242565b73ffffffffffffffffffffffffffffffffffffffff161480611c4b5750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8190613818565b60405180910390fd5b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff1615611cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce790613880565b60405180910390fd5b5f8211611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990613d0f565b60405180910390fd5b81816005015f828254611d4591906139a0565b92505081905550827f4e7343e3df0eebdc37f76fccb079c3c667a33ba7f25ec82d4130549c3bf247d48260050154604051611d809190612d80565b60405180910390a2505050565b606060095f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015611e57578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190611dbf565b505050509050919050565b611e6a6129fa565b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160060160159054906101000a900460ff16611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c90613eb4565b60405180910390fd5b8160060160149054906101000a900460ff1615611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6e90613f1c565b60405180910390fd5b81600501544210611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490613f84565b60405180910390fd5b8060600151612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890613fec565b60405180910390fd5b61205b8260010180548060200260200160405190810160405280929190818152602001828054801561205057602002820191905f5260205f20905b81548152602001906001019080831161203c575b505050505084612b49565b61209a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209190614054565b60405180910390fd5b5f815f0151036122c85760085f8581526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561213d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612134906140bc565b60405180910390fd5b5f805b600c805490508110156122c1575f600c828154811061216257612161613946565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016121c291906131af565b602060405180830381865afa1580156121dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061220191906140ee565b111561221057600191506122c1565b81612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614163565b60405180910390fd5b600160085f8881526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050612140565b505061230e565b805f0151341461230d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612304906141cb565b60405180910390fd5b5b5f8160400151826020015161232391906139a0565b905060095f8681526020019081526020015f2060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155505080836004015f8282546123fa91906139a0565b92505081905550847f9547adb56b87436876e7c387b0becc7270032515aedda7a210440394c8146d6d3383604051612433929190613af2565b60405180910390a2505050612446612a7f565b5050565b612452612973565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c2796826040516124ec9190613187565b60405180910390a25050565b601481565b600881565b6009602052815f5260405f20818154811061251b575f80fd5b905f5260205f2090600302015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b612569612973565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125d9575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016125d091906131af565b60405180910390fd5b6125e281612a88565b50565b60605f600a8054905067ffffffffffffffff8111156126075761260661344a565b5b60405190808252806020026020018201604052801561264057816020015b61262d612c13565b8152602001906001900390816126255790505b5090505f805b600a805490508110156128bf575f600a828154811061266857612667613946565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff16036126bb578160060160149054906101000a900460ff161580156126b45750816005015442105b9050612712565b60018860ff16036126df578160060160149054906101000a900460ff169050612711565b60028860ff1603612710578160060160149054906101000a900460ff1615801561270d575081600501544210155b90505b5b5b80156128af5781604051806101200160405290815f82015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561277b57602002820191905f5260205f20905b815481526020019060010190808311612767575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160149054906101000a900460ff161515151581526020016006820160159054906101000a900460ff16151515158152505086868151811061289557612894613946565b5b602002602001018190525084806128ab90613b4e565b9550505b5050508080600101915050612646565b505f8167ffffffffffffffff8111156128db576128da61344a565b5b60405190808252806020026020018201604052801561291457816020015b612901612c13565b8152602001906001900390816128f95790505b5090505f5b828110156129675783818151811061293457612933613946565b5b602002602001015182828151811061294f5761294e613946565b5b60200260200101819052508080600101915050612919565b50809350505050919050565b61297b612b9b565b73ffffffffffffffffffffffffffffffffffffffff16612999611242565b73ffffffffffffffffffffffffffffffffffffffff16146129f8576129bc612b9b565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016129ef91906131af565b60405180910390fd5b565b600260015403612a36576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f8183612a4d91906141e9565b905092915050565b5f8183612a62919061422a565b905092915050565b5f8183612a779190613b95565b905092915050565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b8351811015612b905782848281518110612b6c57612b6b613946565b5b602002602001015103612b83576001915050612b95565b8080600101915050612b4f565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f20908101928215612c02579160200282015b82811115612c01578251825591602001919060010190612be6565b5b509050612c0f9190612c8a565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5b80821115612ca1575f815f905550600101612c8b565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612cc881612cb6565b8114612cd2575f80fd5b50565b5f81359050612ce381612cbf565b92915050565b5f60208284031215612cfe57612cfd612cae565b5b5f612d0b84828501612cd5565b91505092915050565b612d1d81612cb6565b82525050565b5f8115159050919050565b612d3781612d23565b82525050565b5f608082019050612d505f830187612d14565b612d5d6020830186612d14565b612d6a6040830185612d14565b612d776060830184612d2e565b95945050505050565b5f602082019050612d935f830184612d14565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b612dd481612dc2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e0c81612cb6565b82525050565b5f612e1d8383612e03565b60208301905092915050565b5f602082019050919050565b5f612e3f82612dda565b612e498185612de4565b9350612e5483612df4565b805f5b83811015612e84578151612e6b8882612e12565b9750612e7683612e29565b925050600181019050612e57565b5085935050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612eba82612e91565b9050919050565b612eca81612eb0565b82525050565b612ed981612d23565b82525050565b5f61012083015f830151612ef55f860182612dcb565b5060208301518482036020860152612f0d8282612e35565b9150506040830151612f226040860182612ec1565b506060830151612f356060860182612e03565b506080830151612f486080860182612e03565b5060a0830151612f5b60a0860182612e03565b5060c0830151612f6e60c0860182612ec1565b5060e0830151612f8160e0860182612ed0565b50610100830151612f96610100860182612ed0565b508091505092915050565b5f612fac8383612edf565b905092915050565b5f602082019050919050565b5f612fca82612d99565b612fd48185612da3565b935083602082028501612fe685612db3565b805f5b8581101561302157848403895281516130028582612fa1565b945061300d83612fb4565b925060208a01995050600181019050612fe9565b50829750879550505050505092915050565b5f6020820190508181035f83015261304b8184612fc0565b905092915050565b61305c81612eb0565b8114613066575f80fd5b50565b5f8135905061307781613053565b92915050565b5f6020828403121561309257613091612cae565b5b5f61309f84828501613069565b91505092915050565b5f6130b282612e91565b9050919050565b6130c2816130a8565b82525050565b5f6020820190506130db5f8301846130b9565b92915050565b6130ea81612dc2565b81146130f4575f80fd5b50565b5f81359050613105816130e1565b92915050565b5f806040838503121561312157613120612cae565b5b5f61312e858286016130f7565b925050602061313f85828601612cd5565b9150509250929050565b5f806040838503121561315f5761315e612cae565b5b5f61316c858286016130f7565b925050602061317d85828601613069565b9150509250929050565b5f60208201905061319a5f830184612d2e565b92915050565b6131a981612eb0565b82525050565b5f6020820190506131c25f8301846131a0565b92915050565b6131d181612dc2565b82525050565b5f6020820190506131ea5f8301846131c8565b92915050565b5f805f6060848603121561320757613206612cae565b5b5f61321486828701612cd5565b935050602061322586828701612cd5565b925050604061323686828701612cd5565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f82015161327d5f850182612e03565b5060208201516132906020850182612e03565b5060408201516132a36040850182612e03565b5060608201516132b66060850182612ed0565b50505050565b5f6132c78383613269565b60808301905092915050565b5f602082019050919050565b5f6132e982613240565b6132f3818561324a565b93506132fe8361325a565b805f5b8381101561332e57815161331588826132bc565b9750613320836132d3565b925050600181019050613301565b5085935050505092915050565b5f6020820190508181035f83015261335381846132df565b905092915050565b5f60ff82169050919050565b6133708161335b565b82525050565b5f6020820190506133895f830184613367565b92915050565b5f602082840312156133a4576133a3612cae565b5b5f6133b1848285016130f7565b91505092915050565b5f610100820190506133ce5f83018b6131c8565b6133db602083018a6131a0565b6133e86040830189612d14565b6133f56060830188612d14565b6134026080830187612d14565b61340f60a08301866131a0565b61341c60c0830185612d2e565b61342960e0830184612d2e565b9998505050505050505050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6134808261343a565b810181811067ffffffffffffffff8211171561349f5761349e61344a565b5b80604052505050565b5f6134b1612ca5565b90506134bd8282613477565b919050565b5f67ffffffffffffffff8211156134dc576134db61344a565b5b602082029050602081019050919050565b5f80fd5b5f6135036134fe846134c2565b6134a8565b90508083825260208201905060208402830185811115613526576135256134ed565b5b835b8181101561354f578061353b8882612cd5565b845260208401935050602081019050613528565b5050509392505050565b5f82601f83011261356d5761356c613436565b5b813561357d8482602086016134f1565b91505092915050565b5f805f805f60a0868803121561359f5761359e612cae565b5b5f86013567ffffffffffffffff8111156135bc576135bb612cb2565b5b6135c888828901613559565b95505060206135d988828901613069565b94505060406135ea88828901612cd5565b93505060606135fb88828901612cd5565b925050608061360c88828901612cd5565b9150509295509295909350565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f8201516136565f850182612ec1565b5060208201516136696020850182612e03565b50604082015161367c6040850182612e03565b50505050565b5f61368d8383613642565b60608301905092915050565b5f602082019050919050565b5f6136af82613619565b6136b98185613623565b93506136c483613633565b805f5b838110156136f45781516136db8882613682565b97506136e683613699565b9250506001810190506136c7565b5085935050505092915050565b5f6020820190508181035f83015261371981846136a5565b905092915050565b61372a81612d23565b8114613734575f80fd5b50565b5f8135905061374581613721565b92915050565b5f806040838503121561376157613760612cae565b5b5f61376e85828601613069565b925050602061377f85828601613737565b9150509250929050565b5f60608201905061379c5f8301866131a0565b6137a96020830185612d14565b6137b66040830184612d14565b949350505050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613802600c836137be565b915061380d826137ce565b602082019050919050565b5f6020820190508181035f83015261382f816137f6565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f61386a6013836137be565b915061387582613836565b602082019050919050565b5f6020820190508181035f8301526138978161385e565b9050919050565b5f819050919050565b6138b86138b382612cb6565b61389e565b82525050565b5f6138c982856138a7565b6020820191506138d982846138a7565b6020820191508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61392082612cb6565b915061392b83612cb6565b92508261393b5761393a6138e9565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6139aa82612cb6565b91506139b583612cb6565b92508282019050808211156139cd576139cc613973565b5b92915050565b5f815190506139e181613053565b92915050565b5f602082840312156139fc576139fb612cae565b5b5f613a09848285016139d3565b91505092915050565b7f436f6e747261637420646f6573206e6f74206f776e204e4654000000000000005f82015250565b5f613a466019836137be565b9150613a5182613a12565b602082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b5f606082019050613a8d5f8301866131a0565b613a9a60208301856131a0565b613aa76040830184612d14565b949350505050565b5f608082019050613ac25f830187612d14565b613acf6020830186612d14565b613adc6040830185612d14565b613ae96060830184612d14565b95945050505050565b5f604082019050613b055f8301856131a0565b613b126020830184612d14565b9392505050565b5f606082019050613b2c5f830186612d14565b613b396020830185612d14565b613b466040830184612d14565b949350505050565b5f613b5882612cb6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b8a57613b89613973565b5b600182019050919050565b5f613b9f82612cb6565b9150613baa83612cb6565b9250828203905081811115613bc257613bc1613973565b5b92915050565b7f496e646578206f7574206f6620626f756e6473000000000000000000000000005f82015250565b5f613bfc6013836137be565b9150613c0782613bc8565b602082019050919050565b5f6020820190508181035f830152613c2981613bf0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f496e76616c6964207461726765740000000000000000000000000000000000005f82015250565b5f613c91600e836137be565b9150613c9c82613c5d565b602082019050919050565b5f6020820190508181035f830152613cbe81613c85565b9050919050565b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f613cf96010836137be565b9150613d0482613cc5565b602082019050919050565b5f6020820190508181035f830152613d2681613ced565b9050919050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f613d61600d836137be565b9150613d6c82613d2d565b602082019050919050565b5f6020820190508181035f830152613d8e81613d55565b9050919050565b5f8160601b9050919050565b5f613dab82613d95565b9050919050565b5f613dbc82613da1565b9050919050565b613dd4613dcf82612eb0565b613db2565b82525050565b5f613de582876138a7565b602082019150613df58286613dc3565b601482019150613e0582856138a7565b602082019150613e158284613dc3565b60148201915081905095945050505050565b5f608082019050613e3a5f8301876131a0565b613e476020830186612d14565b613e546040830185612d14565b613e616060830184612d14565b95945050505050565b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f613e9e600d836137be565b9150613ea982613e6a565b602082019050919050565b5f6020820190508181035f830152613ecb81613e92565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f613f06600b836137be565b9150613f1182613ed2565b602082019050919050565b5f6020820190508181035f830152613f3381613efa565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f613f6e6011836137be565b9150613f7982613f3a565b602082019050919050565b5f6020820190508181035f830152613f9b81613f62565b9050919050565b7f496e76616c6964207469657200000000000000000000000000000000000000005f82015250565b5f613fd6600c836137be565b9150613fe182613fa2565b602082019050919050565b5f6020820190508181035f83015261400381613fca565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f61403e6010836137be565b91506140498261400a565b602082019050919050565b5f6020820190508181035f83015261406b81614032565b9050919050565b7f4672656520656e74727920616c726561647920757365640000000000000000005f82015250565b5f6140a66017836137be565b91506140b182614072565b602082019050919050565b5f6020820190508181035f8301526140d38161409a565b9050919050565b5f815190506140e881612cbf565b92915050565b5f6020828403121561410357614102612cae565b5b5f614110848285016140da565b91505092915050565b7f4e6f207175616c696679696e67204e465420666f756e640000000000000000005f82015250565b5f61414d6017836137be565b915061415882614119565b602082019050919050565b5f6020820190508181035f83015261417a81614141565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f6141b56014836137be565b91506141c082614181565b602082019050919050565b5f6020820190508181035f8301526141e2816141a9565b9050919050565b5f6141f382612cb6565b91506141fe83612cb6565b925082820261420c81612cb6565b9150828204841483151761422357614222613973565b5b5092915050565b5f61423482612cb6565b915061423f83612cb6565b92508261424f5761424e6138e9565b5b82820490509291505056fea2646970667358221220d6aa855fc9c30fd83d20d5b33e7941494bf0b15a02d49e82255b5d336feb6fa164736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc40000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc40000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc40000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc4
-----Decoded View---------------
Arg [0] : _initialOwner (address): 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4
Arg [1] : _feeAccount (address): 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4
Arg [2] : _treasuryAccount (address): 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4
Arg [3] : _operationsAccount (address): 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc4
Arg [1] : 0000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc4
Arg [2] : 0000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc4
Arg [3] : 0000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc4
Deployed Bytecode Sourcemap
15968:11823:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17056:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;17105:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25792:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19024:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16367:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22411:1803;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17188:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16322:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17455:26;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17362:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17327:28;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25907:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19375:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16282:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6865:103;;;;;;;;;;;;;:::i;:::-;;25400:267;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16139:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6190:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25675:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17141:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;19123:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24257:692;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19724:1147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24990:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26022:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20910:1468;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27583:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16189:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16095:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17263:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7123:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17056:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17105:29::-;;;;:::o;25792:107::-;25840:14;25874:17;25889:1;25874:14;:17::i;:::-;25867:24;;25792:107;:::o;19024:91::-;6076:13;:11;:13::i;:::-;19088:9:::1;19103:3;19088:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19024:91:::0;:::o;16367:40::-;;;;;;;;;;;;;:::o;22411:1803::-;18538:10;18527:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;18552:17;:29;18570:10;18552:29;;;;;;;;;;;;;;;;;;;;;;;;;18527:54;18505:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;2589:21:::1;:19;:21::i;:::-;22544:15:::2;22562:7;:16;22570:7;22562:16;;;;;;;;;;;22544:34;;22598:1;:9;;;;;;;;;;;;22597:10;22589:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;22644:20;22759:1;:14;;;22716:10;22728:15;22699:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22689:56;;;;;;22667:89;;:106;;;;:::i;:::-;22644:129;;22784:18;22813:14:::0;22838:21:::2;22872:28:::0;22903:14:::2;:23;22918:7;22903:23;;;;;;;;;;;22872:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;22942:9;22937:323;22961:5;:12;22957:1;:16;22937:323;;;22995:22;23020:5;23026:1;23020:8;;;;;;;;:::i;:::-;;;;;;;;22995:33;;23075:1;:9;;;23062:10;:22;;;;:::i;:::-;23047:12;:37;23043:168;;;23114:1;:13;;;23105:22;;23162:1;:9;;;23146:25;;23190:5;;;23043:168;23239:1;:9;;;23225:23;;;;;:::i;:::-;;;22980:280;22975:3;;;;;;;22937:323;;;;23272:22;23297:21;23272:46;;23329:17;23349:40;23385:3;23349:31;16131:1;23349:31;;:14;:18;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;23329:60;;23400:22;23425:45;23466:3;23425:36;16180:2;23425:36;;:14;:18;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;23400:70;;23481:24;23508:73;23556:14;23508:29;23527:9;23508:14;:18;;:29;;;;:::i;:::-;:33;;:73;;;;:::i;:::-;23481:100;;23594:10;;;;;;;;;;;:19;;:30;23614:9;23594:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;23635:15;;;;;;;;;;;:24;;:40;23660:14;23635:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;23686:17;;;;;;;;;;;:26;;:44;23713:16;23686:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;23798:4;23751:52;;23756:1;:12;;;;;;;;;;;;23751:26;;;23778:1;:7;;;23751:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;23743:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;23849:1;:12;;;;;;;;;;;;23844:31;;;23884:4;23891:6;23899:1;:7;;;23844:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;23931:6;23920:1;:8;;;:17;;;;;;;;;;;;;;;;;;23960:4;23948:1;:9;;;:16;;;;;;;;;;;;;;;;;;24013:7;23982:162;24035:14;24064:9;24088:14;24117:16;23982:162;;;;;;;;;:::i;:::-;;;;;;;;24175:7;24160:46;24184:6;24192:13;24160:46;;;;;;;:::i;:::-;;;;;;;;22533:1681;;;;;;;;;;2633:20:::1;:18;:20::i;:::-;22411:1803:::0;;:::o;17188:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16322:38::-;;;;;;;;;;;;;:::o;17455:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17362:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;17327:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25907:107::-;25955:14;25989:17;26004:1;25989:14;:17::i;:::-;25982:24;;25907:107;:::o;19375:318::-;6076:13;:11;:13::i;:::-;19536:51:::1;;;;;;;;19546:7;19536:51;;;;19555:11;19536:51;;;;19568:12;19536:51;;;;19582:4;19536:51;;;;::::0;19516:5:::1;:17;19522:10;;19516:17;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19615:10;;19603:59;19627:7;19636:11;19649:12;19603:59;;;;;;;;:::i;:::-;;;;;;;;19673:10;;:12;;;;;;;;;:::i;:::-;;;;;;19375:318:::0;;;:::o;16282:33::-;;;;;;;;;;;;;:::o;6865:103::-;6076:13;:11;:13::i;:::-;6930:30:::1;6957:1;6930:18;:30::i;:::-;6865:103::o:0;25400:267::-;25446:18;25477:24;25533:1;25520:10;;:14;;;;:::i;:::-;25504:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;25477:58;;25551:9;25563:1;25551:13;;25546:91;25570:10;;25566:1;:14;25546:91;;;25617:5;:8;25623:1;25617:8;;;;;;;;;;;25602:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;25612:1;25608;:5;;;;:::i;:::-;25602:12;;;;;;;;:::i;:::-;;;;;;;:23;;;;25582:3;;;;;;;25546:91;;;;25654:5;25647:12;;;25400:267;:::o;16139:43::-;16180:2;16139:43;:::o;6190:87::-;6236:7;6263:6;;;;;;;;;;;6256:13;;6190:87;:::o;25675:109::-;25725:14;25759:17;25774:1;25759:14;:17::i;:::-;25752:24;;25675:109;:::o;17141:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19123:220::-;6076:13;:11;:13::i;:::-;19208:9:::1;:16;;;;19200:5;:24;19192:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;19278:9;19307:1;19288:9;:16;;;;:20;;;;:::i;:::-;19278:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19259:9;19269:5;19259:16;;;;;;;;:::i;:::-;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;19320:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;19123:220:::0;:::o;24257:692::-;18538:10;18527:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;18552:17;:29;18570:10;18552:29;;;;;;;;;;;;;;;;;;;;;;;;;18527:54;18505:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;2589:21:::1;:19;:21::i;:::-;24339:15:::2;24357:7;:16;24365:7;24357:16;;;;;;;;;;;24339:34;;24393:1;:9;;;;;;;;;;;;24392:10;24384:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;24439:21;24478:9:::0;24490:1:::2;24478:13;;24473:310;24497:14;:23;24512:7;24497:23;;;;;;;;;;;:30;;;;24493:1;:34;24473:310;;;24549:22;24574:14;:23;24589:7;24574:23;;;;;;;;;;;24598:1;24574:26;;;;;;;;:::i;:::-;;;;;;;;;;;;24549:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;24615:21;24639:5;:15;24645:1;:8;;;24639:15;;;;;;;;;;;24615:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;24690:1;:13;;;24682:31;;:45;24714:4;:12;;;24682:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;24759:4;:12;;;24742:29;;;;;:::i;:::-;;;24534:249;;24529:3;;;;;;;24473:310;;;;24800:1;:12;;;;;;;;;;;;24795:31;;;24835:4;24842:7;:5;:7::i;:::-;24851:1;:7;;;24795:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;24882:4;24870:1;:9;;;:16;;;;;;;;;;;;;;;;;;24918:7;24904:37;24927:13;24904:37;;;;;;:::i;:::-;;;;;;;;24328:621;;2633:20:::1;:18;:20::i;:::-;24257:692:::0;:::o;19724:1147::-;19932:15;6076:13;:11;:13::i;:::-;19984:1:::1;19968:13;:17;19960:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;20034:1;20023:8;:12;20015:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20132:4;20089:48;;20094:10;20089:24;;;20114:5;20089:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;20067:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;20242:15;20259:10;20271:5;20278:10;20225:64;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20201:99;;;;;;20191:109;;20332:318;;;;;;;;20357:7;20332:318;;;;20393:12;20332:318;;;;20432:10;20332:318;;;;;;20464:5;20332:318;;;;20498:1;20332:318;;;;20541:8;20523:15;:26;;;;:::i;:::-;20332:318;;;;20580:1;20332:318;;;;;;20606:5;20332:318;;;;;;20634:4;20332:318;;;;::::0;20313:7:::1;:16;20321:7;20313:16;;;;;;;;;;;:337;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20663:11;20680:7;20663:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20731:7;20704:159;20753:10;20778:5;20798:13;20844:8;20826:15;:26;;;;:::i;:::-;20704:159;;;;;;;;;:::i;:::-;;;;;;;;19724:1147:::0;;;;;;;:::o;24990:379::-;18538:10;18527:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;18552:17;:29;18570:10;18552:29;;;;;;;;;;;;;;;;;;;;;;;;;18527:54;18505:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;25117:15:::1;25135:7;:16;25143:7;25135:16;;;;;;;;;;;25117:34;;25171:1;:9;;;;;;;;;;;;25170:10;25162:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;25244:1;25223:18;:22;25215:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25292:18;25279:1;:9;;;:31;;;;;;;:::i;:::-;;;;;;;;25342:7;25328:33;25351:1;:9;;;25328:33;;;;;;:::i;:::-;;;;;;;;25106:263;24990:379:::0;;:::o;26022:138::-;26087:22;26129:14;:23;26144:7;26129:23;;;;;;;;;;;26122:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26022:138;;;:::o;20910:1468::-;2589:21;:19;:21::i;:::-;21032:15:::1;21050:7;:16;21058:7;21050:16;;;;;;;;;;;21032:34;;21077:21;21101:5;:13;21107:6;21101:13;;;;;;;;;;;21077:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;21135:1;:8;;;;;;;;;;;;21127:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21181:1;:9;;;;;;;;;;;;21180:10;21172:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21243:1;:9;;;21225:15;:27;21217:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;21293:4;:11;;;21285:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;21340:32;21349:1;:14;;21340:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21365:6;21340:8;:32::i;:::-;21332:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21426:1;21410:4;:12;;;:17:::0;21406:668:::1;;21471:16;:25;21488:7;21471:25;;;;;;;;;;;:37;21497:10;21471:37;;;;;;;;;;;;;;;;;;;;;;;;;21470:38;21444:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;21582:16;21626:9:::0;21621:351:::1;21645:9;:16;;;;21641:1;:20;21621:351;;;21734:1;21696:9;21706:1;21696:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21691:28;;;21720:10;21691:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;21687:139;;;21774:4;21760:18;;21801:5;;21687:139;21852:11;21844:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21952:4;21912:16;:25;21929:7;21912:25;;;;;;;;;;;:37;21938:10;21912:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;21663:3;;;;;;;21621:351;;;;21429:554;21406:668;;;22025:4;:12;;;22012:9;:25;22004:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21406:668;22086:20;22128:4;:17;;;22109:4;:16;;;:36;;;;:::i;:::-;22086:59;;22156:14;:23;22171:7;22156:23;;;;;;;;;;;22199:47;;;;;;;;22213:10;22199:47;;;;;;22225:6;22199:47;;;;22233:12;22199:47;;::::0;22156:101:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22286:12;22268:1;:14;;;:30;;;;;;;:::i;:::-;;;;;;;;22336:7;22316:54;22345:10;22357:12;22316:54;;;;;;;:::i;:::-;;;;;;;;21021:1357;;;2633:20:::0;:18;:20::i;:::-;20910:1468;;:::o;27583:168::-;6076:13;:11;:13::i;:::-;27692:6:::1;27664:17;:25;27682:6;27664:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;27728:6;27714:29;;;27736:6;27714:29;;;;;;:::i;:::-;;;;;;;;27583:168:::0;;:::o;16189:45::-;16232:2;16189:45;:::o;16095:37::-;16131:1;16095:37;:::o;17263: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;26193:1085::-;26284:14;26316:21;26352:11;:18;;;;26340:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;26316:55;;26382:13;26417:9;26412:683;26436:11;:18;;;;26432:1;:22;26412:683;;;26476:10;26489:11;26501:1;26489:14;;;;;;;;:::i;:::-;;;;;;;;;;26476:27;;26518:15;26536:7;:11;26544:2;26536:11;;;;;;;;;;;26518:29;;26564:12;26609:1;26595:10;:15;;;26591:386;;26670:1;:9;;;;;;;;;;;;26669:10;:41;;;;;26701:1;:9;;;26683:15;:27;26669:41;26659:51;;26591:386;;;26750:1;26736:10;:15;;;26732:245;;26810:1;:9;;;;;;;;;;;;26800:19;;26732:245;;;26859:1;26845:10;:15;;;26841:136;;26918:1;:9;;;;;;;;;;;;26917:10;:44;;;;;26951:1;:9;;;26932:15;:28;;26917:44;26907:54;;26841:136;26732:245;26591:386;26997:7;26993:91;;;27041:1;27025:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;27032:5;27025:13;;;;;;;;:::i;:::-;;;;;;;:17;;;;27061:7;;;;;:::i;:::-;;;;26993:91;26461:634;;;26456:3;;;;;;;26412:683;;;;27107:22;27144:5;27132:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;27107:43;;27166:9;27161:85;27185:5;27181:1;:9;27161:85;;;27225:6;27232:1;27225:9;;;;;;;;:::i;:::-;;;;;;;;27212:7;27220:1;27212:10;;;;;;;;:::i;:::-;;;;;;;:22;;;;27192:3;;;;;;;27161:85;;;;27263:7;27256:14;;;;;26193:1085;;;:::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;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;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;27286:256::-;27390:4;27417:9;27429:1;27417:13;;27412:100;27436:3;:10;27432:1;:14;27412:100;;;27482:5;27472:3;27476:1;27472:6;;;;;;;;:::i;:::-;;;;;;;;:15;27468:32;;27496:4;27489:11;;;;;27468:32;27448:3;;;;;;;27412:100;;;;27529:5;27522:12;;27286:256;;;;;:::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;4953:1863::-;5056:3;5092:6;5087:3;5083:16;5179:4;5172:5;5168:16;5162:23;5198:63;5255:4;5250:3;5246:14;5232:12;5198:63;:::i;:::-;5109:162;5361:4;5354:5;5350:16;5344:23;5414:3;5408:4;5404:14;5397:4;5392:3;5388:14;5381:38;5440:103;5538:4;5524:12;5440:103;:::i;:::-;5432:111;;5281:273;5642:4;5635:5;5631:16;5625:23;5661:63;5718:4;5713:3;5709:14;5695:12;5661:63;:::i;:::-;5564:170;5817:4;5810:5;5806:16;5800:23;5836:63;5893:4;5888:3;5884:14;5870:12;5836:63;:::i;:::-;5744:165;5999:4;5992:5;5988:16;5982:23;6018:63;6075:4;6070:3;6066:14;6052:12;6018:63;:::i;:::-;5919:172;6176:4;6169:5;6165:16;6159:23;6195:63;6252:4;6247:3;6243:14;6229:12;6195:63;:::i;:::-;6101:167;6352:4;6345:5;6341:16;6335:23;6371:63;6428:4;6423:3;6419:14;6405:12;6371:63;:::i;:::-;6278:166;6529:4;6522:5;6518:16;6512:23;6548:57;6599:4;6594:3;6590:14;6576:12;6548:57;:::i;:::-;6454:161;6699:6;6692:5;6688:18;6682:25;6720:59;6771:6;6766:3;6762:16;6748:12;6720:59;:::i;:::-;6625:164;6806:4;6799:11;;5061:1755;4953:1863;;;;:::o;6822:244::-;6935:10;6970:90;7056:3;7048:6;6970:90;:::i;:::-;6956:104;;6822:244;;;;:::o;7072:135::-;7164:4;7196;7191:3;7187:14;7179:22;;7072:135;;;:::o;7267:1087::-;7430:3;7459:76;7529:5;7459:76;:::i;:::-;7551:108;7652:6;7647:3;7551:108;:::i;:::-;7544:115;;7685:3;7730:4;7722:6;7718:17;7713:3;7709:27;7760:78;7832:5;7760:78;:::i;:::-;7861:7;7892:1;7877:432;7902:6;7899:1;7896:13;7877:432;;;7973:9;7967:4;7963:20;7958:3;7951:33;8024:6;8018:13;8052:108;8155:4;8140:13;8052:108;:::i;:::-;8044:116;;8183:82;8258:6;8183:82;:::i;:::-;8173:92;;8294:4;8289:3;8285:14;8278:21;;7937:372;7924:1;7921;7917:9;7912:14;;7877:432;;;7881:14;8325:4;8318:11;;8345:3;8338:10;;7435:919;;;;;7267:1087;;;;:::o;8360:461::-;8547:4;8585:2;8574:9;8570:18;8562:26;;8634:9;8628:4;8624:20;8620:1;8609:9;8605:17;8598:47;8662:152;8809:4;8800:6;8662:152;:::i;:::-;8654:160;;8360:461;;;;:::o;8827:122::-;8900:24;8918:5;8900:24;:::i;:::-;8893:5;8890:35;8880:63;;8939:1;8936;8929:12;8880:63;8827:122;:::o;8955:139::-;9001:5;9039:6;9026:20;9017:29;;9055:33;9082:5;9055:33;:::i;:::-;8955:139;;;;:::o;9100:329::-;9159:6;9208:2;9196:9;9187:7;9183:23;9179:32;9176:119;;;9214:79;;:::i;:::-;9176:119;9334:1;9359:53;9404:7;9395:6;9384:9;9380:22;9359:53;:::i;:::-;9349:63;;9305:117;9100:329;;;;:::o;9435:104::-;9480:7;9509:24;9527:5;9509:24;:::i;:::-;9498:35;;9435:104;;;:::o;9545:142::-;9648:32;9674:5;9648:32;:::i;:::-;9643:3;9636:45;9545:142;;:::o;9693:254::-;9802:4;9840:2;9829:9;9825:18;9817:26;;9853:87;9937:1;9926:9;9922:17;9913:6;9853:87;:::i;:::-;9693:254;;;;:::o;9953:122::-;10026:24;10044:5;10026:24;:::i;:::-;10019:5;10016:35;10006:63;;10065:1;10062;10055:12;10006:63;9953:122;:::o;10081:139::-;10127:5;10165:6;10152:20;10143:29;;10181:33;10208:5;10181:33;:::i;:::-;10081:139;;;;:::o;10226:474::-;10294:6;10302;10351:2;10339:9;10330:7;10326:23;10322:32;10319:119;;;10357:79;;:::i;:::-;10319:119;10477:1;10502:53;10547:7;10538:6;10527:9;10523:22;10502:53;:::i;:::-;10492:63;;10448:117;10604:2;10630:53;10675:7;10666:6;10655:9;10651:22;10630:53;:::i;:::-;10620:63;;10575:118;10226:474;;;;;:::o;10706:::-;10774:6;10782;10831:2;10819:9;10810:7;10806:23;10802:32;10799:119;;;10837:79;;:::i;:::-;10799:119;10957:1;10982:53;11027:7;11018:6;11007:9;11003:22;10982:53;:::i;:::-;10972:63;;10928:117;11084:2;11110:53;11155:7;11146:6;11135:9;11131:22;11110:53;:::i;:::-;11100:63;;11055:118;10706:474;;;;;:::o;11186:210::-;11273:4;11311:2;11300:9;11296:18;11288:26;;11324:65;11386:1;11375:9;11371:17;11362:6;11324:65;:::i;:::-;11186:210;;;;:::o;11402:118::-;11489:24;11507:5;11489:24;:::i;:::-;11484:3;11477:37;11402:118;;:::o;11526:222::-;11619:4;11657:2;11646:9;11642:18;11634:26;;11670:71;11738:1;11727:9;11723:17;11714:6;11670:71;:::i;:::-;11526:222;;;;:::o;11754:118::-;11841:24;11859:5;11841:24;:::i;:::-;11836:3;11829:37;11754:118;;:::o;11878:222::-;11971:4;12009:2;11998:9;11994:18;11986:26;;12022:71;12090:1;12079:9;12075:17;12066:6;12022:71;:::i;:::-;11878:222;;;;:::o;12106:619::-;12183:6;12191;12199;12248:2;12236:9;12227:7;12223:23;12219:32;12216:119;;;12254:79;;:::i;:::-;12216:119;12374:1;12399:53;12444:7;12435:6;12424:9;12420:22;12399:53;:::i;:::-;12389:63;;12345:117;12501:2;12527:53;12572:7;12563:6;12552:9;12548:22;12527:53;:::i;:::-;12517:63;;12472:118;12629:2;12655:53;12700:7;12691:6;12680:9;12676:22;12655:53;:::i;:::-;12645:63;;12600:118;12106:619;;;;;:::o;12731:140::-;12824:6;12858:5;12852:12;12842:22;;12731:140;;;:::o;12877:210::-;13002:11;13036:6;13031:3;13024:19;13076:4;13071:3;13067:14;13052:29;;12877:210;;;;:::o;13093:158::-;13186:4;13209:3;13201:11;;13239:4;13234:3;13230:14;13222:22;;13093:158;;;:::o;13315:861::-;13454:4;13449:3;13445:14;13544:4;13537:5;13533:16;13527:23;13563:63;13620:4;13615:3;13611:14;13597:12;13563:63;:::i;:::-;13469:167;13725:4;13718:5;13714:16;13708:23;13744:63;13801:4;13796:3;13792:14;13778:12;13744:63;:::i;:::-;13646:171;13907:4;13900:5;13896:16;13890:23;13926:63;13983:4;13978:3;13974:14;13960:12;13926:63;:::i;:::-;13827:172;14083:4;14076:5;14072:16;14066:23;14102:57;14153:4;14148:3;14144:14;14130:12;14102:57;:::i;:::-;14009:160;13423:753;13315:861;;:::o;14182:283::-;14303:10;14324:98;14418:3;14410:6;14324:98;:::i;:::-;14454:4;14449:3;14445:14;14431:28;;14182:283;;;;:::o;14471:139::-;14567:4;14599;14594:3;14590:14;14582:22;;14471:139;;;:::o;14678:940::-;14849:3;14878:80;14952:5;14878:80;:::i;:::-;14974:112;15079:6;15074:3;14974:112;:::i;:::-;14967:119;;15110:82;15186:5;15110:82;:::i;:::-;15215:7;15246:1;15231:362;15256:6;15253:1;15250:13;15231:362;;;15332:6;15326:13;15359:115;15470:3;15455:13;15359:115;:::i;:::-;15352:122;;15497:86;15576:6;15497:86;:::i;:::-;15487:96;;15291:302;15278:1;15275;15271:9;15266:14;;15231:362;;;15235:14;15609:3;15602:10;;14854:764;;;14678:940;;;;:::o;15624:477::-;15819:4;15857:2;15846:9;15842:18;15834:26;;15906:9;15900:4;15896:20;15892:1;15881:9;15877:17;15870:47;15934:160;16089:4;16080:6;15934:160;:::i;:::-;15926:168;;15624:477;;;;:::o;16107:86::-;16142:7;16182:4;16175:5;16171:16;16160:27;;16107:86;;;:::o;16199:112::-;16282:22;16298:5;16282:22;:::i;:::-;16277:3;16270:35;16199:112;;:::o;16317:214::-;16406:4;16444:2;16433:9;16429:18;16421:26;;16457:67;16521:1;16510:9;16506:17;16497:6;16457:67;:::i;:::-;16317:214;;;;:::o;16537:329::-;16596:6;16645:2;16633:9;16624:7;16620:23;16616:32;16613:119;;;16651:79;;:::i;:::-;16613:119;16771:1;16796:53;16841:7;16832:6;16821:9;16817:22;16796:53;:::i;:::-;16786:63;;16742:117;16537:329;;;;:::o;16872:973::-;17149:4;17187:3;17176:9;17172:19;17164:27;;17201:71;17269:1;17258:9;17254:17;17245:6;17201:71;:::i;:::-;17282:72;17350:2;17339:9;17335:18;17326:6;17282:72;:::i;:::-;17364;17432:2;17421:9;17417:18;17408:6;17364:72;:::i;:::-;17446;17514:2;17503:9;17499:18;17490:6;17446:72;:::i;:::-;17528:73;17596:3;17585:9;17581:19;17572:6;17528:73;:::i;:::-;17611;17679:3;17668:9;17664:19;17655:6;17611:73;:::i;:::-;17694:67;17756:3;17745:9;17741:19;17732:6;17694:67;:::i;:::-;17771;17833:3;17822:9;17818:19;17809:6;17771:67;:::i;:::-;16872:973;;;;;;;;;;;:::o;17851:117::-;17960:1;17957;17950:12;17974:102;18015:6;18066:2;18062:7;18057:2;18050:5;18046:14;18042:28;18032:38;;17974:102;;;:::o;18082:180::-;18130:77;18127:1;18120:88;18227:4;18224:1;18217:15;18251:4;18248:1;18241:15;18268:281;18351:27;18373:4;18351:27;:::i;:::-;18343:6;18339:40;18481:6;18469:10;18466:22;18445:18;18433:10;18430:34;18427:62;18424:88;;;18492:18;;:::i;:::-;18424:88;18532:10;18528:2;18521:22;18311:238;18268:281;;:::o;18555:129::-;18589:6;18616:20;;:::i;:::-;18606:30;;18645:33;18673:4;18665:6;18645:33;:::i;:::-;18555:129;;;:::o;18690:311::-;18767:4;18857:18;18849:6;18846:30;18843:56;;;18879:18;;:::i;:::-;18843:56;18929:4;18921:6;18917:17;18909:25;;18989:4;18983;18979:15;18971:23;;18690:311;;;:::o;19007:117::-;19116:1;19113;19106:12;19147:710;19243:5;19268:81;19284:64;19341:6;19284:64;:::i;:::-;19268:81;:::i;:::-;19259:90;;19369:5;19398:6;19391:5;19384:21;19432:4;19425:5;19421:16;19414:23;;19485:4;19477:6;19473:17;19465:6;19461:30;19514:3;19506:6;19503:15;19500:122;;;19533:79;;:::i;:::-;19500:122;19648:6;19631:220;19665:6;19660:3;19657:15;19631:220;;;19740:3;19769:37;19802:3;19790:10;19769:37;:::i;:::-;19764:3;19757:50;19836:4;19831:3;19827:14;19820:21;;19707:144;19691:4;19686:3;19682:14;19675:21;;19631:220;;;19635:21;19249:608;;19147:710;;;;;:::o;19880:370::-;19951:5;20000:3;19993:4;19985:6;19981:17;19977:27;19967:122;;20008:79;;:::i;:::-;19967:122;20125:6;20112:20;20150:94;20240:3;20232:6;20225:4;20217:6;20213:17;20150:94;:::i;:::-;20141:103;;19957:293;19880:370;;;;:::o;20256:1121::-;20376:6;20384;20392;20400;20408;20457:3;20445:9;20436:7;20432:23;20428:33;20425:120;;;20464:79;;:::i;:::-;20425:120;20612:1;20601:9;20597:17;20584:31;20642:18;20634:6;20631:30;20628:117;;;20664:79;;:::i;:::-;20628:117;20769:78;20839:7;20830:6;20819:9;20815:22;20769:78;:::i;:::-;20759:88;;20555:302;20896:2;20922:53;20967:7;20958:6;20947:9;20943:22;20922:53;:::i;:::-;20912:63;;20867:118;21024:2;21050:53;21095:7;21086:6;21075:9;21071:22;21050:53;:::i;:::-;21040:63;;20995:118;21152:2;21178:53;21223:7;21214:6;21203:9;21199:22;21178:53;:::i;:::-;21168:63;;21123:118;21280:3;21307:53;21352:7;21343:6;21332:9;21328:22;21307:53;:::i;:::-;21297:63;;21251:119;20256:1121;;;;;;;;:::o;21383:144::-;21480:6;21514:5;21508:12;21498:22;;21383:144;;;:::o;21533:214::-;21662:11;21696:6;21691:3;21684:19;21736:4;21731:3;21727:14;21712:29;;21533:214;;;;:::o;21753:162::-;21850:4;21873:3;21865:11;;21903:4;21898:3;21894:14;21886:22;;21753:162;;;:::o;21987:693::-;22134:4;22129:3;22125:14;22228:4;22221:5;22217:16;22211:23;22247:63;22304:4;22299:3;22295:14;22281:12;22247:63;:::i;:::-;22149:171;22404:4;22397:5;22393:16;22387:23;22423:63;22480:4;22475:3;22471:14;22457:12;22423:63;:::i;:::-;22330:166;22581:4;22574:5;22570:16;22564:23;22600:63;22657:4;22652:3;22648:14;22634:12;22600:63;:::i;:::-;22506:167;22103:577;21987:693;;:::o;22686:299::-;22815:10;22836:106;22938:3;22930:6;22836:106;:::i;:::-;22974:4;22969:3;22965:14;22951:28;;22686:299;;;;:::o;22991:143::-;23091:4;23123;23118:3;23114:14;23106:22;;22991:143;;;:::o;23210:972::-;23389:3;23418:84;23496:5;23418:84;:::i;:::-;23518:116;23627:6;23622:3;23518:116;:::i;:::-;23511:123;;23658:86;23738:5;23658:86;:::i;:::-;23767:7;23798:1;23783:374;23808:6;23805:1;23802:13;23783:374;;;23884:6;23878:13;23911:123;24030:3;24015:13;23911:123;:::i;:::-;23904:130;;24057:90;24140:6;24057:90;:::i;:::-;24047:100;;23843:314;23830:1;23827;23823:9;23818:14;;23783:374;;;23787:14;24173:3;24166:10;;23394:788;;;23210:972;;;;:::o;24188:493::-;24391:4;24429:2;24418:9;24414:18;24406:26;;24478:9;24472:4;24468:20;24464:1;24453:9;24449:17;24442:47;24506:168;24669:4;24660:6;24506:168;:::i;:::-;24498:176;;24188:493;;;;:::o;24687:116::-;24757:21;24772:5;24757:21;:::i;:::-;24750:5;24747:32;24737:60;;24793:1;24790;24783:12;24737:60;24687:116;:::o;24809:133::-;24852:5;24890:6;24877:20;24868:29;;24906:30;24930:5;24906:30;:::i;:::-;24809:133;;;;:::o;24948:468::-;25013:6;25021;25070:2;25058:9;25049:7;25045:23;25041:32;25038:119;;;25076:79;;:::i;:::-;25038:119;25196:1;25221:53;25266:7;25257:6;25246:9;25242:22;25221:53;:::i;:::-;25211:63;;25167:117;25323:2;25349:50;25391:7;25382:6;25371:9;25367:22;25349:50;:::i;:::-;25339:60;;25294:115;24948:468;;;;;:::o;25422:442::-;25571:4;25609:2;25598:9;25594:18;25586:26;;25622:71;25690:1;25679:9;25675:17;25666:6;25622:71;:::i;:::-;25703:72;25771:2;25760:9;25756:18;25747:6;25703:72;:::i;:::-;25785;25853:2;25842:9;25838:18;25829:6;25785:72;:::i;:::-;25422:442;;;;;;:::o;25870:169::-;25954:11;25988:6;25983:3;25976:19;26028:4;26023:3;26019:14;26004:29;;25870:169;;;;:::o;26045:162::-;26185:14;26181:1;26173:6;26169:14;26162:38;26045:162;:::o;26213:366::-;26355:3;26376:67;26440:2;26435:3;26376:67;:::i;:::-;26369:74;;26452:93;26541:3;26452:93;:::i;:::-;26570:2;26565:3;26561:12;26554:19;;26213:366;;;:::o;26585:419::-;26751:4;26789:2;26778:9;26774:18;26766:26;;26838:9;26832:4;26828:20;26824:1;26813:9;26809:17;26802:47;26866:131;26992:4;26866:131;:::i;:::-;26858:139;;26585:419;;;:::o;27010:169::-;27150:21;27146:1;27138:6;27134:14;27127:45;27010:169;:::o;27185:366::-;27327:3;27348:67;27412:2;27407:3;27348:67;:::i;:::-;27341:74;;27424:93;27513:3;27424:93;:::i;:::-;27542:2;27537:3;27533:12;27526:19;;27185:366;;;:::o;27557:419::-;27723:4;27761:2;27750:9;27746:18;27738:26;;27810:9;27804:4;27800:20;27796:1;27785:9;27781:17;27774:47;27838:131;27964:4;27838:131;:::i;:::-;27830:139;;27557:419;;;:::o;27982:79::-;28021:7;28050:5;28039:16;;27982:79;;;:::o;28067:157::-;28172:45;28192:24;28210:5;28192:24;:::i;:::-;28172:45;:::i;:::-;28167:3;28160:58;28067:157;;:::o;28230:397::-;28370:3;28385:75;28456:3;28447:6;28385:75;:::i;:::-;28485:2;28480:3;28476:12;28469:19;;28498:75;28569:3;28560:6;28498:75;:::i;:::-;28598:2;28593:3;28589:12;28582:19;;28618:3;28611:10;;28230:397;;;;;:::o;28633:180::-;28681:77;28678:1;28671:88;28778:4;28775:1;28768:15;28802:4;28799:1;28792:15;28819:176;28851:1;28868:20;28886:1;28868:20;:::i;:::-;28863:25;;28902:20;28920:1;28902:20;:::i;:::-;28897:25;;28941:1;28931:35;;28946:18;;:::i;:::-;28931:35;28987:1;28984;28980:9;28975:14;;28819:176;;;;:::o;29001:180::-;29049:77;29046:1;29039:88;29146:4;29143:1;29136:15;29170:4;29167:1;29160:15;29187:180;29235:77;29232:1;29225:88;29332:4;29329:1;29322:15;29356:4;29353:1;29346:15;29373:191;29413:3;29432:20;29450:1;29432:20;:::i;:::-;29427:25;;29466:20;29484:1;29466:20;:::i;:::-;29461:25;;29509:1;29506;29502:9;29495:16;;29530:3;29527:1;29524:10;29521:36;;;29537:18;;:::i;:::-;29521:36;29373:191;;;;:::o;29570:143::-;29627:5;29658:6;29652:13;29643:22;;29674:33;29701:5;29674:33;:::i;:::-;29570:143;;;;:::o;29719:351::-;29789:6;29838:2;29826:9;29817:7;29813:23;29809:32;29806:119;;;29844:79;;:::i;:::-;29806:119;29964:1;29989:64;30045:7;30036:6;30025:9;30021:22;29989:64;:::i;:::-;29979:74;;29935:128;29719:351;;;;:::o;30076:175::-;30216:27;30212:1;30204:6;30200:14;30193:51;30076:175;:::o;30257:366::-;30399:3;30420:67;30484:2;30479:3;30420:67;:::i;:::-;30413:74;;30496:93;30585:3;30496:93;:::i;:::-;30614:2;30609:3;30605:12;30598:19;;30257:366;;;:::o;30629:419::-;30795:4;30833:2;30822:9;30818:18;30810:26;;30882:9;30876:4;30872:20;30868:1;30857:9;30853:17;30846:47;30910:131;31036:4;30910:131;:::i;:::-;30902:139;;30629:419;;;:::o;31054:442::-;31203:4;31241:2;31230:9;31226:18;31218:26;;31254:71;31322:1;31311:9;31307:17;31298:6;31254:71;:::i;:::-;31335:72;31403:2;31392:9;31388:18;31379:6;31335:72;:::i;:::-;31417;31485:2;31474:9;31470:18;31461:6;31417:72;:::i;:::-;31054:442;;;;;;:::o;31502:553::-;31679:4;31717:3;31706:9;31702:19;31694:27;;31731:71;31799:1;31788:9;31784:17;31775:6;31731:71;:::i;:::-;31812:72;31880:2;31869:9;31865:18;31856:6;31812:72;:::i;:::-;31894;31962:2;31951:9;31947:18;31938:6;31894:72;:::i;:::-;31976;32044:2;32033:9;32029:18;32020:6;31976:72;:::i;:::-;31502:553;;;;;;;:::o;32061:332::-;32182:4;32220:2;32209:9;32205:18;32197:26;;32233:71;32301:1;32290:9;32286:17;32277:6;32233:71;:::i;:::-;32314:72;32382:2;32371:9;32367:18;32358:6;32314:72;:::i;:::-;32061:332;;;;;:::o;32399:442::-;32548:4;32586:2;32575:9;32571:18;32563:26;;32599:71;32667:1;32656:9;32652:17;32643:6;32599:71;:::i;:::-;32680:72;32748:2;32737:9;32733:18;32724:6;32680:72;:::i;:::-;32762;32830:2;32819:9;32815:18;32806:6;32762:72;:::i;:::-;32399:442;;;;;;:::o;32847:233::-;32886:3;32909:24;32927:5;32909:24;:::i;:::-;32900:33;;32955:66;32948:5;32945:77;32942:103;;33025:18;;:::i;:::-;32942:103;33072:1;33065:5;33061:13;33054:20;;32847:233;;;:::o;33086:194::-;33126:4;33146:20;33164:1;33146:20;:::i;:::-;33141:25;;33180:20;33198:1;33180:20;:::i;:::-;33175:25;;33224:1;33221;33217:9;33209:17;;33248:1;33242:4;33239:11;33236:37;;;33253:18;;:::i;:::-;33236:37;33086:194;;;;:::o;33286:169::-;33426:21;33422:1;33414:6;33410:14;33403:45;33286:169;:::o;33461:366::-;33603:3;33624:67;33688:2;33683:3;33624:67;:::i;:::-;33617:74;;33700:93;33789:3;33700:93;:::i;:::-;33818:2;33813:3;33809:12;33802:19;;33461:366;;;:::o;33833:419::-;33999:4;34037:2;34026:9;34022:18;34014:26;;34086:9;34080:4;34076:20;34072:1;34061:9;34057:17;34050:47;34114:131;34240:4;34114:131;:::i;:::-;34106:139;;33833:419;;;:::o;34258:180::-;34306:77;34303:1;34296:88;34403:4;34400:1;34393:15;34427:4;34424:1;34417:15;34444:164;34584:16;34580:1;34572:6;34568:14;34561:40;34444:164;:::o;34614:366::-;34756:3;34777:67;34841:2;34836:3;34777:67;:::i;:::-;34770:74;;34853:93;34942:3;34853:93;:::i;:::-;34971:2;34966:3;34962:12;34955:19;;34614:366;;;:::o;34986:419::-;35152:4;35190:2;35179:9;35175:18;35167:26;;35239:9;35233:4;35229:20;35225:1;35214:9;35210:17;35203:47;35267:131;35393:4;35267:131;:::i;:::-;35259:139;;34986:419;;;:::o;35411:166::-;35551:18;35547:1;35539:6;35535:14;35528:42;35411:166;:::o;35583:366::-;35725:3;35746:67;35810:2;35805:3;35746:67;:::i;:::-;35739:74;;35822:93;35911:3;35822:93;:::i;:::-;35940:2;35935:3;35931:12;35924:19;;35583:366;;;:::o;35955:419::-;36121:4;36159:2;36148:9;36144:18;36136:26;;36208:9;36202:4;36198:20;36194:1;36183:9;36179:17;36172:47;36236:131;36362:4;36236:131;:::i;:::-;36228:139;;35955:419;;;:::o;36380:163::-;36520:15;36516:1;36508:6;36504:14;36497:39;36380:163;:::o;36549:366::-;36691:3;36712:67;36776:2;36771:3;36712:67;:::i;:::-;36705:74;;36788:93;36877:3;36788:93;:::i;:::-;36906:2;36901:3;36897:12;36890:19;;36549:366;;;:::o;36921:419::-;37087:4;37125:2;37114:9;37110:18;37102:26;;37174:9;37168:4;37164:20;37160:1;37149:9;37145:17;37138:47;37202:131;37328:4;37202:131;:::i;:::-;37194:139;;36921:419;;;:::o;37346:94::-;37379:8;37427:5;37423:2;37419:14;37398:35;;37346:94;;;:::o;37446:::-;37485:7;37514:20;37528:5;37514:20;:::i;:::-;37503:31;;37446:94;;;:::o;37546:100::-;37585:7;37614:26;37634:5;37614:26;:::i;:::-;37603:37;;37546:100;;;:::o;37652:157::-;37757:45;37777:24;37795:5;37777:24;:::i;:::-;37757:45;:::i;:::-;37752:3;37745:58;37652:157;;:::o;37815:679::-;38011:3;38026:75;38097:3;38088:6;38026:75;:::i;:::-;38126:2;38121:3;38117:12;38110:19;;38139:75;38210:3;38201:6;38139:75;:::i;:::-;38239:2;38234:3;38230:12;38223:19;;38252:75;38323:3;38314:6;38252:75;:::i;:::-;38352:2;38347:3;38343:12;38336:19;;38365:75;38436:3;38427:6;38365:75;:::i;:::-;38465:2;38460:3;38456:12;38449:19;;38485:3;38478:10;;37815:679;;;;;;;:::o;38500:553::-;38677:4;38715:3;38704:9;38700:19;38692:27;;38729:71;38797:1;38786:9;38782:17;38773:6;38729:71;:::i;:::-;38810:72;38878:2;38867:9;38863:18;38854:6;38810:72;:::i;:::-;38892;38960:2;38949:9;38945:18;38936:6;38892:72;:::i;:::-;38974;39042:2;39031:9;39027:18;39018:6;38974:72;:::i;:::-;38500:553;;;;;;;:::o;39059:163::-;39199:15;39195:1;39187:6;39183:14;39176:39;39059:163;:::o;39228:366::-;39370:3;39391:67;39455:2;39450:3;39391:67;:::i;:::-;39384:74;;39467:93;39556:3;39467:93;:::i;:::-;39585:2;39580:3;39576:12;39569:19;;39228:366;;;:::o;39600:419::-;39766:4;39804:2;39793:9;39789:18;39781:26;;39853:9;39847:4;39843:20;39839:1;39828:9;39824:17;39817:47;39881:131;40007:4;39881:131;:::i;:::-;39873:139;;39600:419;;;:::o;40025:161::-;40165:13;40161:1;40153:6;40149:14;40142:37;40025:161;:::o;40192:366::-;40334:3;40355:67;40419:2;40414:3;40355:67;:::i;:::-;40348:74;;40431:93;40520:3;40431:93;:::i;:::-;40549:2;40544:3;40540:12;40533:19;;40192:366;;;:::o;40564:419::-;40730:4;40768:2;40757:9;40753:18;40745:26;;40817:9;40811:4;40807:20;40803:1;40792:9;40788:17;40781:47;40845:131;40971:4;40845:131;:::i;:::-;40837:139;;40564:419;;;:::o;40989:167::-;41129:19;41125:1;41117:6;41113:14;41106:43;40989:167;:::o;41162:366::-;41304:3;41325:67;41389:2;41384:3;41325:67;:::i;:::-;41318:74;;41401:93;41490:3;41401:93;:::i;:::-;41519:2;41514:3;41510:12;41503:19;;41162:366;;;:::o;41534:419::-;41700:4;41738:2;41727:9;41723:18;41715:26;;41787:9;41781:4;41777:20;41773:1;41762:9;41758:17;41751:47;41815:131;41941:4;41815:131;:::i;:::-;41807:139;;41534:419;;;:::o;41959:162::-;42099:14;42095:1;42087:6;42083:14;42076:38;41959:162;:::o;42127:366::-;42269:3;42290:67;42354:2;42349:3;42290:67;:::i;:::-;42283:74;;42366:93;42455:3;42366:93;:::i;:::-;42484:2;42479:3;42475:12;42468:19;;42127:366;;;:::o;42499:419::-;42665:4;42703:2;42692:9;42688:18;42680:26;;42752:9;42746:4;42742:20;42738:1;42727:9;42723:17;42716:47;42780:131;42906:4;42780:131;:::i;:::-;42772:139;;42499:419;;;:::o;42924:166::-;43064:18;43060:1;43052:6;43048:14;43041:42;42924:166;:::o;43096:366::-;43238:3;43259:67;43323:2;43318:3;43259:67;:::i;:::-;43252:74;;43335:93;43424:3;43335:93;:::i;:::-;43453:2;43448:3;43444:12;43437:19;;43096:366;;;:::o;43468:419::-;43634:4;43672:2;43661:9;43657:18;43649:26;;43721:9;43715:4;43711:20;43707:1;43696:9;43692:17;43685:47;43749:131;43875:4;43749:131;:::i;:::-;43741:139;;43468:419;;;:::o;43893:173::-;44033:25;44029:1;44021:6;44017:14;44010:49;43893:173;:::o;44072:366::-;44214:3;44235:67;44299:2;44294:3;44235:67;:::i;:::-;44228:74;;44311:93;44400:3;44311:93;:::i;:::-;44429:2;44424:3;44420:12;44413:19;;44072:366;;;:::o;44444:419::-;44610:4;44648:2;44637:9;44633:18;44625:26;;44697:9;44691:4;44687:20;44683:1;44672:9;44668:17;44661:47;44725:131;44851:4;44725:131;:::i;:::-;44717:139;;44444:419;;;:::o;44869:143::-;44926:5;44957:6;44951:13;44942:22;;44973:33;45000:5;44973:33;:::i;:::-;44869:143;;;;:::o;45018:351::-;45088:6;45137:2;45125:9;45116:7;45112:23;45108:32;45105:119;;;45143:79;;:::i;:::-;45105:119;45263:1;45288:64;45344:7;45335:6;45324:9;45320:22;45288:64;:::i;:::-;45278:74;;45234:128;45018:351;;;;:::o;45375:173::-;45515:25;45511:1;45503:6;45499:14;45492:49;45375:173;:::o;45554:366::-;45696:3;45717:67;45781:2;45776:3;45717:67;:::i;:::-;45710:74;;45793:93;45882:3;45793:93;:::i;:::-;45911:2;45906:3;45902:12;45895:19;;45554:366;;;:::o;45926:419::-;46092:4;46130:2;46119:9;46115:18;46107:26;;46179:9;46173:4;46169:20;46165:1;46154:9;46150:17;46143:47;46207:131;46333:4;46207:131;:::i;:::-;46199:139;;45926:419;;;:::o;46351:170::-;46491:22;46487:1;46479:6;46475:14;46468:46;46351:170;:::o;46527:366::-;46669:3;46690:67;46754:2;46749:3;46690:67;:::i;:::-;46683:74;;46766:93;46855:3;46766:93;:::i;:::-;46884:2;46879:3;46875:12;46868:19;;46527:366;;;:::o;46899:419::-;47065:4;47103:2;47092:9;47088:18;47080:26;;47152:9;47146:4;47142:20;47138:1;47127:9;47123:17;47116:47;47180:131;47306:4;47180:131;:::i;:::-;47172:139;;46899:419;;;:::o;47324:410::-;47364:7;47387:20;47405:1;47387:20;:::i;:::-;47382:25;;47421:20;47439:1;47421:20;:::i;:::-;47416:25;;47476:1;47473;47469:9;47498:30;47516:11;47498:30;:::i;:::-;47487:41;;47677:1;47668:7;47664:15;47661:1;47658:22;47638:1;47631:9;47611:83;47588:139;;47707:18;;:::i;:::-;47588:139;47372:362;47324:410;;;;:::o;47740:185::-;47780:1;47797:20;47815:1;47797:20;:::i;:::-;47792:25;;47831:20;47849:1;47831:20;:::i;:::-;47826:25;;47870:1;47860:35;;47875:18;;:::i;:::-;47860:35;47917:1;47914;47910:9;47905:14;;47740:185;;;;:::o
Swarm Source
ipfs://d6aa855fc9c30fd83d20d5b33e7941494bf0b15a02d49e82255b5d336feb6fa1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.