Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0xcbdf76cb6c28bd641727239447ff20ee459c95552a98631daf914b2bac316efb | End Fibonaccenin... | 29517060 | 19 days 10 hrs ago | 0x9c36bc6b8c107014b6e86536d809b74c6fdb8ce9 | IN | 0xff5a8072565726a055690bd14924022de020623a | 0 MATIC | 0.101920172867 | |
0x622933dde8fe3a606b9c166d3dadeb185a9000fac84d5d7ee1b71f95ecbdfbfd | Calculate Upcomi... | 29516639 | 19 days 11 hrs ago | 0x9c36bc6b8c107014b6e86536d809b74c6fdb8ce9 | IN | 0xff5a8072565726a055690bd14924022de020623a | 0 MATIC | 0.0468675 | |
0xd2ec264aecc110e37b60497fa01257698d935d736bfe9d6db9a3ead3abb68f1d | Lever Pull Fibon... | 29323229 | 24 days 6 hrs ago | 0xe8acfcf8bf5bed4579b44a5b8a67d455272271e2 | IN | 0xff5a8072565726a055690bd14924022de020623a | 0 MATIC | 0.030932484 | |
0xb6284db26af21808ed9a5eb54e3258fff56ae95e4289030eb79cff179db6e957 | 0x61010060 | 29212341 | 27 days 1 hr ago | 0x77447f2ca205d6405206d1af316f1f5954bc2bb5 | IN | Create: XVMCfibonaccening | 0 MATIC | 0.214183728 |
[ Download CSV Export ]
Contract Name:
XVMCfibonaccening
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-06-05 */ // File: xvmc-contracts/libs/standard/Address.sol pragma solidity >=0.6.12 <=0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: xvmc-contracts/libs/custom/IERC20.sol pragma solidity >=0.6.12 <=0.8.0; //original: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol //added functions for mint, burn, burnXVMC, transferXVMC and transferOwnership /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); function mint(address to, uint256 amount) external; function burn(uint256 amount) external; function burnXVMC(address account, uint256 amount) external returns (bool); function transferXVMC(address _sender, address _recipient, uint256 _amount) external returns (bool); function transferOwnership(address newOwner) external; /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: xvmc-contracts/libs/custom/SafeERC20.sol pragma solidity >=0.6.12 <=0.8.0; //original: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol //using transferXVMC instead of transferFrom for safeTransferFrom /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferXVMC.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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. * * By default, the owner account will be the one that deploys the contract. 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; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing 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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _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: xvmc-contracts/rewardBoost.sol pragma solidity 0.8.0; interface IXVMCgovernor { function costToVote() external view returns (uint256); function maximumVoteTokens() external view returns (uint256); function delayBeforeEnforce() external view returns (uint256); function thresholdFibonaccening() external view returns (uint256); function eventFibonacceningActive() external view returns (bool); function setThresholdFibonaccening(uint256 newThreshold) external; function fibonacciDelayed() external returns (bool); function setInflation(uint256 newInflation) external; function delayFibonacci(bool _arg) external; function totalFibonacciEventsAfterGrand() external returns (uint256); function lastRegularReward() external returns (uint256); function blocksPerSecond() external returns (uint256); function changeGovernorEnforced() external returns (bool); function eligibleNewGovernor() external returns (address); function burnFromOldChef(uint256 _amount) external; function setActivateFibonaccening(bool _arg) external; function isInflationStatic() external returns (bool); function consensusContract() external view returns (address); function postGrandFibIncreaseCount() external; function rememberReward() external; } interface IMasterChef { function XVMCPerBlock() external returns (uint256); function owner() external view returns (address); } interface IToken { function governor() external view returns (address); } interface IConsensus { function totalXVMCStaked() external view returns(uint256); function tokensCastedPerVote(uint256 _forID) external view returns(uint256); } // reward boost contract // tldr; A reward boost is called 'Fibonaccening', could be compared to Bitcoin halvening // When A threshold of tokens are collected, a reward boost event can be scheduled // During the event there is a period of boosted rewards // After the event ends, the tokens are burned and the global inflation is reduced contract XVMCfibonaccening is Ownable { using SafeERC20 for IERC20; struct FibonacceningProposal { bool valid; uint256 firstCallTimestamp; uint256 valueSacrificedForVote; uint256 valueSacrificedAgainst; uint256 delay; uint256 rewardPerBlock; uint256 duration; uint256 startTime; } struct ProposeGrandFibonaccening{ bool valid; uint256 eventDate; uint256 firstCallTimestamp; uint256 valueSacrificedForVote; uint256 valueSacrificedAgainst; uint256 delay; uint256 finalSupply; } FibonacceningProposal[] public fibonacceningProposals; ProposeGrandFibonaccening[] public grandFibonacceningProposals; //WARNING: careful where we are using 1e18 and where not uint256 public immutable goldenRatio = 1618; //1.618 is the golden ratio IERC20 public immutable token; //XVMC token address public immutable oldToken = 0x6d0c966c8A09e354Df9C48b446A474CE3343D912; address public immutable oldMasterchef = 0x9BD741F077241b594EBdD745945B577d59C8768e; //masterchef address address public masterchef; uint256 public lastCallFibonaccening; //stores timestamp of last grand fibonaccening event bool public eligibleGrandFibonaccening; // when big event is ready bool public grandFibonacceningActivated; // if upgrading the contract after event, watch out this must be true uint256 public desiredSupplyAfterGrandFibonaccening; // Desired supply to reach for Grand Fib Event uint256 public targetBlock; // used for calculating target block bool public isRunningGrand; //we use this during Grand Fib Event uint256 public fibonacceningActiveID; uint256 public fibonacceningActivatedBlock; bool public expiredGrandFibonaccening; uint256 public tokensForBurn; //tokens we draw from governor to burn for fib event uint256 public grandEventLength = 14 * 24 * 3600; // default Duration for the Grand Fibonaccening(the time in which 61.8% of the supply is printed) uint256 public delayBetweenEvents = 48 * 3600; // delay between when grand events can be triggered(default 48hrs) event ProposeFibonaccening(uint256 proposalID, uint256 valueSacrificedForVote, uint256 startTime, uint256 durationInBlocks, uint256 newRewardPerBlock , address indexed enforcer, uint256 delay); event EndFibonaccening(uint256 proposalID, address indexed enforcer); event CancleFibonaccening(uint256 proposalID, address indexed enforcer); event RebalanceInflation(uint256 newRewardPerBlock); event InitiateProposeGrandFibonaccening(uint256 proposalID, uint256 depositingTokens, uint256 eventDate, uint256 finalSupply, address indexed enforcer, uint256 delay); event AddVotes(uint256 _type, uint256 proposalID, address indexed voter, uint256 tokensSacrificed, bool _for); event EnforceProposal(uint256 _type, uint256 proposalID, address indexed enforcer, bool isSuccess); event ChangeGovernor(address newGovernor); constructor (IERC20 _XVMC, address _masterchef) { token = _XVMC; masterchef = _masterchef; fibonacceningProposals.push( FibonacceningProposal(true, 0, 1e40, 0, 0, 169*1e21, 185000, 1654097100) ); } /** * Regulatory process for scheduling a "fibonaccening event" */ function proposeFibonaccening(uint256 depositingTokens, uint256 newRewardPerBlock, uint256 durationInBlocks, uint256 startTimestamp, uint256 delay) external { require(depositingTokens >= IXVMCgovernor(owner()).costToVote(), "costs to submit decisions"); require(IERC20(token).balanceOf(owner()) >= IXVMCgovernor(owner()).thresholdFibonaccening(), "need to collect penalties before calling"); require(!(IXVMCgovernor(owner()).eventFibonacceningActive()), "Event already running"); require(delay <= IXVMCgovernor(owner()).delayBeforeEnforce(), "must be shorter than Delay before enforce"); require( startTimestamp > block.timestamp + delay + (24*3600) + IXVMCgovernor(owner()).delayBeforeEnforce() && startTimestamp - block.timestamp <= 21 days, "max 21 days"); require( (newRewardPerBlock * durationInBlocks) < (getTotalSupply() * 23 / 100), "Safeguard: Can't print more than 23% of tokens in single event" ); require(newRewardPerBlock > goldenRatio || (!isRunningGrand && expiredGrandFibonaccening), "can't go below goldenratio"); //would enable grand fibonaccening //duration(in blocks) must be lower than amount of blocks mined in 30days(can't last more than roughly 30days) //30(days)*24(hours)*3600(seconds) = 2592000 uint256 amountOfBlocksIn30Days = 2592 * IXVMCgovernor(owner()).blocksPerSecond() / 1000; require(durationInBlocks <= amountOfBlocksIn30Days, "maximum 30days duration"); IERC20(token).safeTransferFrom(msg.sender, owner(), depositingTokens); fibonacceningProposals.push( FibonacceningProposal(true, block.timestamp, depositingTokens, 0, delay, newRewardPerBlock, durationInBlocks, startTimestamp) ); emit ProposeFibonaccening(fibonacceningProposals.length - 1, depositingTokens, startTimestamp, durationInBlocks, newRewardPerBlock, msg.sender, delay); } function voteFibonacceningY(uint256 proposalID, uint256 withTokens) external { require(fibonacceningProposals[proposalID].valid, "invalid"); require(fibonacceningProposals[proposalID].firstCallTimestamp + fibonacceningProposals[proposalID].delay + IXVMCgovernor(owner()).delayBeforeEnforce() > block.timestamp, "past the point of no return"); IERC20(token).safeTransferFrom(msg.sender, owner(), withTokens); fibonacceningProposals[proposalID].valueSacrificedForVote+= withTokens; emit AddVotes(0, proposalID, msg.sender, withTokens, true); } function voteFibonacceningN(uint256 proposalID, uint256 withTokens, bool withAction) external { require(fibonacceningProposals[proposalID].valid, "invalid"); require(fibonacceningProposals[proposalID].firstCallTimestamp + fibonacceningProposals[proposalID].delay + IXVMCgovernor(owner()).delayBeforeEnforce() > block.timestamp, "past the point of no return"); IERC20(token).safeTransferFrom(msg.sender, owner(), withTokens); fibonacceningProposals[proposalID].valueSacrificedAgainst+= withTokens; if(withAction) { vetoFibonaccening(proposalID); } emit AddVotes(0, proposalID, msg.sender, withTokens, false); } function vetoFibonaccening(uint256 proposalID) public { require(fibonacceningProposals[proposalID].valid == true, "Invalid proposal"); require(fibonacceningProposals[proposalID].firstCallTimestamp + fibonacceningProposals[proposalID].delay <= block.timestamp, "pending delay"); require(fibonacceningProposals[proposalID].valueSacrificedForVote < fibonacceningProposals[proposalID].valueSacrificedAgainst, "needs more votes"); fibonacceningProposals[proposalID].valid = false; emit EnforceProposal(0, proposalID, msg.sender, false); } /** * Activates a valid fibonaccening event * */ function leverPullFibonaccening(uint256 proposalID) public { require(!(IXVMCgovernor(owner()).fibonacciDelayed()), "event has been delayed"); require( IERC20(token).balanceOf(owner()) >= IXVMCgovernor(owner()).thresholdFibonaccening(), "needa collect penalties"); require(fibonacceningProposals[proposalID].valid == true, "invalid proposal"); require(block.timestamp >= fibonacceningProposals[proposalID].startTime, "can only start when set"); require(!(IXVMCgovernor(owner()).eventFibonacceningActive()), "already active"); require(!grandFibonacceningActivated || (expiredGrandFibonaccening && !isRunningGrand), "not available during the grand boost event"); if(fibonacceningProposals[proposalID].valueSacrificedForVote >= fibonacceningProposals[proposalID].valueSacrificedAgainst) { //IERC20(token).safeTransferFrom(msg.sender, owner(), IXVMCgovernor(owner()).costToVote()); tokensForBurn = IXVMCgovernor(owner()).thresholdFibonaccening(); IERC20(token).safeTransferFrom(owner(), address(this), tokensForBurn); IXVMCgovernor(owner()).rememberReward(); // remembers last regular rewar(before boost) IXVMCgovernor(owner()).setInflation(fibonacceningProposals[proposalID].rewardPerBlock); fibonacceningProposals[proposalID].valid = false; fibonacceningActiveID = proposalID; fibonacceningActivatedBlock = block.number; IXVMCgovernor(owner()).setActivateFibonaccening(true); emit EnforceProposal(0, proposalID, msg.sender, true); } else { vetoFibonaccening(proposalID); } } /** * Ends fibonaccening event * sets new inflation * burns the tokens */ function endFibonaccening() external { require(IXVMCgovernor(owner()).eventFibonacceningActive(), "no active event"); require( block.number >= fibonacceningActivatedBlock + fibonacceningProposals[fibonacceningActiveID].duration, "not yet expired" ); uint256 newAmount = calculateUpcomingRewardPerBlock(); IXVMCgovernor(owner()).setInflation(newAmount); IXVMCgovernor(owner()).setActivateFibonaccening(false); IERC20(token).burn(tokensForBurn); // burns the tokens - "fibonaccening" sacrifice IXVMCgovernor(owner()).burnFromOldChef(0); //burns all the tokens in old chef //if past 'grand fibonaccening' increase event count if(!isRunningGrand && expiredGrandFibonaccening) { IXVMCgovernor(owner()).postGrandFibIncreaseCount(); } emit EndFibonaccening(fibonacceningActiveID, msg.sender); } /** * In case we have multiple valid fibonaccening proposals * When the event is enforced, all other valid proposals can be invalidated * Just to clear up the space */ function cancleFibonaccening(uint256 proposalID) external { require(IXVMCgovernor(owner()).eventFibonacceningActive(), "fibonaccening active required"); require(fibonacceningProposals[proposalID].valid, "must be valid to negate ofc"); fibonacceningProposals[proposalID].valid = false; emit CancleFibonaccening(proposalID, msg.sender); } /** * After the Grand Fibonaccening event, the inflation reduces to roughly 1.618% annually * On each new Fibonaccening event, it further reduces by Golden ratio(in percentile) * * New inflation = Current inflation * ((100 - 1.618) / 100) */ function rebalanceInflation() external { require(IXVMCgovernor(owner()).totalFibonacciEventsAfterGrand() > 0, "Only after the Grand Fibonaccening event"); require(!(IXVMCgovernor(owner()).eventFibonacceningActive()), "Event is running"); bool isStatic = IXVMCgovernor(owner()).isInflationStatic(); uint256 initialSupply = getTotalSupply(); uint256 _factor = goldenRatio; // if static, then inflation is 1.618% annually // Else the inflation reduces by 1.618%(annually) on each event if(!isStatic) { for(uint256 i = 0; i < IXVMCgovernor(owner()).totalFibonacciEventsAfterGrand(); i++) { _factor = _factor * 98382 / 100000; //factor is multiplied * 1000 (number is 1618, when actual factor is 1.618) } } // divide by 1000 to turn 1618 into 1.618% (and then divide farther by 100 to convert percentage) uint256 supplyToPrint = initialSupply * _factor / 100000; uint256 rewardPerBlock = supplyToPrint / (365 * 24 * 36 * IXVMCgovernor(owner()).blocksPerSecond() / 10000); IXVMCgovernor(owner()).setInflation(rewardPerBlock); emit RebalanceInflation(rewardPerBlock); } /** * If inflation is to drop below golden ratio, the grand fibonaccening event is ready * IMPORTANT NOTE: the math for the grand fibonaccening needs a lot of additional checks * It is almost certain that fixes will be required. The event won't happen for quite some time. * Giving enough time for additional fixes and changes to be adapted */ function isGrandFibonacceningReady() external { require(!eligibleGrandFibonaccening); if((IMasterChef(masterchef).XVMCPerBlock() - goldenRatio * 1e18) <= goldenRatio * 1e18) { //we x1000'd the supply so 1e18 eligibleGrandFibonaccening = true; } } /** * The Grand Fibonaccening Event, only happens once * A lot of Supply is printed (x1.618 - x1,000,000) * People like to buy on the way down * People like high APYs * People like to buy cheap coins * Grand Fibonaccening ain't happening for quite some time... * We could add a requirement to vote through consensus for the "Grand Fibonaccening" to be enforced */ function initiateProposeGrandFibonaccening(uint256 depositingTokens, uint256 eventDate, uint256 finalSupply, uint256 delay) external { require(eligibleGrandFibonaccening && !grandFibonacceningActivated); require(delay <= IXVMCgovernor(owner()).delayBeforeEnforce(), "must be shorter than Delay before enforce"); require(depositingTokens >= IXVMCgovernor(owner()).costToVote(), "there is a minimum cost to vote"); uint256 _totalSupply = getTotalSupply(); require(finalSupply >= (_totalSupply * 1618 / 1000) && finalSupply <= (_totalSupply * 1000000)); require(eventDate > block.timestamp + delay + (7*24*3600) + IXVMCgovernor(owner()).delayBeforeEnforce()); IERC20(token).safeTransferFrom(msg.sender, owner(), depositingTokens); grandFibonacceningProposals.push( ProposeGrandFibonaccening(true, eventDate, block.timestamp, depositingTokens, 0, delay, finalSupply) ); emit EnforceProposal(1, grandFibonacceningProposals.length - 1, msg.sender, true); } function voteGrandFibonacceningY(uint256 proposalID, uint256 withTokens) external { require(grandFibonacceningProposals[proposalID].valid, "invalid"); require(grandFibonacceningProposals[proposalID].eventDate - (7*24*3600) > block.timestamp, "past the point of no return"); //can only be cancled up until 7days before event IERC20(token).safeTransferFrom(msg.sender, owner(), withTokens); grandFibonacceningProposals[proposalID].valueSacrificedForVote+= withTokens; emit AddVotes(1, proposalID, msg.sender, withTokens, true); } function voteGrandFibonacceningN(uint256 proposalID, uint256 withTokens, bool withAction) external { require(grandFibonacceningProposals[proposalID].valid, "invalid"); require(grandFibonacceningProposals[proposalID].eventDate - (7*24*3600) > block.timestamp, "past the point of no return"); //can only be cancled up until 7days before event IERC20(token).safeTransferFrom(msg.sender, owner(), withTokens); grandFibonacceningProposals[proposalID].valueSacrificedAgainst+= withTokens; if(withAction) { vetoProposeGrandFibonaccening(proposalID); } emit AddVotes(1, proposalID, msg.sender, withTokens, false); } /* * can be vetto'd during delayBeforeEnforce period. * afterwards it can not be cancled anymore * but it can still be front-ran by earlier event */ function vetoProposeGrandFibonaccening(uint256 proposalID) public { require(grandFibonacceningProposals[proposalID].valid, "already invalid"); require(grandFibonacceningProposals[proposalID].firstCallTimestamp + grandFibonacceningProposals[proposalID].delay + IXVMCgovernor(owner()).delayBeforeEnforce() <= block.timestamp, "pending delay"); require(grandFibonacceningProposals[proposalID].valueSacrificedForVote < grandFibonacceningProposals[proposalID].valueSacrificedAgainst, "needs more votes"); grandFibonacceningProposals[proposalID].valid = false; emit EnforceProposal(1, proposalID, msg.sender, false); } function grandFibonacceningEnforce(uint256 proposalID) public { require(!grandFibonacceningActivated, "already called"); require(grandFibonacceningProposals[proposalID].valid && grandFibonacceningProposals[proposalID].eventDate <= block.timestamp, "not yet valid"); address _consensusContract = IXVMCgovernor(owner()).consensusContract(); uint256 _totalStaked = IConsensus(_consensusContract).totalXVMCStaked(); //to approve grand fibonaccening, more tokens have to be sacrificed for vote ++ // more stakes(locked shares) need to vote in favor than against it //to vote in favor, simply vote for proposal ID of maximum uint256 number - 1 uint256 _totalVotedInFavor = IConsensus(_consensusContract).tokensCastedPerVote(type(uint256).max - 1); uint256 _totalVotedAgainst= IConsensus(_consensusContract).tokensCastedPerVote(type(uint256).max); require(_totalVotedInFavor >= _totalStaked * 25 / 100 || _totalVotedAgainst >= _totalStaked * 25 / 100, "minimum 25% weighted vote required"); if(grandFibonacceningProposals[proposalID].valueSacrificedForVote >= grandFibonacceningProposals[proposalID].valueSacrificedAgainst && _totalVotedInFavor > _totalVotedAgainst) { grandFibonacceningActivated = true; grandFibonacceningProposals[proposalID].valid = false; desiredSupplyAfterGrandFibonaccening = grandFibonacceningProposals[proposalID].finalSupply; emit EnforceProposal(1, proposalID, msg.sender, true); } else { grandFibonacceningProposals[proposalID].valid = false; emit EnforceProposal(1, proposalID, msg.sender, false); } } /** * Function handling The Grand Fibonaccening * */ function grandFibonacceningRunning() external { require(grandFibonacceningActivated && !expiredGrandFibonaccening); if(isRunningGrand){ require(block.number >= targetBlock, "target block not yet reached"); IXVMCgovernor(owner()).setInflation(0); isRunningGrand = false; //incentive to stop the event in time if(IERC20(token).balanceOf(owner()) >= IXVMCgovernor(owner()).costToVote() * 42) { IERC20(token).safeTransferFrom(owner(), payable(msg.sender), IXVMCgovernor(owner()).costToVote() * 42); } } else { require(!(IXVMCgovernor(owner()).fibonacciDelayed()), "event has been delayed"); uint256 _totalSupply = getTotalSupply(); require( ( _totalSupply * goldenRatio * goldenRatio / 1000000) < desiredSupplyAfterGrandFibonaccening, "Last 2 events happen at once" ); // Just a simple implementation that allows max once per day at a certain time require( (block.timestamp % 86400) / 3600 >= 16 && (block.timestamp % 86400) / 3600 <= 18, "can only call between 16-18 UTC" ); require(block.timestamp - lastCallFibonaccening > delayBetweenEvents); lastCallFibonaccening = block.timestamp; uint256 targetedSupply = _totalSupply * goldenRatio / 1000; uint256 amountToPrint = targetedSupply - _totalSupply; // (+61.8%) //printing the amount(61.8% of supply) in uint256(grandEventLength) seconds ( blocks in second are x100 ) uint256 rewardPerBlock = amountToPrint / (grandEventLength * IXVMCgovernor(owner()).blocksPerSecond() / 1000000); targetBlock = block.number + (amountToPrint / rewardPerBlock); IXVMCgovernor(owner()).setInflation(rewardPerBlock); isRunningGrand = true; } } /** * During the last print of the Grand Fibonaccening * It prints up to "double the dose" in order to reach the desired supply * Why? to create a big decrease in the price, moving away from everyone's * buy point. It creates a big gap with no overhead resistance, creating the potential for * the price to move back up effortlessly */ function startLastPrintGrandFibonaccening() external { require(!(IXVMCgovernor(owner()).fibonacciDelayed()), "event has been delayed"); require(grandFibonacceningActivated && !expiredGrandFibonaccening && !isRunningGrand); uint256 _totalSupply = getTotalSupply(); require( _totalSupply * goldenRatio * goldenRatio / 1000000 >= desiredSupplyAfterGrandFibonaccening, "on the last 2 we do it in one, call lastprint" ); require(block.timestamp - lastCallFibonaccening > delayBetweenEvents, "pending delay"); require((block.timestamp % 86400) / 3600 >= 16, "only after 16:00 UTC"); uint256 rewardPerBlock = ( desiredSupplyAfterGrandFibonaccening - _totalSupply ) / (grandEventLength * IXVMCgovernor(owner()).blocksPerSecond() / 1000000); //prints in desired time targetBlock = (desiredSupplyAfterGrandFibonaccening - _totalSupply) / rewardPerBlock; IXVMCgovernor(owner()).setInflation(rewardPerBlock); isRunningGrand = true; expiredGrandFibonaccening = true; } function expireLastPrintGrandFibonaccening() external { require(isRunningGrand && expiredGrandFibonaccening); require(block.number >= (targetBlock-7)); uint256 _totalSupply = getTotalSupply(); uint256 tokensToPrint = (_totalSupply * goldenRatio) / 100000; // 1618 => 1.618 (/1000), 1.618 => 1.618% (/100) uint256 newEmissions = tokensToPrint / (365 * 24 * 36 * IXVMCgovernor(owner()).blocksPerSecond() / 10000); IXVMCgovernor(owner()).setInflation(newEmissions); isRunningGrand = false; //incentive to stop the event in time if(IERC20(token).balanceOf(owner()) >= IXVMCgovernor(owner()).costToVote() * 50) { IERC20(token).safeTransferFrom(owner(), payable(msg.sender), IXVMCgovernor(owner()).costToVote() * 50); } } function setMasterchef() external { masterchef = IMasterChef(address(token)).owner(); } //transfers ownership of this contract to new governor //masterchef is the token owner, governor is the owner of masterchef function changeGovernor() external { _transferOwnership(IToken(address(token)).governor()); } // this is unneccesary until the Grand Fibonaccening is actually to happen // Should perhaps add a proposal to regulate the length and delay function updateDelayBetweenEvents(uint256 _delay) external onlyOwner { delayBetweenEvents = _delay; } function updateGrandEventLength(uint256 _length) external onlyOwner { grandEventLength = _length; } function getTotalSupply() private view returns (uint256) { return (token.totalSupply() + 1000 * (IERC20(oldToken).totalSupply() - IERC20(oldToken).balanceOf(address(token)))); } /** * After the Fibonaccening event ends, global inflation reduces * by -1.618 tokens/block prior to the Grand Fibonaccening and * by 1.618 percentile after the Grand Fibonaccening ( * ((100-1.618) / 100)) */ function calculateUpcomingRewardPerBlock() public returns(uint256) { if(!expiredGrandFibonaccening) { return IXVMCgovernor(owner()).lastRegularReward() - goldenRatio * 1e18; } else { return IXVMCgovernor(owner()).lastRegularReward() * 98382 / 100000; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_XVMC","type":"address"},{"internalType":"address","name":"_masterchef","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_type","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"proposalID","type":"uint256"},{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensSacrificed","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_for","type":"bool"}],"name":"AddVotes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalID","type":"uint256"},{"indexed":true,"internalType":"address","name":"enforcer","type":"address"}],"name":"CancleFibonaccening","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newGovernor","type":"address"}],"name":"ChangeGovernor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalID","type":"uint256"},{"indexed":true,"internalType":"address","name":"enforcer","type":"address"}],"name":"EndFibonaccening","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_type","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"proposalID","type":"uint256"},{"indexed":true,"internalType":"address","name":"enforcer","type":"address"},{"indexed":false,"internalType":"bool","name":"isSuccess","type":"bool"}],"name":"EnforceProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"depositingTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eventDate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"finalSupply","type":"uint256"},{"indexed":true,"internalType":"address","name":"enforcer","type":"address"},{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"InitiateProposeGrandFibonaccening","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"valueSacrificedForVote","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"durationInBlocks","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newRewardPerBlock","type":"uint256"},{"indexed":true,"internalType":"address","name":"enforcer","type":"address"},{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"ProposeFibonaccening","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newRewardPerBlock","type":"uint256"}],"name":"RebalanceInflation","type":"event"},{"inputs":[],"name":"calculateUpcomingRewardPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalID","type":"uint256"}],"name":"cancleFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"changeGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delayBetweenEvents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"desiredSupplyAfterGrandFibonaccening","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eligibleGrandFibonaccening","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"expireLastPrintGrandFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"expiredGrandFibonaccening","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fibonacceningActivatedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fibonacceningActiveID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"fibonacceningProposals","outputs":[{"internalType":"bool","name":"valid","type":"bool"},{"internalType":"uint256","name":"firstCallTimestamp","type":"uint256"},{"internalType":"uint256","name":"valueSacrificedForVote","type":"uint256"},{"internalType":"uint256","name":"valueSacrificedAgainst","type":"uint256"},{"internalType":"uint256","name":"delay","type":"uint256"},{"internalType":"uint256","name":"rewardPerBlock","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldenRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"grandEventLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"grandFibonacceningActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalID","type":"uint256"}],"name":"grandFibonacceningEnforce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"grandFibonacceningProposals","outputs":[{"internalType":"bool","name":"valid","type":"bool"},{"internalType":"uint256","name":"eventDate","type":"uint256"},{"internalType":"uint256","name":"firstCallTimestamp","type":"uint256"},{"internalType":"uint256","name":"valueSacrificedForVote","type":"uint256"},{"internalType":"uint256","name":"valueSacrificedAgainst","type":"uint256"},{"internalType":"uint256","name":"delay","type":"uint256"},{"internalType":"uint256","name":"finalSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"grandFibonacceningRunning","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"depositingTokens","type":"uint256"},{"internalType":"uint256","name":"eventDate","type":"uint256"},{"internalType":"uint256","name":"finalSupply","type":"uint256"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"initiateProposeGrandFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isGrandFibonacceningReady","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isRunningGrand","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastCallFibonaccening","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalID","type":"uint256"}],"name":"leverPullFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"masterchef","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldMasterchef","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"depositingTokens","type":"uint256"},{"internalType":"uint256","name":"newRewardPerBlock","type":"uint256"},{"internalType":"uint256","name":"durationInBlocks","type":"uint256"},{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"proposeFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebalanceInflation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setMasterchef","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startLastPrintGrandFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"targetBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_delay","type":"uint256"}],"name":"updateDelayBetweenEvents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"updateGrandEventLength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalID","type":"uint256"}],"name":"vetoFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalID","type":"uint256"}],"name":"vetoProposeGrandFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalID","type":"uint256"},{"internalType":"uint256","name":"withTokens","type":"uint256"},{"internalType":"bool","name":"withAction","type":"bool"}],"name":"voteFibonacceningN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalID","type":"uint256"},{"internalType":"uint256","name":"withTokens","type":"uint256"}],"name":"voteFibonacceningY","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalID","type":"uint256"},{"internalType":"uint256","name":"withTokens","type":"uint256"},{"internalType":"bool","name":"withAction","type":"bool"}],"name":"voteGrandFibonacceningN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalID","type":"uint256"},{"internalType":"uint256","name":"withTokens","type":"uint256"}],"name":"voteGrandFibonacceningY","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101006040526106526080527f6d0c966c8a09e354df9c48b446a474ce3343d91200000000000000000000000060c0527f9bd741f077241b594ebdd745945b577d59c8768e00000000000000000000000060e05262127500600d556202a300600e553480156200006e57600080fd5b5060405162005710380380620057108339810160408190526200009191620002e9565b620000a56200009f62000295565b62000299565b606091821b6001600160601b03191660a0908152600380546001600160a01b0319166001600160a01b03939093169290921790915560408051610100810182526001808252600060208301818152701d6329f1c35ca4bfabb9f5610000000000948401948552958301818152608084018281526923c98223b79ff7a000009685019687526202d2a860c0860190815263629784cc60e08701908152855480870187559590945294517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66008909502948501805460ff191691151591909117905596517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf784015593517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf883015592517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf982015593517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa85015591517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb84015590517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfc830155517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfd9091015562000340565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060408385031215620002fc578182fd5b8251620003098162000327565b60208401519092506200031c8162000327565b809150509250929050565b6001600160a01b03811681146200033d57600080fd5b50565b60805160a05160601c60c05160601c60e05160601c6152d76200043960003960006117ea01526000818161278a015281816141c20152614269015260008181610ac501528181610eec01528181611255015281816113940152818161198301528181611e810152818161246b015281816130b1015281816136c3015281816137ff015281816138b501528181613c2a01528181613f6701528181614186015281816141ef0152614310015260008181610dc70152818161146e01528181611550015281816116e301528181611715015281816120df0152818161233a01528181612989015281816134fb01526139cc01526152d76000f3fe608060405234801561001057600080fd5b50600436106102735760003560e01c80639f8fd39f11610151578063d931064b116100c3578063f26d5d2611610087578063f26d5d261461049b578063f2fde38b146104a3578063f35950c0146104b6578063f6e3423d146104be578063fb1db278146104d1578063fc0c546a146104d957610273565b8063d931064b14610449578063e8bdf3e514610470578063e94eabc914610483578063f03507af1461048b578063f08669dc1461049357610273565b8063c34f00f411610115578063c34f00f4146103f8578063c98df7b114610400578063c98eadc014610408578063d3a1441014610410578063d76bb83a14610423578063d783e7fb1461043657610273565b80639f8fd39f146103b2578063a4cbcd14146103d8578063b31c710a146103e0578063b661e5a2146103e8578063bbcc85f0146103f057610273565b80633906b622116101ea5780636ce57221116101ae5780636ce5722114610361578063715018a61461036957806386ddb9de146103715780638da5cb5b14610384578063955b9ee41461038c5780639bc643a41461039f57610273565b80633906b62214610323578063528e04c71461032b57806353775c011461033e57806354ad391e14610346578063640ba48d1461034e57610273565b80632535e6111161023c5780632535e611146102db5780632f651dbb146102e3578063322d617b146102eb578063343f7760146102f35780633830b9d8146102fb57806338d6ee701461031057610273565b806206cae0146102785780630a16697a1461028d57806312dee591146102ab5780631d777856146102be57806322565bc6146102c6575b600080fd5b61028b610286366004614686565b6104e1565b005b6102956109ae565b6040516102a29190614843565b60405180910390f35b61028b6102b9366004614740565b6109b4565b610295611100565b6102ce611106565b6040516102a291906147ce565b61028b61110f565b6102956116c2565b6102956116c8565b61028b6116ce565b6103036117e8565b6040516102a29190614796565b61028b61031e3660046146d7565b61180c565b6102ce611a3d565b61028b610339366004614686565b611a46565b61028b611c9d565b61028b612000565b61028b61035c366004614686565b6122f4565b610295612338565b61028b61235c565b61028b61037f3660046146b6565b6123a5565b61030361250d565b61028b61039a366004614686565b61251d565b61028b6103ad366004614686565b6126eb565b6103c56103c0366004614686565b61272f565b6040516102a297969594939291906147d9565b610295612782565b610303612788565b6102ce6127ac565b6102ce6127ba565b6102956127c3565b6102956127c9565b61028b6127cf565b61028b61041e3660046146d7565b612bc3565b61028b610431366004614686565b612d04565b61028b61044436600461470f565b612e5d565b61045c610457366004614686565b613271565b6040516102a298979695949392919061480b565b61028b61047e3660046146b6565b6132cb565b6102956134a7565b61028b6134ad565b61028b6137fd565b61028b6138b0565b61028b6104b1366004614632565b613949565b6102956139ba565b61028b6104cc366004614686565b613b19565b610303614175565b610303614184565b600554610100900460ff16156105125760405162461bcd60e51b815260040161050990614eba565b60405180910390fd5b6002818154811061053357634e487b7160e01b600052603260045260246000fd5b600091825260209091206007909102015460ff1680156105855750426002828154811061057057634e487b7160e01b600052603260045260246000fd5b90600052602060002090600702016001015411155b6105a15760405162461bcd60e51b815260040161050990614f87565b60006105ab61250d565b6001600160a01b031663931cc2d46040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e357600080fd5b505afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b919061464e565b90506000816001600160a01b03166319cbe9506040518163ffffffff1660e01b815260040160206040518083038186803b15801561065857600080fd5b505afa15801561066c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610690919061469e565b905060006001600160a01b038316637e57e8ff6106b060016000196151a0565b6040518263ffffffff1660e01b81526004016106cc9190614843565b60206040518083038186803b1580156106e457600080fd5b505afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061469e565b90506000836001600160a01b0316637e57e8ff6000196040518263ffffffff1660e01b815260040161074e9190614843565b60206040518083038186803b15801561076657600080fd5b505afa15801561077a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079e919061469e565b905060646107ad846019615181565b6107b7919061516d565b821015806107db575060646107cd846019615181565b6107d7919061516d565b8110155b6107f75760405162461bcd60e51b815260040161050990614d33565b6002858154811061081857634e487b7160e01b600052603260045260246000fd5b9060005260206000209060070201600401546002868154811061084b57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060070201600301541015801561086a57508082115b15610937576005805461ff0019166101001790556002805460009190879081106108a457634e487b7160e01b600052603260045260246000fd5b60009182526020909120600790910201805460ff191691151591909117905560028054869081106108e557634e487b7160e01b600052603260045260246000fd5b906000526020600020906007020160060154600681905550336001600160a01b0316600080516020615262833981519152600187600160405161092a9392919061484c565b60405180910390a26109a7565b60006002868154811061095a57634e487b7160e01b600052603260045260246000fd5b60009182526020822060079190910201805460ff19169215159290921790915560405133916000805160206152628339815191529161099e916001918a919061484c565b60405180910390a25b5050505050565b60075481565b6109bc61250d565b6001600160a01b03166351a41dec6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109f457600080fd5b505afa158015610a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2c919061469e565b851015610a4b5760405162461bcd60e51b815260040161050990614937565b610a5361250d565b6001600160a01b031663ae8853526040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8b57600080fd5b505afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac3919061469e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231610afa61250d565b6040518263ffffffff1660e01b8152600401610b169190614796565b60206040518083038186803b158015610b2e57600080fd5b505afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b66919061469e565b1015610b845760405162461bcd60e51b815260040161050990614b87565b610b8c61250d565b6001600160a01b0316632a5626f26040518163ffffffff1660e01b815260040160206040518083038186803b158015610bc457600080fd5b505afa158015610bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc919061466a565b15610c195760405162461bcd60e51b815260040161050990614e8b565b610c2161250d565b6001600160a01b03166334733cc96040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5957600080fd5b505afa158015610c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c91919061469e565b811115610cb05760405162461bcd60e51b815260040161050990614de1565b610cb861250d565b6001600160a01b03166334733cc96040518163ffffffff1660e01b815260040160206040518083038186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d28919061469e565b610d328242615155565b610d3f9062015180615155565b610d499190615155565b82118015610d635750621baf80610d6042846151a0565b11155b610d7f5760405162461bcd60e51b815260040161050990614ff8565b6064610d896141a8565b610d94906017615181565b610d9e919061516d565b610da88486615181565b10610dc55760405162461bcd60e51b815260040161050990614bcf565b7f0000000000000000000000000000000000000000000000000000000000000000841180610e03575060085460ff16158015610e035750600b5460ff165b610e1f5760405162461bcd60e51b815260040161050990614b19565b60006103e8610e2c61250d565b6001600160a01b0316638a22abb16040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9e919061469e565b610eaa90610a20615181565b610eb4919061516d565b905080841115610ed65760405162461bcd60e51b815260040161050990614b50565b610f1433610ee261250d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190896143ae565b6040805161010081018252600180825242602083019081529282018981526000606084018181526080850188815260a086018c815260c087018c815260e088018c8152875480890189559588905297517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66008909602958601805460ff191691151591909117905597517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf785015593517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf884015590517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf9830155517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa82015590517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb82015592517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfc84015590517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfd90920191909155805433917f7516e35bbad4efdde8665222e2ab1519fcd5f952186c57dfeec3fcd83a5ba5e2916110d991906151a0565b8886888a886040516110f09695949392919061512d565b60405180910390a2505050505050565b600c5481565b60055460ff1681565b600554610100900460ff1680156111295750600b5460ff16155b61113257600080fd5b60085460ff16156113c15760075443101561115f5760405162461bcd60e51b8152600401610509906150d5565b61116761250d565b6001600160a01b031663e0a8ed5260006040518263ffffffff1660e01b81526004016111939190614843565b600060405180830381600087803b1580156111ad57600080fd5b505af11580156111c1573d6000803e3d6000fd5b50506008805460ff19169055506111d8905061250d565b6001600160a01b03166351a41dec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561121057600080fd5b505afa158015611224573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611248919061469e565b61125390602a615181565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a0823161128a61250d565b6040518263ffffffff1660e01b81526004016112a69190614796565b60206040518083038186803b1580156112be57600080fd5b505afa1580156112d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f6919061469e565b106113bc576113bc61130661250d565b3361130f61250d565b6001600160a01b03166351a41dec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561134757600080fd5b505afa15801561135b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137f919061469e565b61138a90602a615181565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169291906143ae565b6116c0565b6113c961250d565b6001600160a01b031663129ebc4b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561140357600080fd5b505af1158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b919061466a565b156114585760405162461bcd60e51b8152600401610509906148de565b60006114626141a8565b600654909150620f42407f00000000000000000000000000000000000000000000000000000000000000006114978185615181565b6114a19190615181565b6114ab919061516d565b106114c85760405162461bcd60e51b815260040161050990614f19565b6010610e106114da62015180426151fe565b6114e4919061516d565b1015801561150c57506012610e106114ff62015180426151fe565b611509919061516d565b11155b6115285760405162461bcd60e51b81526004016105099061509e565b600e5460045461153890426151a0565b1161154257600080fd5b4260045560006103e86115757f000000000000000000000000000000000000000000000000000000000000000084615181565b61157f919061516d565b9050600061158d83836151a0565b90506000620f424061159d61250d565b6001600160a01b0316638a22abb16040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156115d757600080fd5b505af11580156115eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160f919061469e565b600d5461161c9190615181565b611626919061516d565b611630908361516d565b905061163c818361516d565b6116469043615155565b60075561165161250d565b6001600160a01b031663e0a8ed52826040518263ffffffff1660e01b815260040161167c9190614843565b600060405180830381600087803b15801561169657600080fd5b505af11580156116aa573d6000803e3d6000fd5b50506008805460ff191660011790555050505050505b565b60065481565b600a5481565b60055460ff16156116de57600080fd5b6117107f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000615181565b6117427f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000615181565b600360009054906101000a90046001600160a01b03166001600160a01b031663135d31d76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561179257600080fd5b505af11580156117a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ca919061469e565b6117d491906151a0565b116116c0576005805460ff19166001179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001838154811061182d57634e487b7160e01b600052603260045260246000fd5b600091825260209091206008909102015460ff1661185d5760405162461bcd60e51b81526004016105099061510c565b4261186661250d565b6001600160a01b03166334733cc96040518163ffffffff1660e01b815260040160206040518083038186803b15801561189e57600080fd5b505afa1580156118b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d6919061469e565b600185815481106118f757634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600401546001868154811061192a57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600101546119469190615155565b6119509190615155565b1161196d5760405162461bcd60e51b815260040161050990614c2c565b6119ab3361197961250d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190856143ae565b81600184815481106119cd57634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160030160008282546119ed9190615155565b90915550508015611a0157611a018361251d565b336001600160a01b0316600080516020615282833981519152600085856000604051611a309493929190614864565b60405180910390a2505050565b60085460ff1681565b60028181548110611a6757634e487b7160e01b600052603260045260246000fd5b600091825260209091206007909102015460ff16611a975760405162461bcd60e51b81526004016105099061501d565b42611aa061250d565b6001600160a01b03166334733cc96040518163ffffffff1660e01b815260040160206040518083038186803b158015611ad857600080fd5b505afa158015611aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b10919061469e565b60028381548110611b3157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600702016005015460028481548110611b6457634e487b7160e01b600052603260045260246000fd5b906000526020600020906007020160020154611b809190615155565b611b8a9190615155565b1115611ba85760405162461bcd60e51b815260040161050990614abb565b60028181548110611bc957634e487b7160e01b600052603260045260246000fd5b90600052602060002090600702016004015460028281548110611bfc57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600702016003015410611c2b5760405162461bcd60e51b815260040161050990614ca9565b600060028281548110611c4e57634e487b7160e01b600052603260045260246000fd5b60009182526020822060079190910201805460ff191692151592909217909155604051339160008051602061526283398151915291611c929160019186919061484c565b60405180910390a250565b611ca561250d565b6001600160a01b0316632a5626f26040518163ffffffff1660e01b815260040160206040518083038186803b158015611cdd57600080fd5b505afa158015611cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d15919061466a565b611d315760405162461bcd60e51b815260040161050990614cd3565b600160095481548110611d5457634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160060154600a54611d739190615155565b431015611d925760405162461bcd60e51b81526004016105099061490e565b6000611d9c6139ba565b9050611da661250d565b6001600160a01b031663e0a8ed52826040518263ffffffff1660e01b8152600401611dd19190614843565b600060405180830381600087803b158015611deb57600080fd5b505af1158015611dff573d6000803e3d6000fd5b50505050611e0b61250d565b6001600160a01b031663f0929fc860006040518263ffffffff1660e01b8152600401611e3791906147ce565b600060405180830381600087803b158015611e5157600080fd5b505af1158015611e65573d6000803e3d6000fd5b5050600c54604051630852cd8d60e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693506342966c689250611eb79190600401614843565b600060405180830381600087803b158015611ed157600080fd5b505af1158015611ee5573d6000803e3d6000fd5b50505050611ef161250d565b6001600160a01b031663d287086460006040518263ffffffff1660e01b8152600401611f1d9190614843565b600060405180830381600087803b158015611f3757600080fd5b505af1158015611f4b573d6000803e3d6000fd5b505060085460ff16159150508015611f655750600b5460ff165b15611fc557611f7261250d565b6001600160a01b0316637668702a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611fac57600080fd5b505af1158015611fc0573d6000803e3d6000fd5b505050505b336001600160a01b03167f3bd63a865b36cad2ce00b7429a3f3179bd757296fcd45c75d57e432ffe039eb0600954604051611c929190614843565b61200861250d565b6001600160a01b031663129ebc4b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561204257600080fd5b505af1158015612056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207a919061466a565b156120975760405162461bcd60e51b8152600401610509906148de565b600554610100900460ff1680156120b15750600b5460ff16155b80156120c0575060085460ff16155b6120c957600080fd5b60006120d36141a8565b600654909150620f42407f00000000000000000000000000000000000000000000000000000000000000006121088185615181565b6121129190615181565b61211c919061516d565b101561213a5760405162461bcd60e51b81526004016105099061496e565b600e5460045461214a90426151a0565b116121675760405162461bcd60e51b815260040161050990614abb565b6010610e1061217962015180426151fe565b612183919061516d565b10156121a15760405162461bcd60e51b815260040161050990615046565b6000620f42406121af61250d565b6001600160a01b0316638a22abb16040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156121e957600080fd5b505af11580156121fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612221919061469e565b600d5461222e9190615181565b612238919061516d565b8260065461224691906151a0565b612250919061516d565b9050808260065461226191906151a0565b61226b919061516d565b60075561227661250d565b6001600160a01b031663e0a8ed52826040518263ffffffff1660e01b81526004016122a19190614843565b600060405180830381600087803b1580156122bb57600080fd5b505af11580156122cf573d6000803e3d6000fd5b505060088054600160ff199182168117909255600b8054909116909117905550505050565b6122fc61440c565b6001600160a01b031661230d61250d565b6001600160a01b0316146123335760405162461bcd60e51b815260040161050990614dac565b600e55565b7f000000000000000000000000000000000000000000000000000000000000000081565b61236461440c565b6001600160a01b031661237561250d565b6001600160a01b03161461239b5760405162461bcd60e51b815260040161050990614dac565b6116c06000614410565b600282815481106123c657634e487b7160e01b600052603260045260246000fd5b600091825260209091206007909102015460ff166123f65760405162461bcd60e51b81526004016105099061510c565b4262093a806002848154811061241c57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600702016001015461243891906151a0565b116124555760405162461bcd60e51b815260040161050990614c2c565b6124933361246161250d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190846143ae565b80600283815481106124b557634e487b7160e01b600052603260045260246000fd5b906000526020600020906007020160030160008282546124d59190615155565b909155505060405133906000805160206152828339815191529061250190600190869086908390614864565b60405180910390a25050565b6000546001600160a01b03165b90565b6001818154811061253e57634e487b7160e01b600052603260045260246000fd5b600091825260209091206008909102015460ff1615156001146125735760405162461bcd60e51b815260040161050990615074565b426001828154811061259557634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160040154600183815481106125c857634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600101546125e49190615155565b11156126025760405162461bcd60e51b815260040161050990614abb565b6001818154811061262357634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600301546001828154811061265657634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160020154106126855760405162461bcd60e51b815260040161050990614ca9565b6000600182815481106126a857634e487b7160e01b600052603260045260246000fd5b60009182526020822060089190910201805460ff191692151592909217909155604051339160008051602061526283398151915291611c9291908590829061484c565b6126f361440c565b6001600160a01b031661270461250d565b6001600160a01b03161461272a5760405162461bcd60e51b815260040161050990614dac565b600d55565b6002818154811061273f57600080fd5b6000918252602090912060079091020180546001820154600283015460038401546004850154600586015460069096015460ff9095169650929491939092919087565b600d5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600554610100900460ff1681565b600b5460ff1681565b60095481565b60045481565b60006127d961250d565b6001600160a01b03166376b4c85c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561281357600080fd5b505af1158015612827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284b919061469e565b116128685760405162461bcd60e51b815260040161050990614a2d565b61287061250d565b6001600160a01b0316632a5626f26040518163ffffffff1660e01b815260040160206040518083038186803b1580156128a857600080fd5b505afa1580156128bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e0919061466a565b156128fd5760405162461bcd60e51b8152600401610509906148b4565b600061290761250d565b6001600160a01b0316635a4972e66040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561294157600080fd5b505af1158015612955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612979919061466a565b905060006129856141a8565b90507f000000000000000000000000000000000000000000000000000000000000000082612a625760005b6129b861250d565b6001600160a01b03166376b4c85c6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156129f257600080fd5b505af1158015612a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2a919061469e565b811015612a6057620186a0612a42836201804e615181565b612a4c919061516d565b915080612a58816151e3565b9150506129b0565b505b6000620186a0612a728385615181565b612a7c919061516d565b90506000612710612a8b61250d565b6001600160a01b0316638a22abb16040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ac557600080fd5b505af1158015612ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afd919061469e565b612b0a906204cfe0615181565b612b14919061516d565b612b1e908361516d565b9050612b2861250d565b6001600160a01b031663e0a8ed52826040518263ffffffff1660e01b8152600401612b539190614843565b600060405180830381600087803b158015612b6d57600080fd5b505af1158015612b81573d6000803e3d6000fd5b505050507fd927275268e83b732873280470e2c79afd41f907a7e82978db0beff7a3429d7081604051612bb49190614843565b60405180910390a15050505050565b60028381548110612be457634e487b7160e01b600052603260045260246000fd5b600091825260209091206007909102015460ff16612c145760405162461bcd60e51b81526004016105099061510c565b4262093a8060028581548110612c3a57634e487b7160e01b600052603260045260246000fd5b906000526020600020906007020160010154612c5691906151a0565b11612c735760405162461bcd60e51b815260040161050990614c2c565b612c7f3361197961250d565b8160028481548110612ca157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600702016004016000828254612cc19190615155565b90915550508015612cd557612cd583611a46565b336001600160a01b0316600080516020615282833981519152600185856000604051611a309493929190614864565b612d0c61250d565b6001600160a01b0316632a5626f26040518163ffffffff1660e01b815260040160206040518083038186803b158015612d4457600080fd5b505afa158015612d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7c919061466a565b612d985760405162461bcd60e51b815260040161050990614d75565b60018181548110612db957634e487b7160e01b600052603260045260246000fd5b600091825260209091206008909102015460ff16612de95760405162461bcd60e51b815260040161050990614e54565b600060018281548110612e0c57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600890910201805460ff191691151591909117905560405133907fec1c9db186b03baa8575effc414c6bf7dca35ed89266613154e1f95843ef731990611c92908490614843565b60055460ff168015612e775750600554610100900460ff16155b612e8057600080fd5b612e8861250d565b6001600160a01b03166334733cc96040518163ffffffff1660e01b815260040160206040518083038186803b158015612ec057600080fd5b505afa158015612ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef8919061469e565b811115612f175760405162461bcd60e51b815260040161050990614de1565b612f1f61250d565b6001600160a01b03166351a41dec6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f5757600080fd5b505afa158015612f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8f919061469e565b841015612fae5760405162461bcd60e51b815260040161050990614ee2565b6000612fb86141a8565b90506103e8612fc982610652615181565b612fd3919061516d565b8310158015612fee5750612fea81620f4240615181565b8311155b612ff757600080fd5b612fff61250d565b6001600160a01b03166334733cc96040518163ffffffff1660e01b815260040160206040518083038186803b15801561303757600080fd5b505afa15801561304b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306f919061469e565b6130798342615155565b6130869062093a80615155565b6130909190615155565b841161309b57600080fd5b6130d9336130a761250d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190886143ae565b6040805160e081018252600180825260208201878152429383019384526060830189815260006080850181815260a0860189815260c087018b81526002805480890182559481905297517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace6007909502948501805460ff191691151591909117905594517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf84015596517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad083015591517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad182015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad282015593517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad3850155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad490930192909255543391600080516020615262833981519152916132609082906151a0565b600160405161099e9392919061484c565b6001818154811061328157600080fd5b60009182526020909120600890910201805460018201546002830154600384015460048501546005860154600687015460079097015460ff90961697509395929491939092909188565b600182815481106132ec57634e487b7160e01b600052603260045260246000fd5b600091825260209091206008909102015460ff1661331c5760405162461bcd60e51b81526004016105099061510c565b4261332561250d565b6001600160a01b03166334733cc96040518163ffffffff1660e01b815260040160206040518083038186803b15801561335d57600080fd5b505afa158015613371573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613395919061469e565b600184815481106133b657634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160040154600185815481106133e957634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600101546134059190615155565b61340f9190615155565b1161342c5760405162461bcd60e51b815260040161050990614c2c565b6134383361246161250d565b806001838154811061345a57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600201600082825461347a9190615155565b90915550506040513390600080516020615282833981519152906125019060009086908690600190614864565b600e5481565b60085460ff1680156134c15750600b5460ff165b6134ca57600080fd5b600780546134d891906151a0565b4310156134e457600080fd5b60006134ee6141a8565b90506000620186a06135207f000000000000000000000000000000000000000000000000000000000000000084615181565b61352a919061516d565b9050600061271061353961250d565b6001600160a01b0316638a22abb16040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561357357600080fd5b505af1158015613587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ab919061469e565b6135b8906204cfe0615181565b6135c2919061516d565b6135cc908361516d565b90506135d661250d565b6001600160a01b031663e0a8ed52826040518263ffffffff1660e01b81526004016136019190614843565b600060405180830381600087803b15801561361b57600080fd5b505af115801561362f573d6000803e3d6000fd5b50506008805460ff1916905550613646905061250d565b6001600160a01b03166351a41dec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561367e57600080fd5b505afa158015613692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b6919061469e565b6136c1906032615181565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082316136f861250d565b6040518263ffffffff1660e01b81526004016137149190614796565b60206040518083038186803b15801561372c57600080fd5b505afa158015613740573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613764919061469e565b106137f8576137f861377461250d565b3361377d61250d565b6001600160a01b03166351a41dec6040518163ffffffff1660e01b815260040160206040518083038186803b1580156137b557600080fd5b505afa1580156137c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ed919061469e565b61138a906032615181565b505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561385657600080fd5b505afa15801561386a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388e919061464e565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6116c07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561390c57600080fd5b505afa158015613920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613944919061464e565b614410565b61395161440c565b6001600160a01b031661396261250d565b6001600160a01b0316146139885760405162461bcd60e51b815260040161050990614dac565b6001600160a01b0381166139ae5760405162461bcd60e51b815260040161050990614a75565b6139b781614410565b50565b600b5460009060ff16613a84576139f97f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000615181565b613a0161250d565b6001600160a01b031663a569e8966040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613a3b57600080fd5b505af1158015613a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a73919061469e565b613a7d91906151a0565b905061251a565b620186a0613a9061250d565b6001600160a01b031663a569e8966040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613aca57600080fd5b505af1158015613ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b02919061469e565b613b0f906201804e615181565b613a7d919061516d565b613b2161250d565b6001600160a01b031663129ebc4b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613b5b57600080fd5b505af1158015613b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b93919061466a565b15613bb05760405162461bcd60e51b8152600401610509906148de565b613bb861250d565b6001600160a01b031663ae8853526040518163ffffffff1660e01b815260040160206040518083038186803b158015613bf057600080fd5b505afa158015613c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c28919061469e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231613c5f61250d565b6040518263ffffffff1660e01b8152600401613c7b9190614796565b60206040518083038186803b158015613c9357600080fd5b505afa158015613ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccb919061469e565b1015613ce95760405162461bcd60e51b815260040161050990614ae2565b60018181548110613d0a57634e487b7160e01b600052603260045260246000fd5b600091825260209091206008909102015460ff161515600114613d3f5760405162461bcd60e51b815260040161050990614e2a565b60018181548110613d6057634e487b7160e01b600052603260045260246000fd5b906000526020600020906008020160070154421015613d915760405162461bcd60e51b815260040161050990614cfc565b613d9961250d565b6001600160a01b0316632a5626f26040518163ffffffff1660e01b815260040160206040518083038186803b158015613dd157600080fd5b505afa158015613de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e09919061466a565b15613e265760405162461bcd60e51b815260040161050990614a05565b600554610100900460ff161580613e4d5750600b5460ff168015613e4d575060085460ff16155b613e695760405162461bcd60e51b8152600401610509906149bb565b60018181548110613e8a57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600802016003015460018281548110613ebd57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600201541061416c57613edc61250d565b6001600160a01b031663ae8853526040518163ffffffff1660e01b815260040160206040518083038186803b158015613f1457600080fd5b505afa158015613f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4c919061469e565b600c55613f90613f5a61250d565b600c546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016919030906143ae565b613f9861250d565b6001600160a01b031663655ea8eb6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613fd257600080fd5b505af1158015613fe6573d6000803e3d6000fd5b50505050613ff261250d565b6001600160a01b031663e0a8ed526001838154811061402157634e487b7160e01b600052603260045260246000fd5b9060005260206000209060080201600501546040518263ffffffff1660e01b815260040161404f9190614843565b600060405180830381600087803b15801561406957600080fd5b505af115801561407d573d6000803e3d6000fd5b505050506000600182815481106140a457634e487b7160e01b600052603260045260246000fd5b60009182526020909120600890910201805460ff1916911515919091179055600981905543600a556140d461250d565b6001600160a01b031663f0929fc860016040518263ffffffff1660e01b815260040161410091906147ce565b600060405180830381600087803b15801561411a57600080fd5b505af115801561412e573d6000803e3d6000fd5b50505050336001600160a01b0316600080516020615262833981519152600083600160405161415f9392919061484c565b60405180910390a26139b7565b6139b78161251d565b6003546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190614217907f000000000000000000000000000000000000000000000000000000000000000090600401614796565b60206040518083038186803b15801561422f57600080fd5b505afa158015614243573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614267919061469e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156142c057600080fd5b505afa1580156142d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142f8919061469e565b61430291906151a0565b61430e906103e8615181565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561436757600080fd5b505afa15801561437b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061439f919061469e565b6143a99190615155565b905090565b61440684630c3023b960e01b8585856040516024016143cf939291906147aa565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614460565b50505050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006144b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166144ef9092919063ffffffff16565b8051909150156137f857808060200190518101906144d3919061466a565b6137f85760405162461bcd60e51b815260040161050990614fae565b60606144fe8484600085614508565b90505b9392505050565b60608247101561452a5760405162461bcd60e51b815260040161050990614c63565b614533856145c8565b61454f5760405162461bcd60e51b815260040161050990614f50565b600080866001600160a01b0316858760405161456b919061477a565b60006040518083038185875af1925050503d80600081146145a8576040519150601f19603f3d011682016040523d82523d6000602084013e6145ad565b606091505b50915091506145bd8282866145f9565b979650505050505050565b600080826001600160a01b0316803b806020016040519081016040528181526000908060200190933c511192915050565b60608315614608575081614501565b8251156146185782518084602001fd5b8160405162461bcd60e51b81526004016105099190614881565b600060208284031215614643578081fd5b81356145018161523e565b60006020828403121561465f578081fd5b81516145018161523e565b60006020828403121561467b578081fd5b815161450181615253565b600060208284031215614697578081fd5b5035919050565b6000602082840312156146af578081fd5b5051919050565b600080604083850312156146c8578081fd5b50508035926020909101359150565b6000806000606084860312156146eb578081fd5b8335925060208401359150604084013561470481615253565b809150509250925092565b60008060008060808587031215614724578081fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a08688031215614757578081fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000825161478c8184602087016151b7565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b901515815260200190565b9615158752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b9715158852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000190565b90815260200190565b92835260208301919091521515604082015260600190565b938452602084019290925260408301521515606082015260800190565b60006020825282518060208401526148a08160408501602087016151b7565b601f01601f19169190910160400192915050565b60208082526010908201526f4576656e742069732072756e6e696e6760801b604082015260600190565b602080825260169082015275195d995b9d081a185cc81899595b8819195b185e595960521b604082015260600190565b6020808252600f908201526e1b9bdd081e595d08195e1c1a5c9959608a1b604082015260600190565b60208082526019908201527f636f73747320746f207375626d6974206465636973696f6e7300000000000000604082015260600190565b6020808252602d908201527f6f6e20746865206c617374203220776520646f20697420696e206f6e652c206360408201526c185b1b081b185cdd1c1c9a5b9d609a1b606082015260800190565b6020808252602a908201527f6e6f7420617661696c61626c6520647572696e6720746865206772616e6420626040820152691bdbdcdd08195d995b9d60b21b606082015260800190565b6020808252600e908201526d616c72656164792061637469766560901b604082015260600190565b60208082526028908201527f4f6e6c7920616674657220746865204772616e64204669626f6e616363656e696040820152671b99c8195d995b9d60c21b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600d908201526c70656e64696e672064656c617960981b604082015260600190565b60208082526017908201527f6e6565646120636f6c6c6563742070656e616c74696573000000000000000000604082015260600190565b6020808252601a908201527f63616e277420676f2062656c6f7720676f6c64656e726174696f000000000000604082015260600190565b60208082526017908201527f6d6178696d756d20333064617973206475726174696f6e000000000000000000604082015260600190565b60208082526028908201527f6e65656420746f20636f6c6c6563742070656e616c74696573206265666f72656040820152672063616c6c696e6760c01b606082015260800190565b6020808252603e908201527f5361666567756172643a2043616e2774207072696e74206d6f7265207468616e60408201527f20323325206f6620746f6b656e7320696e2073696e676c65206576656e740000606082015260800190565b6020808252601b908201527f706173742074686520706f696e74206f66206e6f2072657475726e0000000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b60208082526010908201526f6e65656473206d6f726520766f74657360801b604082015260600190565b6020808252600f908201526e1b9bc81858dd1a5d9948195d995b9d608a1b604082015260600190565b60208082526017908201527f63616e206f6e6c79207374617274207768656e20736574000000000000000000604082015260600190565b60208082526022908201527f6d696e696d756d2032352520776569676874656420766f746520726571756972604082015261195960f21b606082015260800190565b6020808252601d908201527f6669626f6e616363656e696e6720616374697665207265717569726564000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f6d7573742062652073686f72746572207468616e2044656c6179206265666f726040820152686520656e666f72636560b81b606082015260800190565b60208082526010908201526f1a5b9d985b1a59081c1c9bdc1bdcd85b60821b604082015260600190565b6020808252601b908201527f6d7573742062652076616c696420746f206e6567617465206f66630000000000604082015260600190565b6020808252601590820152744576656e7420616c72656164792072756e6e696e6760581b604082015260600190565b6020808252600e908201526d185b1c9958591e4818d85b1b195960921b604082015260600190565b6020808252601f908201527f74686572652069732061206d696e696d756d20636f737420746f20766f746500604082015260600190565b6020808252601c908201527f4c6173742032206576656e74732068617070656e206174206f6e636500000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600d908201526c1b9bdd081e595d081d985b1a59609a1b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252600b908201526a6d6178203231206461797360a81b604082015260600190565b6020808252600f908201526e185b1c9958591e481a5b9d985b1a59608a1b604082015260600190565b6020808252601490820152736f6e6c792061667465722031363a30302055544360601b604082015260600190565b60208082526010908201526f125b9d985b1a59081c1c9bdc1bdcd85b60821b604082015260600190565b6020808252601f908201527f63616e206f6e6c792063616c6c206265747765656e2031362d31382055544300604082015260600190565b6020808252601c908201527f74617267657420626c6f636b206e6f7420796574207265616368656400000000604082015260600190565b6020808252600790820152661a5b9d985b1a5960ca1b604082015260600190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b6000821982111561516857615168615212565b500190565b60008261517c5761517c615228565b500490565b600081600019048311821515161561519b5761519b615212565b500290565b6000828210156151b2576151b2615212565b500390565b60005b838110156151d25781810151838201526020016151ba565b838111156144065750506000910152565b60006000198214156151f7576151f7615212565b5060010190565b60008261520d5761520d615228565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b03811681146139b757600080fd5b80151581146139b757600080fdfef2bb4a4a13cf6aeac92de647c51be644b020e0438e1f43d39af5cd361525b05f417668270754634975f63e2a103ec6546e665d5068d4f888385de42fcc113a12a26469706673582212201c3210d7ae808143c50704d91913582283390ec3829128fe742d81784d24fa4964736f6c63430008000033000000000000000000000000970ccee657dd831e9c37511aa3eb5302c1eb5eee0000000000000000000000006ff40a8a1fe16075bd6008a48befb768be08b4b0
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000970ccee657dd831e9c37511aa3eb5302c1eb5eee0000000000000000000000006ff40a8a1fe16075bd6008a48befb768be08b4b0
-----Decoded View---------------
Arg [0] : _XVMC (address): 0x970ccee657dd831e9c37511aa3eb5302c1eb5eee
Arg [1] : _masterchef (address): 0x6ff40a8a1fe16075bd6008a48befb768be08b4b0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000970ccee657dd831e9c37511aa3eb5302c1eb5eee
Arg [1] : 0000000000000000000000006ff40a8a1fe16075bd6008a48befb768be08b4b0
Deployed ByteCode Sourcemap
21412:23744:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37609:1697;;;;;;:::i;:::-;;:::i;:::-;;23011:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24859:1975;;;;;;:::i;:::-;;:::i;23301:28::-;;;:::i;22712:38::-;;;:::i;:::-;;;;;;;:::i;39391:1926::-;;;:::i;22900:51::-;;;:::i;23196:42::-;;;:::i;33841:285::-;;;:::i;22447:83::-;;;:::i;:::-;;;;;;;:::i;27407:640::-;;;;;;:::i;:::-;;:::i;23081:26::-;;;:::i;36942:652::-;;;;;;:::i;:::-;;:::i;30440:943::-;;;:::i;41707:1121::-;;;:::i;44154:109::-;;;;;;:::i;:::-;;:::i;22235:43::-;;;:::i;18523:103::-;;;:::i;35587:552::-;;;;;;:::i;:::-;;:::i;17872:87::-;;;:::i;28053:574::-;;;;;;:::i;:::-;;:::i;44269:110::-;;;;;;:::i;:::-;;:::i;22102:62::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;23388:48::-;;;:::i;22362:78::-;;;:::i;22784:39::-;;;:::i;23251:37::-;;;:::i;23153:36::-;;;:::i;22610:::-;;;:::i;32268:1190::-;;;:::i;36142:635::-;;;;;;:::i;:::-;;:::i;31593:389::-;;;;;;:::i;:::-;;:::i;34538:1046::-;;;;;;:::i;:::-;;:::i;22042:53::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;26837:567::-;;;;;;:::i;:::-;;:::i;23538:45::-;;;:::i;42834:808::-;;;:::i;43649:95::-;;;:::i;43890:101::-;;;:::i;18781:201::-;;;;;;:::i;:::-;;:::i;44840:313::-;;;:::i;28707:1615::-;;;;;;:::i;:::-;;:::i;22572:25::-;;;:::i;22313:29::-;;;:::i;37609:1697::-;37691:27;;;;;;;37690:28;37682:55;;;;-1:-1:-1;;;37682:55:0;;;;;;;:::i;:::-;;;;;;;;;37756:27;37784:10;37756:39;;;;;;-1:-1:-1;;;37756:39:0;;;;;;;;;;;;;;;;;;;;;;:45;;;:117;;;;;37858:15;37805:27;37833:10;37805:39;;;;;;-1:-1:-1;;;37805:39:0;;;;;;;;;;;;;;;;;;;:49;;;:68;;37756:117;37748:143;;;;-1:-1:-1;;;37748:143:0;;;;;;;:::i;:::-;37900:26;37943:7;:5;:7::i;:::-;-1:-1:-1;;;;;37929:40:0;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37900:71;;37980:20;38014:18;-1:-1:-1;;;;;38003:46:0;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37980:71;-1:-1:-1;38295:26:0;-1:-1:-1;;;;;38324:50:0;;;38375:21;38395:1;-1:-1:-1;;38375:21:0;:::i;:::-;38324:73;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38295:102;;38402:26;38441:18;-1:-1:-1;;;;;38430:50:0;;-1:-1:-1;;38430:69:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38402:97;-1:-1:-1;38564:3:0;38544:17;:12;38559:2;38544:17;:::i;:::-;:23;;;;:::i;:::-;38522:18;:45;;:115;;;-1:-1:-1;38634:3:0;38614:17;:12;38629:2;38614:17;:::i;:::-;:23;;;;:::i;:::-;38592:18;:45;;38522:115;38514:192;;;;-1:-1:-1;;;38514:192:0;;;;;;;:::i;:::-;38782:27;38810:10;38782:39;;;;;;-1:-1:-1;;;38782:39:0;;;;;;;;;;;;;;;;;;;:62;;;38716:27;38744:10;38716:39;;;;;;-1:-1:-1;;;38716:39:0;;;;;;;;;;;;;;;;;;;:62;;;:128;;:176;;;;;38874:18;38853;:39;38716:176;38713:586;;;38900:27;:34;;-1:-1:-1;;38900:34:0;;;;;38940:27;:39;;38900:34;;38940:27;38968:10;;38940:39;;;;-1:-1:-1;;;38940:39:0;;;;;;;;;;;;;;;;;;;;;;:53;;-1:-1:-1;;38940:53:0;;;;;;;;;;39038:27;:39;;39066:10;;39038:39;;;;-1:-1:-1;;;39038:39:0;;;;;;;;;;;;;;;;;;;:51;;;38999:36;:90;;;;39136:10;-1:-1:-1;;;;;39105:48:0;-1:-1:-1;;;;;;;;;;;39121:1:0;39124:10;39148:4;39105:48;;;;;;;;:::i;:::-;;;;;;;;38713:586;;;39219:5;39171:27;39199:10;39171:39;;;;;;-1:-1:-1;;;39171:39:0;;;;;;;;;;;;;;;;;;;;;;:53;;-1:-1:-1;;39171:53:0;;;;;;;;;;;39244:49;;39275:10;;-1:-1:-1;;;;;;;;;;;39244:49:0;;;-1:-1:-1;;39263:10:0;;39171:39;39244:49;:::i;:::-;;;;;;;;38713:586;37609:1697;;;;;:::o;23011:26::-;;;;:::o;24859:1975::-;25069:7;:5;:7::i;:::-;-1:-1:-1;;;;;25055:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25035:16;:55;;25027:93;;;;-1:-1:-1;;;25027:93:0;;;;;;;:::i;:::-;25189:7;:5;:7::i;:::-;-1:-1:-1;;;;;25175:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25146:5;-1:-1:-1;;;;;25139:23:0;;25163:7;:5;:7::i;:::-;25139:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:83;;25131:136;;;;-1:-1:-1;;;25131:136:0;;;;;;;:::i;:::-;25302:7;:5;:7::i;:::-;-1:-1:-1;;;;;25288:47:0;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25286:52;25278:86;;;;-1:-1:-1;;;25278:86:0;;;;;;;:::i;:::-;25406:7;:5;:7::i;:::-;-1:-1:-1;;;;;25392:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25383:5;:52;;25375:106;;;;-1:-1:-1;;;25375:106:0;;;;;;;:::i;:::-;25583:7;:5;:7::i;:::-;-1:-1:-1;;;;;25569:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25531:23;25549:5;25531:15;:23;:::i;:::-;:35;;25558:7;25531:35;:::i;:::-;:81;;;;:::i;:::-;25514:14;:98;:159;;;;-1:-1:-1;25666:7:0;25630:32;25647:15;25630:14;:32;:::i;:::-;:43;;25514:159;25492:197;;;;-1:-1:-1;;;25492:197:0;;;;;;;:::i;:::-;25789:3;25765:16;:14;:16::i;:::-;:21;;25784:2;25765:21;:::i;:::-;:27;;;;:::i;:::-;25724:36;25744:16;25724:17;:36;:::i;:::-;25723:70;25701:182;;;;-1:-1:-1;;;25701:182:0;;;;;;;:::i;:::-;25916:11;25896:17;:31;:81;;;-1:-1:-1;25933:14:0;;;;25932:15;:44;;;;-1:-1:-1;25951:25:0;;;;25932:44;25888:126;;;;-1:-1:-1;;;25888:126:0;;;;;;;:::i;:::-;26217:30;26300:4;26271:7;:5;:7::i;:::-;-1:-1:-1;;;;;26257:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26250:47;;:4;:47;:::i;:::-;:54;;;;:::i;:::-;26217:87;;26337:22;26317:16;:42;;26309:78;;;;-1:-1:-1;;;26309:78:0;;;;;;;:::i;:::-;26398:69;26429:10;26441:7;:5;:7::i;:::-;-1:-1:-1;;;;;26405:5:0;26398:30;;:69;26450:16;26398:30;:69::i;:::-;26521:125;;;;;;;;26479:22;26521:125;;;26549:15;26521:125;;;;;;;;;;;;-1:-1:-1;26521:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26479:182;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26479:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26702:29;;26808:10;;26681:145;;26702:33;;26479:22;26702:33;:::i;:::-;26737:16;26755:14;26771:16;26789:17;26820:5;26681:145;;;;;;;;;;;:::i;:::-;;;;;;;;24859:1975;;;;;;:::o;23301:28::-;;;;:::o;22712:38::-;;;;;;:::o;39391:1926::-;39456:27;;;;;;;:57;;;;-1:-1:-1;39488:25:0;;;;39487:26;39456:57;39448:66;;;;;;39538:14;;;;39535:1769;;;39592:11;;39576:12;:27;;39568:68;;;;-1:-1:-1;;;39568:68:0;;;;;;;:::i;:::-;39665:7;:5;:7::i;:::-;-1:-1:-1;;;;;39651:35:0;;39687:1;39651:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;39704:14:0;:22;;-1:-1:-1;;39704:22:0;;;-1:-1:-1;39832:7:0;;-1:-1:-1;39832:5:0;:7::i;:::-;-1:-1:-1;;;;;39818:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;39856:2;39818:40;:::i;:::-;39789:5;-1:-1:-1;;;;;39782:23:0;;39806:7;:5;:7::i;:::-;39782:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:76;39779:197;;39867:102;39898:7;:5;:7::i;:::-;39915:10;39942:7;:5;:7::i;:::-;-1:-1:-1;;;;;39928:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;39966:2;39928:40;:::i;:::-;-1:-1:-1;;;;;39874:5:0;39867:30;;:102;;:30;:102::i;:::-;39535:1769;;;40023:7;:5;:7::i;:::-;-1:-1:-1;;;;;40009:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40007:44;39999:79;;;;-1:-1:-1;;;39999:79:0;;;;;;;:::i;:::-;40084:20;40107:16;:14;:16::i;:::-;40220:36;;40084:39;;-1:-1:-1;40209:7:0;40195:11;40166:26;40195:11;40084:39;40166:26;:::i;:::-;:40;;;;:::i;:::-;:50;;;;:::i;:::-;40164:92;40138:187;;;;-1:-1:-1;;;40138:187:0;;;;;;;:::i;:::-;40485:2;40477:4;40450:23;40468:5;40450:15;:23;:::i;:::-;40449:32;;;;:::i;:::-;:38;;:80;;;;-1:-1:-1;40527:2:0;40519:4;40492:23;40510:5;40492:15;:23;:::i;:::-;40491:32;;;;:::i;:::-;:38;;40449:80;40423:173;;;;-1:-1:-1;;;40423:173:0;;;;;;;:::i;:::-;40652:18;;40628:21;;40610:39;;:15;:39;:::i;:::-;:60;40602:69;;;;;;40706:15;40682:21;:39;40736:22;40791:4;40762:26;40777:11;40762:12;:26;:::i;:::-;:33;;;;:::i;:::-;40736:59;-1:-1:-1;40801:21:0;40825:29;40842:12;40736:59;40825:29;:::i;:::-;40801:53;;41005:22;41109:7;41080;:5;:7::i;:::-;-1:-1:-1;;;;;41066:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41047:16;;:59;;;;:::i;:::-;:69;;;;:::i;:::-;41030:87;;:13;:87;:::i;:::-;41005:112;-1:-1:-1;41154:30:0;41005:112;41154:13;:30;:::i;:::-;41138:47;;:12;:47;:::i;:::-;41124:11;:61;41214:7;:5;:7::i;:::-;-1:-1:-1;;;;;41200:35:0;;41236:14;41200:51;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;41271:14:0;:21;;-1:-1:-1;;41271:21:0;41288:4;41271:21;;;-1:-1:-1;;;;;;39535:1769:0;39391:1926::o;22900:51::-;;;;:::o;23196:42::-;;;;:::o;33841:285::-;33901:26;;;;33900:27;33892:36;;;;;;34007:18;:11;34021:4;34007:18;:::i;:::-;33984;:11;33998:4;33984:18;:::i;:::-;33955:10;;;;;;;;;-1:-1:-1;;;;;33955:10:0;-1:-1:-1;;;;;33943:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;;;;:::i;:::-;33942:83;33939:180;;34074:26;:33;;-1:-1:-1;;34074:33:0;34103:4;34074:33;;;33841:285::o;22447:83::-;;;:::o;27407:640::-;27514:22;27537:10;27514:34;;;;;;-1:-1:-1;;;27514:34:0;;;;;;;;;;;;;;;;;;;;;;:40;;;27506:60;;;;-1:-1:-1;;;27506:60:0;;;;;;;:::i;:::-;27724:15;27692:7;:5;:7::i;:::-;-1:-1:-1;;;;;27678:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27635:22;27658:10;27635:34;;;;;;-1:-1:-1;;;27635:34:0;;;;;;;;;;;;;;;;;;;:40;;;27579:22;27602:10;27579:34;;;;;;-1:-1:-1;;;27579:34:0;;;;;;;;;;;;;;;;;;;:53;;;:96;;;;:::i;:::-;:142;;;;:::i;:::-;:160;27571:200;;;;-1:-1:-1;;;27571:200:0;;;;;;;:::i;:::-;27781:63;27812:10;27824:7;:5;:7::i;:::-;-1:-1:-1;;;;;27788:5:0;27781:30;;:63;27833:10;27781:30;:63::i;:::-;27911:10;27851:22;27874:10;27851:34;;;;;;-1:-1:-1;;;27851:34:0;;;;;;;;;;;;;;;;;;;:57;;;:70;;;;;;;:::i;:::-;;;;-1:-1:-1;;27926:49:0;;;;27943:29;27961:10;27943:17;:29::i;:::-;28012:10;-1:-1:-1;;;;;27988:54:0;-1:-1:-1;;;;;;;;;;;27997:1:0;28000:10;28024;28036:5;27988:54;;;;;;;;;:::i;:::-;;;;;;;;27407:640;;;:::o;23081:26::-;;;;;;:::o;36942:652::-;37024:27;37052:10;37024:39;;;;;;-1:-1:-1;;;37024:39:0;;;;;;;;;;;;;;;;;;;;;;:45;;;37016:73;;;;-1:-1:-1;;;37016:73:0;;;;;;;:::i;:::-;37258:15;37225:7;:5;:7::i;:::-;-1:-1:-1;;;;;37211:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37163:27;37191:10;37163:39;;;;;;-1:-1:-1;;;37163:39:0;;;;;;;;;;;;;;;;;;;:45;;;37102:27;37130:10;37102:39;;;;;;-1:-1:-1;;;37102:39:0;;;;;;;;;;;;;;;;;;;:58;;;:106;;;;:::i;:::-;:152;;;;:::i;:::-;:171;;37094:197;;;;-1:-1:-1;;;37094:197:0;;;;;;;:::i;:::-;37369:27;37397:10;37369:39;;;;;;-1:-1:-1;;;37369:39:0;;;;;;;;;;;;;;;;;;;:62;;;37304:27;37332:10;37304:39;;;;;;-1:-1:-1;;;37304:39:0;;;;;;;;;;;;;;;;;;;:62;;;:127;37296:156;;;;-1:-1:-1;;;37296:156:0;;;;;;;:::i;:::-;37510:5;37462:27;37490:10;37462:39;;;;;;-1:-1:-1;;;37462:39:0;;;;;;;;;;;;;;;;;;;;;;:53;;-1:-1:-1;;37462:53:0;;;;;;;;;;;37537:49;;37568:10;;-1:-1:-1;;;;;;;;;;;37537:49:0;;;-1:-1:-1;;37556:10:0;;37462:39;37537:49;:::i;:::-;;;;;;;;36942:652;:::o;30440:943::-;30510:7;:5;:7::i;:::-;-1:-1:-1;;;;;30496:47:0;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30488:77;;;;-1:-1:-1;;;30488:77:0;;;;;;;:::i;:::-;30644:22;30667:21;;30644:45;;;;;;-1:-1:-1;;;30644:45:0;;;;;;;;;;;;;;;;;;;:54;;;30614:27;;:84;;;;:::i;:::-;30598:12;:100;;30576:169;;;;-1:-1:-1;;;30576:169:0;;;;;;;:::i;:::-;30767:17;30787:33;:31;:33::i;:::-;30767:53;;30855:7;:5;:7::i;:::-;-1:-1:-1;;;;;30841:35:0;;30877:9;30841:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30912:7;:5;:7::i;:::-;-1:-1:-1;;;;;30898:47:0;;30946:5;30898:54;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30989:13:0;;30970:33;;-1:-1:-1;;;30970:33:0;;-1:-1:-1;;;;;30977:5:0;30970:18;;-1:-1:-1;30970:18:0;;-1:-1:-1;30970:33:0;;30989:13;30970:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31070:7;:5;:7::i;:::-;-1:-1:-1;;;;;31056:38:0;;31095:1;31056:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31201:14:0;;;;31200:15;;-1:-1:-1;;31200:44:0;;;;-1:-1:-1;31219:25:0;;;;31200:44;31197:111;;;31266:7;:5;:7::i;:::-;-1:-1:-1;;;;;31252:48:0;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31197:111;31364:10;-1:-1:-1;;;;;31324:51:0;;31341:21;;31324:51;;;;;;:::i;41707:1121::-;41795:7;:5;:7::i;:::-;-1:-1:-1;;;;;41781:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41779:44;41771:79;;;;-1:-1:-1;;;41771:79:0;;;;;;;:::i;:::-;41869:27;;;;;;;:57;;;;-1:-1:-1;41901:25:0;;;;41900:26;41869:57;:76;;;;-1:-1:-1;41931:14:0;;;;41930:15;41869:76;41861:85;;;;;;41951:20;41974:16;:14;:16::i;:::-;42078:36;;41951:39;;-1:-1:-1;42067:7:0;42053:11;42024:26;42053:11;41951:39;42024:26;:::i;:::-;:40;;;;:::i;:::-;:50;;;;:::i;:::-;:90;;42001:190;;;;-1:-1:-1;;;42001:190:0;;;;;;;:::i;:::-;42256:18;;42232:21;;42214:39;;:15;:39;:::i;:::-;:60;42206:86;;;;-1:-1:-1;;;42206:86:0;;;;;;;:::i;:::-;42347:2;42339:4;42312:23;42330:5;42312:15;:23;:::i;:::-;42311:32;;;;:::i;:::-;:38;;42303:71;;;;-1:-1:-1;;;42303:71:0;;;;;;;:::i;:::-;42395:22;42542:7;42513;:5;:7::i;:::-;-1:-1:-1;;;;;42499:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42480:16;;:59;;;;:::i;:::-;:69;;;;:::i;:::-;42462:12;42422:36;;:52;;;;:::i;:::-;42420:130;;;;:::i;:::-;42395:155;;42651:14;42635:12;42595:36;;:52;;;;:::i;:::-;42594:71;;;;:::i;:::-;42580:11;:85;42690:7;:5;:7::i;:::-;-1:-1:-1;;;;;42676:35:0;;42712:14;42676:51;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;42756:14:0;:21;;42773:4;-1:-1:-1;;42756:21:0;;;;;;;;42788:25;:32;;;;;;;;;;-1:-1:-1;;;;41707:1121:0:o;44154:109::-;18103:12;:10;:12::i;:::-;-1:-1:-1;;;;;18092:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;18092:23:0;;18084:68;;;;-1:-1:-1;;;18084:68:0;;;;;;;:::i;:::-;44228:18:::1;:27:::0;44154:109::o;22235:43::-;;;:::o;18523:103::-;18103:12;:10;:12::i;:::-;-1:-1:-1;;;;;18092:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;18092:23:0;;18084:68;;;;-1:-1:-1;;;18084:68:0;;;;;;;:::i;:::-;18588:30:::1;18615:1;18588:18;:30::i;35587:552::-:0;35682:27;35710:10;35682:39;;;;;;-1:-1:-1;;;35682:39:0;;;;;;;;;;;;;;;;;;;;;;:45;;;35674:65;;;;-1:-1:-1;;;35674:65:0;;;;;;;:::i;:::-;35818:15;35805:9;35752:27;35780:10;35752:39;;;;;;-1:-1:-1;;;35752:39:0;;;;;;;;;;;;;;;;;;;:49;;;:63;;;;:::i;:::-;:81;35744:121;;;;-1:-1:-1;;;35744:121:0;;;;;;;:::i;:::-;35924:63;35955:10;35967:7;:5;:7::i;:::-;-1:-1:-1;;;;;35931:5:0;35924:30;;:63;35976:10;35924:30;:63::i;:::-;36059:10;35994:27;36022:10;35994:39;;;;;;-1:-1:-1;;;35994:39:0;;;;;;;;;;;;;;;;;;;:62;;;:75;;;;;;;:::i;:::-;;;;-1:-1:-1;;36081:53:0;;36105:10;;-1:-1:-1;;;;;;;;;;;36081:53:0;;;36090:1;;36093:10;;36117;;36090:1;;36081:53;:::i;:::-;;;;;;;;35587:552;;:::o;17872:87::-;17918:7;17945:6;-1:-1:-1;;;;;17945:6:0;17872:87;;:::o;28053:574::-;28123:22;28146:10;28123:34;;;;;;-1:-1:-1;;;28123:34:0;;;;;;;;;;;;;;;;;;;;;;:40;;;:48;;:40;:48;28115:77;;;;-1:-1:-1;;;28115:77:0;;;;;;;:::i;:::-;28306:15;28262:22;28285:10;28262:34;;;;;;-1:-1:-1;;;28262:34:0;;;;;;;;;;;;;;;;;;;:40;;;28206:22;28229:10;28206:34;;;;;;-1:-1:-1;;;28206:34:0;;;;;;;;;;;;;;;;;;;:53;;;:96;;;;:::i;:::-;:115;;28198:141;;;;-1:-1:-1;;;28198:141:0;;;;;;;:::i;:::-;28412:22;28435:10;28412:34;;;;;;-1:-1:-1;;;28412:34:0;;;;;;;;;;;;;;;;;;;:57;;;28352:22;28375:10;28352:34;;;;;;-1:-1:-1;;;28352:34:0;;;;;;;;;;;;;;;;;;;:57;;;:117;28344:146;;;;-1:-1:-1;;;28344:146:0;;;;;;;:::i;:::-;28544:5;28501:22;28524:10;28501:34;;;;;;-1:-1:-1;;;28501:34:0;;;;;;;;;;;;;;;;;;;;;;:48;;-1:-1:-1;;28501:48:0;;;;;;;;;;;28570:49;;28601:10;;-1:-1:-1;;;;;;;;;;;28570:49:0;;;28501:34;28589:10;;28501:34;;28570:49;:::i;44269:110::-;18103:12;:10;:12::i;:::-;-1:-1:-1;;;;;18092:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;18092:23:0;;18084:68;;;;-1:-1:-1;;;18084:68:0;;;;;;;:::i;:::-;44345:16:::1;:26:::0;44269:110::o;22102:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22102:62:0;;;;;;;;;:::o;23388:48::-;;;;:::o;22362:78::-;;;:::o;22784:39::-;;;;;;;;;:::o;23251:37::-;;;;;;:::o;23153:36::-;;;;:::o;22610:::-;;;;:::o;32268:1190::-;32384:1;32340:7;:5;:7::i;:::-;-1:-1:-1;;;;;32326:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;32318:112;;;;-1:-1:-1;;;32318:112:0;;;;;;;:::i;:::-;32465:7;:5;:7::i;:::-;-1:-1:-1;;;;;32451:47:0;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32449:52;32441:81;;;;-1:-1:-1;;;32441:81:0;;;;;;;:::i;:::-;32527:13;32557:7;:5;:7::i;:::-;-1:-1:-1;;;;;32543:40:0;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32527:58;;32600:21;32624:16;:14;:16::i;:::-;32600:40;-1:-1:-1;32663:11:0;32805:8;32801:234;;32825:9;32821:209;32858:7;:5;:7::i;:::-;-1:-1:-1;;;;;32844:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32840:1;:59;32821:209;;;32941:6;32923:15;:7;32933:5;32923:15;:::i;:::-;:24;;;;:::i;:::-;32913:34;-1:-1:-1;32901:3:0;;;;:::i;:::-;;;;32821:209;;;;32801:234;33150:21;33200:6;33174:23;33190:7;33174:13;:23;:::i;:::-;:32;;;;:::i;:::-;33150:56;;33222:22;33323:5;33294:7;:5;:7::i;:::-;-1:-1:-1;;;;;33280:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33264:56;;:13;:56;:::i;:::-;:64;;;;:::i;:::-;33247:82;;:13;:82;:::i;:::-;33222:107;;33354:7;:5;:7::i;:::-;-1:-1:-1;;;;;33340:35:0;;33376:14;33340:51;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33416:34;33435:14;33416:34;;;;;;:::i;:::-;;;;;;;;32268:1190;;;;;:::o;36142:635::-;36254:27;36282:10;36254:39;;;;;;-1:-1:-1;;;36254:39:0;;;;;;;;;;;;;;;;;;;;;;:45;;;36246:65;;;;-1:-1:-1;;;36246:65:0;;;;;;;:::i;:::-;36390:15;36377:9;36324:27;36352:10;36324:39;;;;;;-1:-1:-1;;;36324:39:0;;;;;;;;;;;;;;;;;;;:49;;;:63;;;;:::i;:::-;:81;36316:121;;;;-1:-1:-1;;;36316:121:0;;;;;;;:::i;:::-;36496:63;36527:10;36539:7;:5;:7::i;36496:63::-;36631:10;36566:27;36594:10;36566:39;;;;;;-1:-1:-1;;;36566:39:0;;;;;;;;;;;;;;;;;;;:62;;;:75;;;;;;;:::i;:::-;;;;-1:-1:-1;;36646:61:0;;;;36663:41;36693:10;36663:29;:41::i;:::-;36742:10;-1:-1:-1;;;;;36718:54:0;-1:-1:-1;;;;;;;;;;;36727:1:0;36730:10;36754;36766:5;36718:54;;;;;;;;;:::i;31593:389::-;31684:7;:5;:7::i;:::-;-1:-1:-1;;;;;31670:47:0;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31662:91;;;;-1:-1:-1;;;31662:91:0;;;;;;;:::i;:::-;31774:22;31797:10;31774:34;;;;;;-1:-1:-1;;;31774:34:0;;;;;;;;;;;;;;;;;;;;;;:40;;;31766:80;;;;-1:-1:-1;;;31766:80:0;;;;;;;:::i;:::-;31910:5;31867:22;31890:10;31867:34;;;;;;-1:-1:-1;;;31867:34:0;;;;;;;;;;;;;;;;;;;;;;:48;;-1:-1:-1;;31867:48:0;;;;;;;;;;31931:43;;31963:10;;31931:43;;;;31951:10;;31931:43;:::i;34538:1046::-;34687:26;;;;:58;;;;-1:-1:-1;34718:27:0;;;;;;;34717:28;34687:58;34679:67;;;;;;34782:7;:5;:7::i;:::-;-1:-1:-1;;;;;34768:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34759:5;:52;;34751:106;;;;-1:-1:-1;;;34751:106:0;;;;;;;:::i;:::-;34907:7;:5;:7::i;:::-;-1:-1:-1;;;;;34893:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34873:16;:55;;34865:99;;;;-1:-1:-1;;;34865:99:0;;;;;;;:::i;:::-;34969:20;34992:16;:14;:16::i;:::-;34969:39;-1:-1:-1;35062:4:0;35040:19;34969:39;35055:4;35040:19;:::i;:::-;:26;;;;:::i;:::-;35024:11;:43;;:86;;;;-1:-1:-1;35087:22:0;:12;35102:7;35087:22;:::i;:::-;35071:11;:39;;35024:86;35016:95;;;;;;35193:7;:5;:7::i;:::-;-1:-1:-1;;;;;35179:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35139:23;35157:5;35139:15;:23;:::i;:::-;:37;;35166:9;35139:37;:::i;:::-;:83;;;;:::i;:::-;35127:9;:95;35119:104;;;;;;35245:69;35276:10;35288:7;:5;:7::i;:::-;-1:-1:-1;;;;;35252:5:0;35245:30;;:69;35297:16;35245:30;:69::i;:::-;35366:100;;;;;;;;35392:4;35366:100;;;;;;;;;35409:15;35366:100;;;;;;;;;;;;-1:-1:-1;35366:100:0;;;;;;;;;;;;;;;;;;35322:27;:156;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;35322:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35519:34;35559:10;;-1:-1:-1;;;;;;;;;;;35500:76:0;35519:38;;35392:4;;35519:38;:::i;:::-;35571:4;35500:76;;;;;;;;:::i;22042:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22042:53:0;;;;;;;;;;;:::o;26837:567::-;26927:22;26950:10;26927:34;;;;;;-1:-1:-1;;;26927:34:0;;;;;;;;;;;;;;;;;;;;;;:40;;;26919:60;;;;-1:-1:-1;;;26919:60:0;;;;;;;:::i;:::-;27137:15;27105:7;:5;:7::i;:::-;-1:-1:-1;;;;;27091:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27048:22;27071:10;27048:34;;;;;;-1:-1:-1;;;27048:34:0;;;;;;;;;;;;;;;;;;;:40;;;26992:22;27015:10;26992:34;;;;;;-1:-1:-1;;;26992:34:0;;;;;;;;;;;;;;;;;;;:53;;;:96;;;;:::i;:::-;:142;;;;:::i;:::-;:160;26984:200;;;;-1:-1:-1;;;26984:200:0;;;;;;;:::i;:::-;27194:63;27225:10;27237:7;:5;:7::i;27194:63::-;27324:10;27264:22;27287:10;27264:34;;;;;;-1:-1:-1;;;27264:34:0;;;;;;;;;;;;;;;;;;;:57;;;:70;;;;;;;:::i;:::-;;;;-1:-1:-1;;27346:53:0;;27370:10;;-1:-1:-1;;;;;;;;;;;27346:53:0;;;27355:1;;27358:10;;27382;;27394:4;;27346:53;:::i;23538:45::-;;;;:::o;42834:808::-;42907:14;;;;:43;;;;-1:-1:-1;42925:25:0;;;;42907:43;42899:52;;;;;;42999:1;42987:11;;:13;;;;:::i;:::-;42970:12;:31;;42962:40;;;;;;43017:20;43040:16;:14;:16::i;:::-;43017:39;-1:-1:-1;43061:21:0;43116:6;43086:26;43101:11;43017:39;43086:26;:::i;:::-;43085:37;;;;:::i;:::-;43061:61;;43186:20;43286:5;43257:7;:5;:7::i;:::-;-1:-1:-1;;;;;43243:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43227:56;;:13;:56;:::i;:::-;:64;;;;:::i;:::-;43210:82;;:13;:82;:::i;:::-;43186:106;;43322:7;:5;:7::i;:::-;-1:-1:-1;;;;;43308:35:0;;43344:12;43308:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43368:14:0;:22;;-1:-1:-1;;43368:22:0;;;-1:-1:-1;43493:7:0;;-1:-1:-1;43493:5:0;:7::i;:::-;-1:-1:-1;;;;;43479:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;43517:2;43479:40;:::i;:::-;43450:5;-1:-1:-1;;;;;43443:23:0;;43467:7;:5;:7::i;:::-;43443:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:76;43440:195;;43527:102;43558:7;:5;:7::i;:::-;43575:10;43602:7;:5;:7::i;:::-;-1:-1:-1;;;;;43588:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;43626:2;43588:40;:::i;43527:102::-;42834:808;;;:::o;43649:95::-;43721:5;-1:-1:-1;;;;;43701:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43688:10;:48;;-1:-1:-1;;;;;;43688:48:0;-1:-1:-1;;;;;43688:48:0;;;;;;;;;;43649:95::o;43890:101::-;43930:53;43964:5;-1:-1:-1;;;;;43949:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43930:18;:53::i;18781:201::-;18103:12;:10;:12::i;:::-;-1:-1:-1;;;;;18092:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;18092:23:0;;18084:68;;;;-1:-1:-1;;;18084:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18870:22:0;::::1;18862:73;;;;-1:-1:-1::0;;;18862:73:0::1;;;;;;;:::i;:::-;18946:28;18965:8;18946:18;:28::i;:::-;18781:201:::0;:::o;44840:313::-;44922:25;;44898:7;;44922:25;;44918:228;;45016:18;:11;45030:4;45016:18;:::i;:::-;44985:7;:5;:7::i;:::-;-1:-1:-1;;;;;44971:40:0;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;;;:::i;:::-;44964:70;;;;44918:228;45127:6;45088:7;:5;:7::i;:::-;-1:-1:-1;;;;;45074:40:0;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;45119:5;45074:50;:::i;:::-;:59;;;;:::i;28707:1615::-;28795:7;:5;:7::i;:::-;-1:-1:-1;;;;;28781:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28779:44;28771:79;;;;-1:-1:-1;;;28771:79:0;;;;;;;:::i;:::-;28933:7;:5;:7::i;:::-;-1:-1:-1;;;;;28919:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28890:5;-1:-1:-1;;;;;28883:23:0;;28907:7;:5;:7::i;:::-;28883:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:83;;28861:146;;;;-1:-1:-1;;;28861:146:0;;;;;;;:::i;:::-;29023:22;29046:10;29023:34;;;;;;-1:-1:-1;;;29023:34:0;;;;;;;;;;;;;;;;;;;;;;:40;;;:48;;:40;:48;29015:77;;;;-1:-1:-1;;;29015:77:0;;;;;;;:::i;:::-;29127:22;29150:10;29127:34;;;;;;-1:-1:-1;;;29127:34:0;;;;;;;;;;;;;;;;;;;:44;;;29108:15;:63;;29100:99;;;;-1:-1:-1;;;29100:99:0;;;;;;;:::i;:::-;29231:7;:5;:7::i;:::-;-1:-1:-1;;;;;29217:47:0;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29215:52;29207:79;;;;-1:-1:-1;;;29207:79:0;;;;;;;:::i;:::-;29300:27;;;;;;;29299:28;;:78;;-1:-1:-1;29332:25:0;;;;:44;;;;-1:-1:-1;29362:14:0;;;;29361:15;29332:44;29291:133;;;;-1:-1:-1;;;29291:133:0;;;;;;;:::i;:::-;29503:22;29526:10;29503:34;;;;;;-1:-1:-1;;;29503:34:0;;;;;;;;;;;;;;;;;;;:57;;;29442:22;29465:10;29442:34;;;;;;-1:-1:-1;;;29442:34:0;;;;;;;;;;;;;;;;;;;:57;;;:118;29439:876;;29695:7;:5;:7::i;:::-;-1:-1:-1;;;;;29681:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29665:13;:63;29734:69;29765:7;:5;:7::i;:::-;29789:13;;-1:-1:-1;;;;;29741:5:0;29734:30;;:69;29782:4;;29734:30;:69::i;:::-;29829:7;:5;:7::i;:::-;-1:-1:-1;;;;;29815:37:0;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29920:7;:5;:7::i;:::-;-1:-1:-1;;;;;29906:35:0;;29942:22;29965:10;29942:34;;;;;;-1:-1:-1;;;29942:34:0;;;;;;;;;;;;;;;;;;;:49;;;29906:86;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30046:5;30003:22;30026:10;30003:34;;;;;;-1:-1:-1;;;30003:34:0;;;;;;;;;;;;;;;;;;;;;;:48;;-1:-1:-1;;30003:48:0;;;;;;;;;;30057:21;:34;;;30127:12;30097:27;:42;30159:7;:5;:7::i;:::-;-1:-1:-1;;;;;30145:47:0;;30193:4;30145:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30245:10;-1:-1:-1;;;;;30214:48:0;-1:-1:-1;;;;;;;;;;;30230:1:0;30233:10;30257:4;30214:48;;;;;;;;:::i;:::-;;;;;;;;29439:876;;;30280:29;30298:10;30280:17;:29::i;22572:25::-;;;-1:-1:-1;;;;;22572:25:0;;:::o;22313:29::-;;;:::o;44391:198::-;44537:42;;-1:-1:-1;;;44537:42:0;;44439:7;;-1:-1:-1;;;;;44544:8:0;44537:26;;;;:42;;44572:5;;44537:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44511:8;-1:-1:-1;;;;;44504:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:75;;;;:::i;:::-;44496:84;;:4;:84;:::i;:::-;44468:5;-1:-1:-1;;;;;44468:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:112;;;;:::i;:::-;44460:121;;44391:198;:::o;12840:248::-;12984:96;13004:5;13034:27;;;13063:4;13069:2;13073:5;13011:68;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;13011:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;13011:68:0;-1:-1:-1;;;;;;13011:68:0;;;;;;;;;;12984:19;:96::i;:::-;12840:248;;;;:::o;16596:98::-;16676:10;16596:98;:::o;19142:191::-;19216:16;19235:6;;-1:-1:-1;;;;;19252:17:0;;;-1:-1:-1;;;;;;19252:17:0;;;;;;19285:40;;19235:6;;;;;;;19285:40;;19216:16;19285:40;19142:191;;:::o;15194:716::-;15618:23;15644:69;15672:4;15644:69;;;;;;;;;;;;;;;;;15652:5;-1:-1:-1;;;;;15644:27:0;;;:69;;;;;:::i;:::-;15728:17;;15618:95;;-1:-1:-1;15728:21:0;15724:179;;15825:10;15814:30;;;;;;;;;;;;:::i;:::-;15806:85;;;;-1:-1:-1;;;15806:85:0;;;;;;;:::i;3916:229::-;4053:12;4085:52;4107:6;4115:4;4121:1;4124:12;4085:21;:52::i;:::-;4078:59;;3916:229;;;;;;:::o;5036:510::-;5206:12;5264:5;5239:21;:30;;5231:81;;;;-1:-1:-1;;;5231:81:0;;;;;;;:::i;:::-;5331:18;5342:6;5331:10;:18::i;:::-;5323:60;;;;-1:-1:-1;;;5323:60:0;;;;;;;:::i;:::-;5397:12;5411:23;5438:6;-1:-1:-1;;;;;5438:11:0;5457:5;5464:4;5438:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5396:73;;;;5487:51;5504:7;5513:10;5525:12;5487:16;:51::i;:::-;5480:58;5036:510;-1:-1:-1;;;;;;;5036:510:0:o;1171:326::-;1231:4;1488:1;1466:7;-1:-1:-1;;;;;1466:12:0;;;;;;;;;;;;;;;;;;;;;;;;:19;:23;;1171:326;-1:-1:-1;;1171:326:0:o;7722:712::-;7872:12;7901:7;7897:530;;;-1:-1:-1;7932:10:0;7925:17;;7897:530;8046:17;;:21;8042:374;;8244:10;8238:17;8305:15;8292:10;8288:2;8284:19;8277:44;8192:148;8387:12;8380:20;;-1:-1:-1;;;8380:20:0;;;;;;;;:::i;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:257::-;;666:2;654:9;645:7;641:23;637:32;634:2;;;687:6;679;672:22;634:2;724:9;718:16;743:30;767:5;743:30;:::i;808:190::-;;920:2;908:9;899:7;895:23;891:32;888:2;;;941:6;933;926:22;888:2;-1:-1:-1;969:23:1;;878:120;-1:-1:-1;878:120:1:o;1003:194::-;;1126:2;1114:9;1105:7;1101:23;1097:32;1094:2;;;1147:6;1139;1132:22;1094:2;-1:-1:-1;1175:16:1;;1084:113;-1:-1:-1;1084:113:1:o;1202:258::-;;;1331:2;1319:9;1310:7;1306:23;1302:32;1299:2;;;1352:6;1344;1337:22;1299:2;-1:-1:-1;;1380:23:1;;;1450:2;1435:18;;;1422:32;;-1:-1:-1;1289:171:1:o;1465:389::-;;;;1608:2;1596:9;1587:7;1583:23;1579:32;1576:2;;;1629:6;1621;1614:22;1576:2;1670:9;1657:23;1647:33;;1727:2;1716:9;1712:18;1699:32;1689:42;;1781:2;1770:9;1766:18;1753:32;1794:30;1818:5;1794:30;:::i;:::-;1843:5;1833:15;;;1566:288;;;;;:::o;1859:395::-;;;;;2022:3;2010:9;2001:7;1997:23;1993:33;1990:2;;;2044:6;2036;2029:22;1990:2;-1:-1:-1;;2072:23:1;;;2142:2;2127:18;;2114:32;;-1:-1:-1;2193:2:1;2178:18;;2165:32;;2244:2;2229:18;2216:32;;-1:-1:-1;1980:274:1;-1:-1:-1;1980:274:1:o;2259:464::-;;;;;;2439:3;2427:9;2418:7;2414:23;2410:33;2407:2;;;2461:6;2453;2446:22;2407:2;-1:-1:-1;;2489:23:1;;;2559:2;2544:18;;2531:32;;-1:-1:-1;2610:2:1;2595:18;;2582:32;;2661:2;2646:18;;2633:32;;-1:-1:-1;2712:3:1;2697:19;2684:33;;-1:-1:-1;2397:326:1;-1:-1:-1;2397:326:1:o;2728:274::-;;2895:6;2889:13;2911:53;2957:6;2952:3;2945:4;2937:6;2933:17;2911:53;:::i;:::-;2980:16;;;;;2865:137;-1:-1:-1;;2865:137:1:o;3007:203::-;-1:-1:-1;;;;;3171:32:1;;;;3153:51;;3141:2;3126:18;;3108:102::o;3215:375::-;-1:-1:-1;;;;;3473:15:1;;;3455:34;;3525:15;;;;3520:2;3505:18;;3498:43;3572:2;3557:18;;3550:34;;;;3405:2;3390:18;;3372:218::o;3595:187::-;3760:14;;3753:22;3735:41;;3723:2;3708:18;;3690:92::o;3787:617::-;4121:14;;4114:22;4096:41;;4168:2;4153:18;;4146:34;;;;4211:2;4196:18;;4189:34;;;;4254:2;4239:18;;4232:34;;;;4297:3;4282:19;;4275:35;4341:3;4326:19;;4319:35;4385:3;4370:19;;4363:35;4083:3;4068:19;;4050:354::o;4409:689::-;4771:14;;4764:22;4746:41;;4818:2;4803:18;;4796:34;;;;4861:2;4846:18;;4839:34;;;;4904:2;4889:18;;4882:34;;;;4947:3;4932:19;;4925:35;4991:3;4976:19;;4969:35;5035:3;5020:19;;5013:35;5079:3;5064:19;;5057:35;4733:3;4718:19;;4700:398::o;5325:185::-;5479:25;;;5467:2;5452:18;;5434:76::o;5515:337::-;5719:25;;;5775:2;5760:18;;5753:34;;;;5830:14;5823:22;5818:2;5803:18;;5796:50;5707:2;5692:18;;5674:178::o;5857:409::-;6090:25;;;6146:2;6131:18;;6124:34;;;;6189:2;6174:18;;6167:34;6244:14;6237:22;6232:2;6217:18;;6210:50;6077:3;6062:19;;6044:222::o;7027:383::-;;7176:2;7165:9;7158:21;7208:6;7202:13;7251:6;7246:2;7235:9;7231:18;7224:34;7267:66;7326:6;7321:2;7310:9;7306:18;7301:2;7293:6;7289:15;7267:66;:::i;:::-;7394:2;7373:15;-1:-1:-1;;7369:29:1;7354:45;;;;7401:2;7350:54;;7148:262;-1:-1:-1;;7148:262:1:o;7415:340::-;7617:2;7599:21;;;7656:2;7636:18;;;7629:30;-1:-1:-1;;;7690:2:1;7675:18;;7668:46;7746:2;7731:18;;7589:166::o;7760:346::-;7962:2;7944:21;;;8001:2;7981:18;;;7974:30;-1:-1:-1;;;8035:2:1;8020:18;;8013:52;8097:2;8082:18;;7934:172::o;8111:339::-;8313:2;8295:21;;;8352:2;8332:18;;;8325:30;-1:-1:-1;;;8386:2:1;8371:18;;8364:45;8441:2;8426:18;;8285:165::o;8455:349::-;8657:2;8639:21;;;8696:2;8676:18;;;8669:30;8735:27;8730:2;8715:18;;8708:55;8795:2;8780:18;;8629:175::o;8809:409::-;9011:2;8993:21;;;9050:2;9030:18;;;9023:30;9089:34;9084:2;9069:18;;9062:62;-1:-1:-1;;;9155:2:1;9140:18;;9133:43;9208:3;9193:19;;8983:235::o;9223:406::-;9425:2;9407:21;;;9464:2;9444:18;;;9437:30;9503:34;9498:2;9483:18;;9476:62;-1:-1:-1;;;9569:2:1;9554:18;;9547:40;9619:3;9604:19;;9397:232::o;9634:338::-;9836:2;9818:21;;;9875:2;9855:18;;;9848:30;-1:-1:-1;;;9909:2:1;9894:18;;9887:44;9963:2;9948:18;;9808:164::o;9977:404::-;10179:2;10161:21;;;10218:2;10198:18;;;10191:30;10257:34;10252:2;10237:18;;10230:62;-1:-1:-1;;;10323:2:1;10308:18;;10301:38;10371:3;10356:19;;10151:230::o;10386:402::-;10588:2;10570:21;;;10627:2;10607:18;;;10600:30;10666:34;10661:2;10646:18;;10639:62;-1:-1:-1;;;10732:2:1;10717:18;;10710:36;10778:3;10763:19;;10560:228::o;10793:337::-;10995:2;10977:21;;;11034:2;11014:18;;;11007:30;-1:-1:-1;;;11068:2:1;11053:18;;11046:43;11121:2;11106:18;;10967:163::o;11135:347::-;11337:2;11319:21;;;11376:2;11356:18;;;11349:30;11415:25;11410:2;11395:18;;11388:53;11473:2;11458:18;;11309:173::o;11487:350::-;11689:2;11671:21;;;11728:2;11708:18;;;11701:30;11767:28;11762:2;11747:18;;11740:56;11828:2;11813:18;;11661:176::o;11842:347::-;12044:2;12026:21;;;12083:2;12063:18;;;12056:30;12122:25;12117:2;12102:18;;12095:53;12180:2;12165:18;;12016:173::o;12194:404::-;12396:2;12378:21;;;12435:2;12415:18;;;12408:30;12474:34;12469:2;12454:18;;12447:62;-1:-1:-1;;;12540:2:1;12525:18;;12518:38;12588:3;12573:19;;12368:230::o;12603:426::-;12805:2;12787:21;;;12844:2;12824:18;;;12817:30;12883:34;12878:2;12863:18;;12856:62;12954:32;12949:2;12934:18;;12927:60;13019:3;13004:19;;12777:252::o;13034:351::-;13236:2;13218:21;;;13275:2;13255:18;;;13248:30;13314:29;13309:2;13294:18;;13287:57;13376:2;13361:18;;13208:177::o;13390:402::-;13592:2;13574:21;;;13631:2;13611:18;;;13604:30;13670:34;13665:2;13650:18;;13643:62;-1:-1:-1;;;13736:2:1;13721:18;;13714:36;13782:3;13767:19;;13564:228::o;13797:340::-;13999:2;13981:21;;;14038:2;14018:18;;;14011:30;-1:-1:-1;;;14072:2:1;14057:18;;14050:46;14128:2;14113:18;;13971:166::o;14142:339::-;14344:2;14326:21;;;14383:2;14363:18;;;14356:30;-1:-1:-1;;;14417:2:1;14402:18;;14395:45;14472:2;14457:18;;14316:165::o;14486:347::-;14688:2;14670:21;;;14727:2;14707:18;;;14700:30;14766:25;14761:2;14746:18;;14739:53;14824:2;14809:18;;14660:173::o;14838:398::-;15040:2;15022:21;;;15079:2;15059:18;;;15052:30;15118:34;15113:2;15098:18;;15091:62;-1:-1:-1;;;15184:2:1;15169:18;;15162:32;15226:3;15211:19;;15012:224::o;15241:353::-;15443:2;15425:21;;;15482:2;15462:18;;;15455:30;15521:31;15516:2;15501:18;;15494:59;15585:2;15570:18;;15415:179::o;15599:356::-;15801:2;15783:21;;;15820:18;;;15813:30;15879:34;15874:2;15859:18;;15852:62;15946:2;15931:18;;15773:182::o;15960:405::-;16162:2;16144:21;;;16201:2;16181:18;;;16174:30;16240:34;16235:2;16220:18;;16213:62;-1:-1:-1;;;16306:2:1;16291:18;;16284:39;16355:3;16340:19;;16134:231::o;16370:340::-;16572:2;16554:21;;;16611:2;16591:18;;;16584:30;-1:-1:-1;;;16645:2:1;16630:18;;16623:46;16701:2;16686:18;;16544:166::o;16715:351::-;16917:2;16899:21;;;16956:2;16936:18;;;16929:30;16995:29;16990:2;16975:18;;16968:57;17057:2;17042:18;;16889:177::o;17071:345::-;17273:2;17255:21;;;17312:2;17292:18;;;17285:30;-1:-1:-1;;;17346:2:1;17331:18;;17324:51;17407:2;17392:18;;17245:171::o;17421:338::-;17623:2;17605:21;;;17662:2;17642:18;;;17635:30;-1:-1:-1;;;17696:2:1;17681:18;;17674:44;17750:2;17735:18;;17595:164::o;17764:355::-;17966:2;17948:21;;;18005:2;17985:18;;;17978:30;18044:33;18039:2;18024:18;;18017:61;18110:2;18095:18;;17938:181::o;18124:352::-;18326:2;18308:21;;;18365:2;18345:18;;;18338:30;18404;18399:2;18384:18;;18377:58;18467:2;18452:18;;18298:178::o;18481:353::-;18683:2;18665:21;;;18722:2;18702:18;;;18695:30;18761:31;18756:2;18741:18;;18734:59;18825:2;18810:18;;18655:179::o;18839:337::-;19041:2;19023:21;;;19080:2;19060:18;;;19053:30;-1:-1:-1;;;19114:2:1;19099:18;;19092:43;19167:2;19152:18;;19013:163::o;19181:406::-;19383:2;19365:21;;;19422:2;19402:18;;;19395:30;19461:34;19456:2;19441:18;;19434:62;-1:-1:-1;;;19527:2:1;19512:18;;19505:40;19577:3;19562:19;;19355:232::o;19592:335::-;19794:2;19776:21;;;19833:2;19813:18;;;19806:30;-1:-1:-1;;;19867:2:1;19852:18;;19845:41;19918:2;19903:18;;19766:161::o;19932:339::-;20134:2;20116:21;;;20173:2;20153:18;;;20146:30;-1:-1:-1;;;20207:2:1;20192:18;;20185:45;20262:2;20247:18;;20106:165::o;20276:344::-;20478:2;20460:21;;;20517:2;20497:18;;;20490:30;-1:-1:-1;;;20551:2:1;20536:18;;20529:50;20611:2;20596:18;;20450:170::o;20625:340::-;20827:2;20809:21;;;20866:2;20846:18;;;20839:30;-1:-1:-1;;;20900:2:1;20885:18;;20878:46;20956:2;20941:18;;20799:166::o;20970:355::-;21172:2;21154:21;;;21211:2;21191:18;;;21184:30;21250:33;21245:2;21230:18;;21223:61;21316:2;21301:18;;21144:181::o;21330:352::-;21532:2;21514:21;;;21571:2;21551:18;;;21544:30;21610;21605:2;21590:18;;21583:58;21673:2;21658:18;;21504:178::o;21687:330::-;21889:2;21871:21;;;21928:1;21908:18;;;21901:29;-1:-1:-1;;;21961:2:1;21946:18;;21939:37;22008:2;21993:18;;21861:156::o;22204:535::-;22491:25;;;22547:2;22532:18;;22525:34;;;;22590:2;22575:18;;22568:34;;;;22633:2;22618:18;;22611:34;22676:3;22661:19;;22654:35;22720:3;22705:19;;22698:35;22478:3;22463:19;;22445:294::o;22744:128::-;;22815:1;22811:6;22808:1;22805:13;22802:2;;;22821:18;;:::i;:::-;-1:-1:-1;22857:9:1;;22792:80::o;22877:120::-;;22943:1;22933:2;;22948:18;;:::i;:::-;-1:-1:-1;22982:9:1;;22923:74::o;23002:168::-;;23108:1;23104;23100:6;23096:14;23093:1;23090:21;23085:1;23078:9;23071:17;23067:45;23064:2;;;23115:18;;:::i;:::-;-1:-1:-1;23155:9:1;;23054:116::o;23175:125::-;;23243:1;23240;23237:8;23234:2;;;23248:18;;:::i;:::-;-1:-1:-1;23285:9:1;;23224:76::o;23305:258::-;23377:1;23387:113;23401:6;23398:1;23395:13;23387:113;;;23477:11;;;23471:18;23458:11;;;23451:39;23423:2;23416:10;23387:113;;;23518:6;23515:1;23512:13;23509:2;;;-1:-1:-1;;23553:1:1;23535:16;;23528:27;23358:205::o;23568:135::-;;-1:-1:-1;;23628:17:1;;23625:2;;;23648:18;;:::i;:::-;-1:-1:-1;23695:1:1;23684:13;;23615:88::o;23708:112::-;;23766:1;23756:2;;23771:18;;:::i;:::-;-1:-1:-1;23805:9:1;;23746:74::o;23825:127::-;23886:10;23881:3;23877:20;23874:1;23867:31;23917:4;23914:1;23907:15;23941:4;23938:1;23931:15;23957:127;24018:10;24013:3;24009:20;24006:1;23999:31;24049:4;24046:1;24039:15;24073:4;24070:1;24063:15;24089:133;-1:-1:-1;;;;;24166:31:1;;24156:42;;24146:2;;24212:1;24209;24202:12;24227:120;24315:5;24308:13;24301:21;24294:5;24291:32;24281:2;;24337:1;24334;24327:12
Swarm Source
ipfs://1c3210d7ae808143c50704d91913582283390ec3829128fe742d81784d24fa49
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.