blackbull-sdk
Version:
An SDK for building applications on top of Blackbullswap
28,288 lines • 1.53 MB
JSON
{
"id": "e1ff5cfa42cc03fbdb1d24649f739146",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.0",
"solcLongVersion": "0.8.0+commit.c7dfd78e",
"input": {
"language": "Solidity",
"sources": {
"contracts/PangolinVoteCalculator.sol": {
"content": "pragma solidity 0.8.0;\r\n\r\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\r\n\r\ninterface ILiquidityPoolManagerV2 {\r\n function stakes(address pair) external view returns (address);\r\n}\r\n\r\ninterface IPangolinPair {\r\n function totalSupply() external view returns (uint);\r\n function balanceOf(address owner) external view returns (uint);\r\n}\r\n\r\ninterface IPangolinERC20 {\r\n function balanceOf(address owner) external view returns (uint);\r\n function getCurrentVotes(address account) external view returns (uint);\r\n function delegates(address account) external view returns (address);\r\n}\r\n\r\ninterface IStakingRewards {\r\n function rewardsToken() external view returns (address);\r\n function stakingToken() external view returns (address);\r\n function balanceOf(address owner) external view returns (uint);\r\n function earned(address account) external view returns (uint);\r\n}\r\n\r\n// SPDX-License-Identifier: GPL-3.0-or-later\r\ncontract PangolinVoteCalculator is Ownable {\r\n\r\n IPangolinERC20 png;\r\n ILiquidityPoolManagerV2 liquidityManager;\r\n\r\n constructor(address _png, address _liquidityManager) {\r\n png = IPangolinERC20(_png);\r\n liquidityManager = ILiquidityPoolManagerV2(_liquidityManager);\r\n }\r\n\r\n function getVotesFromFarming(address voter, address[] calldata farms) external view returns (uint votes) {\r\n for (uint i; i<farms.length; i++) {\r\n IPangolinPair pair = IPangolinPair(farms[i]);\r\n IStakingRewards staking = IStakingRewards(liquidityManager.stakes(farms[i]));\r\n\r\n // Handle pairs that are no longer whitelisted\r\n if (address(staking) == address(0)) continue;\r\n\r\n uint pair_total_PNG = png.balanceOf(farms[i]);\r\n uint pair_total_PGL = pair.totalSupply(); // Could initially be 0 in rare situations\r\n\r\n uint PGL_hodling = pair.balanceOf(voter);\r\n uint PGL_staking = staking.balanceOf(voter);\r\n\r\n uint pending_PNG = staking.earned(voter);\r\n\r\n votes += ((PGL_hodling + PGL_staking) * pair_total_PNG) / pair_total_PGL + pending_PNG;\r\n }\r\n }\r\n\r\n function getVotesFromStaking(address voter, address[] calldata stakes) external view returns (uint votes) {\r\n for (uint i; i<stakes.length; i++) {\r\n IStakingRewards staking = IStakingRewards(stakes[i]);\r\n\r\n uint staked_PNG = staking.stakingToken() == address(png) ? staking.balanceOf(voter) : uint(0);\r\n\r\n uint pending_PNG = staking.rewardsToken() == address(png) ? staking.earned(voter) : uint(0);\r\n\r\n votes += (staked_PNG + pending_PNG);\r\n }\r\n }\r\n\r\n function getVotesFromWallets(address voter) external view returns (uint votes) {\r\n // Votes delegated to the voter\r\n votes += png.getCurrentVotes(voter);\r\n\r\n // Voter has never delegated\r\n if (png.delegates(voter) == address(0)) {\r\n votes += png.balanceOf(voter);\r\n }\r\n }\r\n\r\n function changeLiquidityPoolManager(address _liquidityManager) external onlyOwner {\r\n liquidityManager = ILiquidityPoolManagerV2(_liquidityManager);\r\n }\r\n\r\n}"
},
"@openzeppelin/contracts/access/Ownable.sol": {
"content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _setOwner(_msgSender());\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _setOwner(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _setOwner(newOwner);\n }\n\n function _setOwner(address newOwner) private {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"
},
"@openzeppelin/contracts/utils/Context.sol": {
"content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"
},
"contracts/TreasuryVesterProxy.sol": {
"content": "pragma solidity 0.8.0;\r\n\r\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\r\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\r\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\r\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\r\n\r\ninterface ITreasuryVester {\r\n function claim() external returns (uint);\r\n function recipient() external returns (address);\r\n}\r\n\r\ninterface IMiniChefV2 {\r\n function fundRewards(uint256 newFunding, uint256 duration) external;\r\n}\r\n\r\n// SPDX-License-Identifier: MIT\r\n\r\ncontract TreasuryVesterProxy is Ownable, ReentrancyGuard {\r\n using SafeERC20 for IERC20;\r\n\r\n IERC20 public png;\r\n ITreasuryVester public treasuryVester;\r\n IMiniChefV2 public chef;\r\n address public treasury;\r\n\r\n uint constant PNG_INITIAL_MAX_SUPPLY = 538_000_000e18;\r\n uint constant PNG_NEW_MAX_SUPPLY = 230_000_000e18;\r\n uint constant TREASURY_TARGET_BALANCE = 30_000_000e18;\r\n uint constant PNG_VESTING_CLIFF = 86_400;\r\n uint constant DIVERSION_STEP = 1_000e18;\r\n address constant BURN_ADDRESS = address(0x000000000000000000000000000000000000dEaD);\r\n\r\n bool initialized;\r\n uint public pngVested;\r\n\r\n uint public distributionCount;\r\n\r\n uint public treasuryDiversionRemaining;\r\n\r\n uint public diversionAmount;\r\n uint public diversionGain;\r\n\r\n constructor(address _png, address _treasuryVester, address _treasury, address _chef) {\r\n require(\r\n _png != address(0)\r\n && _treasuryVester != address(0)\r\n && _treasury != address(0)\r\n && _chef != address(0),\r\n \"TreasuryVesterProxy::Cannot construct with zero address\"\r\n );\r\n\r\n png = IERC20(_png);\r\n treasuryVester = ITreasuryVester(_treasuryVester);\r\n treasury = _treasury;\r\n chef = IMiniChefV2(_chef);\r\n }\r\n\r\n function init() external onlyOwner {\r\n require(treasuryVester.recipient() == address(this), \"TreasuryVesterProxy::Invalid treasury vester recipient\");\r\n\r\n uint unvestedPng = png.balanceOf(address(treasuryVester));\r\n uint treasuryBalance = png.balanceOf(treasury);\r\n\r\n // PNG that has already been vested\r\n pngVested = PNG_INITIAL_MAX_SUPPLY - unvestedPng;\r\n\r\n // PNG that should be diverted to the treasury to reach the target balance\r\n treasuryDiversionRemaining = TREASURY_TARGET_BALANCE - treasuryBalance;\r\n\r\n // Required for chef.fundRewards()\r\n png.approve(address(chef), type(uint256).max);\r\n\r\n initialized = true;\r\n }\r\n\r\n function claimAndDistribute() external {\r\n require(initialized == true, \"TreasuryVesterProxy::Not initialized\");\r\n uint vestedAmountRemaining = treasuryVester.claim();\r\n require(vestedAmountRemaining > 0, \"TreasuryVesterProxy::Nothing vested\");\r\n\r\n // Increase rate of diversion gain once every 300 days\r\n if (distributionCount % 300 == 0) {\r\n diversionGain += DIVERSION_STEP;\r\n }\r\n\r\n // Increase diversion every 30 days\r\n if (distributionCount % 30 == 0) {\r\n diversionAmount += diversionGain;\r\n }\r\n\r\n // Clamps diversionAmount to [1, vestedAmountRemaining]\r\n if (diversionAmount > vestedAmountRemaining) {\r\n diversionAmount = vestedAmountRemaining;\r\n }\r\n\r\n uint treasuryAmountMax = (diversionAmount > treasuryDiversionRemaining)\r\n ? treasuryDiversionRemaining // Avoid overfunding Treasury\r\n : diversionAmount;\r\n uint chefAmountMax = vestedAmountRemaining - diversionAmount;\r\n\r\n if (treasuryDiversionRemaining > 0) {\r\n uint treasuryAmount = pngVested + treasuryAmountMax > PNG_NEW_MAX_SUPPLY\r\n ? PNG_NEW_MAX_SUPPLY - pngVested // Avoid overvesting PNG\r\n : treasuryAmountMax;\r\n\r\n pngVested += treasuryAmount;\r\n vestedAmountRemaining -= treasuryAmount;\r\n treasuryDiversionRemaining -= treasuryAmount;\r\n png.safeTransfer(treasury, treasuryAmount);\r\n }\r\n\r\n if (pngVested < PNG_NEW_MAX_SUPPLY) {\r\n uint chefAmount = (pngVested + chefAmountMax > PNG_NEW_MAX_SUPPLY)\r\n ? PNG_NEW_MAX_SUPPLY - pngVested // Avoid overvesting PNG\r\n : chefAmountMax;\r\n\r\n if (chefAmount > 0) {\r\n pngVested += chefAmount;\r\n vestedAmountRemaining -= chefAmount;\r\n chef.fundRewards(chefAmount, PNG_VESTING_CLIFF);\r\n }\r\n }\r\n\r\n if (vestedAmountRemaining > 0) {\r\n // Logical burn since PNG cannot be sent to the 0 address\r\n png.safeTransfer(BURN_ADDRESS, vestedAmountRemaining);\r\n }\r\n\r\n distributionCount++;\r\n }\r\n\r\n}\r\n"
},
"@openzeppelin/contracts/security/ReentrancyGuard.sol": {
"content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and make it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n // On the first call to nonReentrant, _notEntered will be true\n require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n\n _;\n\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\nimport \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using Address for address;\n\n function safeTransfer(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n require(\n (value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n function safeIncreaseAllowance(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n uint256 newAllowance = token.allowance(address(this), spender) + value;\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n function safeDecreaseAllowance(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n unchecked {\n uint256 oldAllowance = token.allowance(address(this), spender);\n require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n uint256 newAllowance = oldAllowance - value;\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n if (returndata.length > 0) {\n // Return data is optional\n require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
},
"@openzeppelin/contracts/utils/Address.sol": {
"content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n assembly {\n size := extcodesize(account)\n }\n return size > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 1000
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"metadata"
],
"": [
"ast"
]
}
}
}
},
"output": {
"contracts": {
"@openzeppelin/contracts/access/Ownable.sol": {
"Ownable": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"owner()": "8da5cb5b",
"renounceOwnership()": "715018a6",
"transferOwnership(address)": "f2fde38b"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]}},\"version\":1}"
}
},
"@openzeppelin/contracts/security/ReentrancyGuard.sol": {
"ReentrancyGuard": {
"abi": [],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x842ccf9a6cd33e17b7acef8372ca42090755217b358fe0c44c98e951ea549d3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6cc5f36034a77d105263ae6d8cc18b16260b4a0f6cdb1a26f21ba3670fdd06dd\",\"dweb:/ipfs/QmdJrJ2LoG546BkfyZPta96BNmaVBfqZoh8kq7PqHuQyPk\"]}},\"version\":1}"
}
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"IERC20": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"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.\"},\"approve(address,uint256)\":{\"details\":\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]}},\"version\":1}"
}
},
"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
"SafeERC20": {
"abi": [],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220255de11dcdd0854dc739b72b6a727bd9adbd9a37adb2c7ab1b5b6346ad005e0e64736f6c63430008000033",
"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 0x5D 0xE1 SAR 0xCD 0xD0 DUP6 0x4D 0xC7 CODECOPY 0xB7 0x2B PUSH11 0x727BD9ADBD9A37ADB2C7AB SHL JUMPDEST PUSH4 0x46AD005E 0xE PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
"sourceMap": "578:3270:3:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;578:3270:3;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220255de11dcdd0854dc739b72b6a727bd9adbd9a37adb2c7ab1b5b6346ad005e0e64736f6c63430008000033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 0x5D 0xE1 SAR 0xCD 0xD0 DUP6 0x4D 0xC7 CODECOPY 0xB7 0x2B PUSH11 0x727BD9ADBD9A37ADB2C7AB SHL JUMPDEST PUSH4 0x46AD005E 0xE PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
"sourceMap": "578:3270:3:-:0;;;;;;;;"
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x02348b2e4b9f3200c7e3907c5c2661643a6d8520e9f79939fbb9b4005a54894d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d41d627f4ef9c6006df8c2d01227d3cf4a6c3359b5704c629d88933272eecadd\",\"dweb:/ipfs/QmYDo7MvMsvuDxuJZ9RC9zFganS3Tm8RYzSmBP5qSmJfuY\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x3336baae5cf23e94274d75336e2d412193be508504aee185e61dc7d58cd05c8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39a05eec7083dfa0cc7e0cbfe6cd1bd085a340af1ede93fdff3ad047c5fb3d8e\",\"dweb:/ipfs/QmVApz5fCUq2QC8gKTsNNdCmcedJ3ETHp68zR5N3WUKS4r\"]}},\"version\":1}"
}
},
"@openzeppelin/contracts/utils/Address.sol": {
"Address": {
"abi": [],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205fe580730fedd4a273982229d357d24d92f446ca83d795b17ebc1caf76184dd764736f6c63430008000033",
"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F 0xE5 DUP1 PUSH20 0xFEDD4A273982229D357D24D92F446CA83D795B1 PUSH31 0xBC1CAF76184DD764736F6C6343000800003300000000000000000000000000 ",
"sourceMap": "126:7729:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;126:7729:4;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205fe580730fedd4a273982229d357d24d92f446ca83d795b17ebc1caf76184dd764736f6c63430008000033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F 0xE5 DUP1 PUSH20 0xFEDD4A273982229D357D24D92F446CA83D795B1 PUSH31 0xBC1CAF76184DD764736F6C6343000800003300000000000000000000000000 ",
"sourceMap": "126:7729:4:-:0;;;;;;;;"
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x3336baae5cf23e94274d75336e2d412193be508504aee185e61dc7d58cd05c8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39a05eec7083dfa0cc7e0cbfe6cd1bd085a340af1ede93fdff3ad047c5fb3d8e\",\"dweb:/ipfs/QmVApz5fCUq2QC8gKTsNNdCmcedJ3ETHp68zR5N3WUKS4r\"]}},\"version\":1}"
}
},
"@openzeppelin/contracts/utils/Context.sol": {
"Context": {
"abi": [],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]}},\"version\":1}"
}
},
"contracts/PangolinVoteCalculator.sol": {
"ILiquidityPoolManagerV2": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "pair",
"type": "address"
}
],
"name": "stakes",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"stakes(address)": "16934fc4"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"stakes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PangolinVoteCalculator.sol\":\"ILiquidityPoolManagerV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"contracts/PangolinVoteCalculator.sol\":{\"keccak256\":\"0x4cda8ad6ce4b3f2e1860730a6fb2c9486f5f41bf2e5ff93005cc7b79669df902\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://687b30672b23a38108540b82474e29edaafa520b0637fbbf4b75d3a6d9e4ffbc\",\"dweb:/ipfs/QmcAfDJ8X353Az3VXzd56gSMTCL8QeFydsoFp1r82dcrMp\"]}},\"version\":1}"
},
"IPangolinERC20": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "delegates",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "getCurrentVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"balanceOf(address)": "70a08231",
"delegates(address)": "587cde1e",
"getCurrentVotes(address)": "b4b5ea57"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCurrentVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PangolinVoteCalculator.sol\":\"IPangolinERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"contracts/PangolinVoteCalculator.sol\":{\"keccak256\":\"0x4cda8ad6ce4b3f2e1860730a6fb2c9486f5f41bf2e5ff93005cc7b79669df902\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://687b30672b23a38108540b82474e29edaafa520b0637fbbf4b75d3a6d9e4ffbc\",\"dweb:/ipfs/QmcAfDJ8X353Az3VXzd56gSMTCL8QeFydsoFp1r82dcrMp\"]}},\"version\":1}"
},
"IPangolinPair": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PangolinVoteCalculator.sol\":\"IPangolinPair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"contracts/PangolinVoteCalculator.sol\":{\"keccak256\":\"0x4cda8ad6ce4b3f2e1860730a6fb2c9486f5f41bf2e5ff93005cc7b79669df902\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://687b30672b23a38108540b82474e29edaafa520b0637fbbf4b75d3a6d9e4ffbc\",\"dweb:/ipfs/QmcAfDJ8X353Az3VXzd56gSMTCL8QeFydsoFp1r82dcrMp\"]}},\"version\":1}"
},
"IStakingRewards": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "earned",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "rewardsToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "stakingToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"balanceOf(address)": "70a08231",
"earned(address)": "008cc262",
"rewardsToken()": "d1af0c7d",
"stakingToken()": "72f702f3"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"earned\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PangolinVoteCalculator.sol\":\"IStakingRewards\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"contracts/PangolinVoteCalculator.sol\":{\"keccak256\":\"0x4cda8ad6ce4b3f2e1860730a6fb2c9486f5f41bf2e5ff93005cc7b79669df902\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://687b30672b23a38108540b82474e29edaafa520b0637fbbf4b75d3a6d9e4ffbc\",\"dweb:/ipfs/QmcAfDJ8X353Az3VXzd56gSMTCL8QeFydsoFp1r82dcrMp\"]}},\"version\":1}"
},
"PangolinVoteCalculator": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_png",
"type": "address"
},
{
"internalType": "address",
"name": "_liquidityManager",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_liquidityManager",
"type": "address"
}
],
"name": "changeLiquidityPoolManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"internalType": "address[]",
"name": "farms",
"type": "address[]"
}
],
"name": "getVotesFromFarming",
"outputs": [
{
"internalType": "uint256",
"name": "votes",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"internalType": "address[]",
"name": "stakes",
"type": "address[]"
}
],
"name": "getVotesFromStaking",
"outputs": [
{
"internalType": "uint256",
"name": "votes",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "getVotesFromWallets",
"outputs": [
{
"internalType": "uint256",
"name": "votes",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:507:8",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:8",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "76:117:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "86:22:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "101:6:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "95:5:8"
},
"nodeType": "YulFunctionCall",
"src": "95:13:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "86:5:8"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "171:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "180:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "183:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "173:6:8"
},
"nodeType": "YulFunctionCall",
"src": "173:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "173:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "130:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "141:5:8"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "156:3:8",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "161:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "152:3:8"
},
"nodeType": "YulFunctionCall",
"src": "152:11:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "165:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "148:3:8"
},
"nodeType": "YulFunctionCall",
"src": "148:19:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "137:3:8"
},
"nodeType": "YulFunctionCall",
"src": "137:31:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "127:2:8"
},
"nodeType": "YulFunctionCall",
"src": "127:42:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "120:6:8"
},
"nodeType": "YulFunctionCall",
"src": "120:50:8"
},
"nodeType": "YulIf",
"src": "117:2:8"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "55:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "66:5:8",
"type": ""
}
],
"src": "14:179:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "296:209:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "342:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "351:6:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "359:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "344:6:8"
},
"nodeType": "YulFunctionCall",
"src": "344:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "344:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "317:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "326:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "313:3:8"
},
"nodeType": "YulFunctionCall",
"src": "313:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "338:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "309:3:8"
},
"nodeType": "YulFunctionCall",
"src": "309:32:8"
},
"nodeType": "YulIf",
"src": "306:2:8"
},
{
"nodeType": "YulAssignment",
"src": "377:52:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "419:9:8"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "387:31:8"
},
"nodeType": "YulFunctionCall",
"src": "387:42:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "377:6:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "438:61:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "484:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "495:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "480:3:8"
},
"nodeType": "YulFunctionCall",
"src": "480:18:8"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "448:31:8"
},
"nodeType": "YulFunctionCall",
"src": "448:51:8"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "438:6:8"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "254:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "265:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "277:6:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "285:6:8",
"type": ""
}
],
"src": "198:307:8"
}
]
},
"contents": "{\n { }\n function abi_decode_t_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n value0 := abi_decode_t_address_fromMemory(headStart)\n value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n }\n}",
"id": 8,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50604051610f01380380610f0183398101604081905261002f916100e0565b61003f61003a610070565b610074565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055610112565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100db57600080fd5b919050565b600080604083850312156100f2578182fd5b6100fb836100c4565b9150610109602084016100c4565b90509250929050565b610de0806101216000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063715018a61161005b578063715018a6146100d35780638b47dcd1146100db5780638da5cb5b146100ee578063f2fde38b146101035761007d565b80630f85e6381461008257806345c09daf1461009757806361227349146100c0575b600080fd5b610095610090366004610b85565b610116565b005b6100aa6100a5366004610bc4565b61018d565b6040516100b79190610d04565b60405180910390f35b6100aa6100ce366004610b85565b6105a3565b610095610787565b6100aa6100e9366004610bc4565b6107d2565b6100f6610aa4565b6040516100b79190610c5e565b610095610111366004610b85565b610ab3565b61011e610b24565b6001600160a01b031661012f610aa4565b6001600160a01b03161461015e5760405162461bcd60e51b815260040161015590610ccf565b60405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000805b8281101561059b5760008484838181106101bb57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906101d09190610b85565b6002549091506000906001600160a01b03166316934fc487878681811061020757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061021c9190610b85565b6040518263ffffffff1660e01b81526004016102389190610c5e565b60206040518083038186803b15801561025057600080fd5b505afa158015610264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102889190610ba8565b90506001600160a01b03811661029f575050610589565b6001546000906001600160a01b03166370a082318888878181106102d357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906102e89190610b85565b6040518263ffffffff1660e01b81526004016103049190610c5e565b60206040518083038186803b15801561031c57600080fd5b505afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103549190610c46565b90506000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561039157600080fd5b505afa1580156103a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c99190610c46565b90506000846001600160a01b03166370a082318b6040518263ffffffff1660e01b81526004016103f99190610c5e565b60206040518083038186803b15801561041157600080fd5b505afa158015610425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104499190610c46565b90506000846001600160a01b03166370a082318c6040518263ffffffff1660e01b81526004016104799190610c5e565b60206040518083038186803b15801561049157600080fd5b505afa1580156104a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c99190610c46565b90506000856001600160a01b0316628cc2628d6040518263ffffffff1660e01b81526004016104f89190610c5e565b60206040518083038186803b15801561051057600080fd5b505afa158015610524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105489190610c46565b90508084866105578587610d0d565b6105619190610d45565b61056b9190610d25565b6105759190610d0d565b61057f908a610d0d565b9850505050505050505b8061059381610d64565b915050610191565b509392505050565b6001546040517fb4b5ea570000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063b4b5ea57906105ed908590600401610c5e565b60206040518083038186803b15801561060557600080fd5b505afa158015610619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063d9190610c46565b6106479082610d0d565b6001546040517f587cde1e0000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b039091169063587cde1e90610696908690600401610c5e565b60206040518083038186803b1580156106ae57600080fd5b505afa1580156106c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e69190610ba8565b6001600160a01b03161415610782576001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610725908590600401610c5e565b60206040518083038186803b15801561073d57600080fd5b505afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107759190610c46565b61077f9082610d0d565b90505b919050565b61078f610b24565b6001600160a01b03166107a0610aa4565b6001600160a01b0316146107c65760405162461bcd60e51b815260040161015590610ccf565b6107d06000610b28565b565b6000805b8281101561059b57600084848381811061080057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906108159190610b85565b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316826001600160a01b03166372f702f36040518163ffffffff1660e01b815260040160206040518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190610ba8565b6001600160a01b0316146108be57600061093a565b6040516370a0823160e01b81526001600160a01b038316906370a08231906108ea908a90600401610c5e565b60206040518083038186803b15801561090257600080fd5b505afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190610c46565b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316836001600160a01b031663d1af0c7d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561099657600080fd5b505afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce9190610ba8565b6001600160a01b0316146109e3576000610a76565b6040517e8cc2620000000000000000000000000000000000000000000000000000000081526001600160a01b03841690628cc26290610a26908b90600401610c5e565b60206040518083038186803b158015610a3e57600080fd5b505afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a769190610c46565b9050610a828183610d0d565b610a8c9086610d0d565b94505050508080610a9c90610d64565b9150506107d6565b6000546001600160a01b031690565b610abb610b24565b6001600160a01b0316610acc610aa4565b6001600160a01b031614610af25760405162461bcd60e51b815260040161015590610ccf565b6001600160a01b038116610b185760405162461bcd60e51b815260040161015590610c72565b610b2181610b28565b50565b3390565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610b96578081fd5b8135610ba181610d95565b9392505050565b600060208284031215610bb9578081fd5b8151610ba181610d95565b600080600060408486031215610bd8578182fd5b8335610be381610d95565b9250602084013567ffffffffffffffff80821115610bff578384fd5b818601915086601f830112610c12578384fd5b813581811115610c20578485fd5b8760208083028501011115610c33578485fd5b6020830194508093505050509250925092565b600060208284031215610c57578081fd5b5051919050565b6001600160a01b0391909116815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b90815260200190565b60008219821115610d2057610d20610d7f565b500190565b600082610d4057634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610d5f57610d5f610d7f565b500290565b6000600019821415610d7857610d78610d7f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b2157600080fdfea264697066735822122020fa16c4dfc935d5d5a48927159daa166953e5dbb2819de936dae8ac621f385f64736f6c63430008000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF01 CODESIZE SUB DUP1 PUSH2 0xF01 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xE0 JUMP JUMPDEST PUSH2 0x3F PUSH2 0x3A PUSH2 0x70 JUMP JUMPDEST PUSH2 0x74 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH2 0x112 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xFB DUP4 PUSH2 0xC4 JUMP JUMPDEST SWAP2 POP PUSH2 0x109 PUSH1 0x20 DUP5 ADD PUSH2 0xC4 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xDE0 DUP1 PUSH2 0x121 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8B47DCD1 EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x103 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0xF85E638 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x45C09DAF EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x61227349 EQ PUSH2 0xC0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x116 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xBC4 JUMP JUMPDEST PUSH2 0x18D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0xD04 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH2 0xCE CALLDATASIZE PUSH1 0x4 PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0x95 PUSH2 0x787 JUMP JUMPDEST PUSH2 0xAA PUSH2 0xE9 CALLDATASIZE PUSH1 0x4 PUSH2 0xBC4 JUMP JUMPDEST PUSH2 0x7D2 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH2 0x95 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0xB85 JUMP JUMPDEST PUSH2 0xAB3 JUMP JUMPDEST PUSH2 0x11E PUSH2 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12F PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x15E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x155 SWAP1 PUSH2 0xCCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1BB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D0 SWAP2 SWAP1 PUSH2 0xB85 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x16934FC4 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x207 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x21C SWAP2 SWAP1 PUSH2 0xB85 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x264 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x288 SWAP2 SWAP1 PUSH2 0xBA8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x29F JUMPI POP POP PUSH2 0x589 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP9 DUP9 DUP8 DUP2 DUP2 LT PUSH2 0x2D3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2E8 SWAP2 SWAP1 PUSH2 0xB85 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x304 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x330 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x354 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C9 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP12 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x425 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x449 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP13 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4C9 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x8CC262 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x524 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x548 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 DUP7 PUSH2 0x557 DUP6 DUP8 PUSH2 0xD0D JUMP JUMPDEST PUSH2 0x561 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH2 0x56B SWAP2 SWAP1 PUSH2 0xD25 JUMP JUMPDEST PUSH2 0x575 SWAP2 SWAP1 PUSH2 0xD0D JUMP JUMPDEST PUSH2 0x57F SWAP1 DUP11 PUSH2 0xD0D JUMP JUMPDEST SWAP9 POP POP POP POP POP POP POP POP JUMPDEST DUP1 PUSH2 0x593 DUP2 PUSH2 0xD64 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x191 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4B5EA5700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xB4B5EA57 SWAP1 PUSH2 0x5ED SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x619 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x63D SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST PUSH2 0x647 SWAP1 DUP3 PUSH2 0xD0D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x587CDE1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x587CDE1E SWAP1 PUSH2 0x696 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6E6 SWAP2 SWAP1 PUSH2 0xBA8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x782 JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x725 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x751 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x775 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST PUSH2 0x77F SWAP1 DUP3 PUSH2 0xD0D JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x78F PUSH2 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A0 PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x155 SWAP1 PUSH2 0xCCF JUMP JUMPDEST PUSH2 0x7D0 PUSH1 0x0 PUSH2 0xB28 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x800 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x815 SWAP2 SWAP1 PUSH2 0xB85 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x72F702F3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x885 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8A9 SWAP2 SWAP1 PUSH2 0xBA8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8BE JUMPI PUSH1 0x0 PUSH2 0x93A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x8EA SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x916 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x93A SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1AF0C7D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x996 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9CE SWAP2 SWAP1 PUSH2 0xBA8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9E3 JUMPI PUSH1 0x0 PUSH2 0xA76 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH31 0x8CC26200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH3 0x8CC262 SWAP1 PUSH2 0xA26 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA76 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH2 0xA82 DUP2 DUP4 PUSH2 0xD0D JUMP JUMPDEST PUSH2 0xA8C SWAP1 DUP7 PUSH2 0xD0D JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH2 0xA9C SWAP1 PUSH2 0xD64 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xABB PUSH2 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xACC PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x155 SWAP1 PUSH2 0xCCF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB18 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x155 SWAP1 PUSH2 0xC72 JUMP JUMPDEST PUSH2 0xB21 DUP2 PUSH2 0xB28 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB96 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xBA1 DUP2 PUSH2 0xD95 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBB9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xBA1 DUP2 PUSH2 0xD95 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xBD8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xBE3 DUP2 PUSH2 0xD95 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xBFF JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xC12 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xC20 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0xC33 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC57 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xD20 JUMPI PUSH2 0xD20 PUSH2 0xD7F JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xD40 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0xD5F JUMPI PUSH2 0xD5F PUSH2 0xD7F JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0xD78 JUMPI PUSH2 0xD78 PUSH2 0xD7F JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB21 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 STATICCALL AND 0xC4 0xDF 0xC9 CALLDATALOAD 0xD5 0xD5 LOG4 DUP10 0x27 ISZERO SWAP14 0xAA AND PUSH10 0x53E5DBB2819DE936DAE8 0xAC PUSH3 0x1F385F PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
"sourceMap": "945:2198:6:-:0;;;1071:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;867:23:0;877:12;:10;:12::i;:::-;867:9;:23::i;:::-;1135:3:6;:26;;-1:-1:-1;;;;;1135:26:6;;;-1:-1:-1;;;;;;1135:26:6;;;;;;;1172:16;:61;;;;;;;;;;;945:2198;;587:96:5;666:10;587:96;:::o;2041:169:0:-;2096:16;2115:6;;-1:-1:-1;;;;;2131:17:0;;;-1:-1:-1;;;;;;2131:17:0;;;;;;2163:40;;2115:6;;;;;;;2163:40;;2096:16;2163:40;2041:169;;:::o;14:179:8:-;95:13;;-1:-1:-1;;;;;137:31:8;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:307::-;;;338:2;326:9;317:7;313:23;309:32;306:2;;;359:6;351;344:22;306:2;387:42;419:9;387:42;:::i;:::-;377:52;;448:51;495:2;484:9;480:18;448:51;:::i;:::-;438:61;;296:209;;;;;:::o;:::-;945:2198:6;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:3806:8",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:8",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "84:189:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "130:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "139:6:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "147:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "132:6:8"
},
"nodeType": "YulFunctionCall",
"src": "132:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "132:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "105:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "114:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "101:3:8"
},
"nodeType": "YulFunctionCall",
"src": "101:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "126:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "97:3:8"
},
"nodeType": "YulFunctionCall",
"src": "97:32:8"
},
"nodeType": "YulIf",
"src": "94:2:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "165:36:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "191:9:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "178:12:8"
},
"nodeType": "YulFunctionCall",
"src": "178:23:8"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "169:5:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "237:5:8"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "210:26:8"
},
"nodeType": "YulFunctionCall",
"src": "210:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "210:33:8"
},
{
"nodeType": "YulAssignment",
"src": "252:15:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "262:5:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "252:6:8"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "50:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "61:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "73:6:8",
"type": ""
}
],
"src": "14:259:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "359:182:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "405:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "414:6:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "422:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "407:6:8"
},
"nodeType": "YulFunctionCall",
"src": "407:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "407:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "380:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "389:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "376:3:8"
},
"nodeType": "YulFunctionCall",
"src": "376:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "372:3:8"
},
"nodeType": "YulFunctionCall",
"src": "372:32:8"
},
"nodeType": "YulIf",
"src": "369:2:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "440:29:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "459:9:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "453:5:8"
},
"nodeType": "YulFunctionCall",
"src": "453:16:8"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "444:5:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "505:5:8"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "478:26:8"
},
"nodeType": "YulFunctionCall",
"src": "478:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "478:33:8"
},
{
"nodeType": "YulAssignment",
"src": "520:15:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "530:5:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "520:6:8"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "325:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "336:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "348:6:8",
"type": ""
}
],
"src": "278:263:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "668:681:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "714:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "723:6:8"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "731:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "716:6:8"
},
"nodeType": "YulFunctionCall",
"src": "716:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "716:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "689:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "698:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "685:3:8"
},
"nodeType": "YulFunctionCall",
"src": "685:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "710:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "681:3:8"
},
"nodeType": "YulFunctionCall",
"src": "681:32:8"
},
"nodeType": "YulIf",
"src": "678:2:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "749:36:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "775:9:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "762:12:8"
},
"nodeType": "YulFunctionCall",
"src": "762:23:8"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "753:5:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "821:5:8"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "794:26:8"
},
"nodeType": "YulFunctionCall",
"src": "794:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "794:33:8"
},
{
"nodeType": "YulAssignment",
"src": "836:15:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "846:5:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "836:6:8"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "860:46:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "891:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "902:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "887:3:8"
},
"nodeType": "YulFunctionCall",
"src": "887:18:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "874:12:8"
},
"nodeType": "YulFunctionCall",
"src": "874:32:8"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "864:6:8",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "915:28:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "925:18:8",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "919:2:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "970:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "979:6:8"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "987:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "972:6:8"
},
"nodeType": "YulFunctionCall",
"src": "972:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "972:22:8"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "958:6:8"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "966:2:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "955:2:8"
},
"nodeType": "YulFunctionCall",
"src": "955:14:8"
},
"nodeType": "YulIf",
"src": "952:2:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1005:32:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1019:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1030:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1015:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1015:22:8"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "1009:2:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1085:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1094:6:8"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1102:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1087:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1087:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "1087:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "1064:2:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1068:4:8",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1060:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1060:13:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1075:7:8"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1056:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1056:27:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1049:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1049:35:8"
},
"nodeType": "YulIf",
"src": "1046:2:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1120:30:8",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "1147:2:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1134:12:8"
},
"nodeType": "YulFunctionCall",
"src": "1134:16:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1124:6:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1177:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1186:6:8"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1194:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1179:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1179:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "1179:22:8"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1165:6:8"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1173:2:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1162:2:8"
},
"nodeType": "YulFunctionCall",
"src": "1162:14:8"
},
"nodeType": "YulIf",
"src": "1159:2:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1262:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1271:6:8"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1279:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1264:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1264:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "1264:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "1226:2:8"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1234:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1242:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "1230:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1230:15:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1222:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1222:24:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1248:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1218:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1218:33:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1253:7:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1215:2:8"
},
"nodeType": "YulFunctionCall",
"src": "1215:46:8"
},
"nodeType": "YulIf",
"src": "1212:2:8"
},
{
"nodeType": "YulAssignment",
"src": "1297:21:8",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "1311:2:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1315:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1307:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1307:11:8"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1297:6:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1327:16:8",
"value": {
"name": "length",
"nodeType": "YulIdentifier",
"src": "1337:6:8"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1327:6:8"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_array$_t_address_$dyn_calldata_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "618:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "629:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "641:6:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "649:6:8",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "657:6:8",
"type": ""
}
],
"src": "546:803:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1435:113:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1481:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1490:6:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1498:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1483:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1483:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "1483:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1456:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1465:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1452:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1452:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1477:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1448:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1448:32:8"
},
"nodeType": "YulIf",
"src": "1445:2:8"
},
{
"nodeType": "YulAssignment",
"src": "1516:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1532:9:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1526:5:8"
},
"nodeType": "YulFunctionCall",
"src": "1526:16:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1516:6:8"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1401:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1412:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1424:6:8",
"type": ""
}
],
"src": "1354:194:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1654:125:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1664:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1676:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1687:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1672:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1672:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1664:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1706:9:8"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1721:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1729:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1717:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1717:55:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1699:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1699:74:8"
},
"nodeType": "YulExpressionStatement",
"src": "1699:74:8"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1623:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1634:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1645:4:8",
"type": ""
}
],
"src": "1553:226:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1958:228:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1975:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1986:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1968:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1968:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "1968:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2009:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2020:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2005:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2005:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2025:2:8",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1998:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1998:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "1998:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2048:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2059:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2044:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2044:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "2064:34:8",
"type": "",
"value": "Ownable: new owner is the zero a"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2037:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2037:62:8"
},
"nodeType": "YulExpressionStatement",
"src": "2037:62:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2119:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2130:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2115:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2115:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "2135:8:8",
"type": "",
"value": "ddress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2108:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2108:36:8"
},
"nodeType": "YulExpressionStatement",
"src": "2108:36:8"
},
{
"nodeType": "YulAssignment",
"src": "2153:27:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2165:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2176:3:8",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2161:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2161:19:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2153:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1935:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1949:4:8",
"type": ""
}
],
"src": "1784:402:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2365:182:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2382:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2393:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2375:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2375:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "2375:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2416:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2427:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2412:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2412:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2432:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2405:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2405:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "2405:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2455:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2466:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2451:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2451:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "2471:34:8",
"type": "",
"value": "Ownable: caller is not the owner"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2444:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2444:62:8"
},
"nodeType": "YulExpressionStatement",
"src": "2444:62:8"
},
{
"nodeType": "YulAssignment",
"src": "2515:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2527:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2538:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2523:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2523:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2515:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2342:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2356:4:8",
"type": ""
}
],
"src": "2191:356:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2653:76:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2663:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2675:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2686:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2671:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2671:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2663:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2705:9:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2716:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2698:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2698:25:8"
},
"nodeType": "YulExpressionStatement",
"src": "2698:25:8"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2622:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2633:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2644:4:8",
"type": ""
}
],
"src": "2552:177:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2782:80:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2809:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2811:16:8"
},
"nodeType": "YulFunctionCall",
"src": "2811:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "2811:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2798:1:8"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2805:1:8"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2801:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2801:6:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2795:2:8"
},
"nodeType": "YulFunctionCall",
"src": "2795:13:8"
},
"nodeType": "YulIf",
"src": "2792:2:8"
},
{
"nodeType": "YulAssignment",
"src": "2840:16:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2851:1:8"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2854:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2847:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2847:9:8"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "2840:3:8"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2765:1:8",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2768:1:8",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "2774:3:8",
"type": ""
}
],
"src": "2734:128:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2913:228:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2944:168:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "2965:1:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2968:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2958:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2958:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "2958:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3066:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3069:4:8",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3059:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3059:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "3059:15:8"
},
{
"expression": {
"arguments": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "3094:1:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3097:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3087:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3087:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "3087:15:8"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2933:1:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2926:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2926:9:8"
},
"nodeType": "YulIf",
"src": "2923:2:8"
},
{
"nodeType": "YulAssignment",
"src": "3121:14:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3130:1:8"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3133:1:8"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "3126:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3126:9:8"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "3121:1:8"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2898:1:8",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2901:1:8",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "2907:1:8",
"type": ""
}
],
"src": "2867:274:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3198:116:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3257:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3259:16:8"
},
"nodeType": "YulFunctionCall",
"src": "3259:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "3259:18:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3229:1:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3222:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3222:9:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3215:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3215:17:8"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3237:1:8"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3248:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3244:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3244:6:8"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3252:1:8"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "3240:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3240:14:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3234:2:8"
},
"nodeType": "YulFunctionCall",
"src": "3234:21:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3211:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3211:45:8"
},
"nodeType": "YulIf",
"src": "3208:2:8"
},
{
"nodeType": "YulAssignment",
"src": "3288:20:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3303:1:8"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3306:1:8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "3299:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3299:9:8"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "3288:7:8"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "3177:1:8",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "3180:1:8",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "3186:7:8",
"type": ""
}
],
"src": "3146:168:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3366:88:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3397:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3399:16:8"
},
"nodeType": "YulFunctionCall",
"src": "3399:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "3399:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3382:5:8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3393:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3389:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3389:6:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3379:2:8"
},
"nodeType": "YulFunctionCall",
"src": "3379:17:8"
},
"nodeType": "YulIf",
"src": "3376:2:8"
},
{
"nodeType": "YulAssignment",
"src": "3428:20:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3439:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3446:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3435:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3435:13:8"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "3428:3:8"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3348:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "3358:3:8",
"type": ""
}
],
"src": "3319:135:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3491:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3508:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3511:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3501:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3501:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "3501:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3605:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3608:4:8",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3598:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3598:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "3598:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3629:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3632:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3622:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3622:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "3622:15:8"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "3459:184:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3695:109:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3782:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3791:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3794:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3784:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3784:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "3784:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3718:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3729:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3736:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3725:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3725:54:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3715:2:8"
},
"nodeType": "YulFunctionCall",
"src": "3715:65:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3708:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3708:73:8"
},
"nodeType": "YulIf",
"src": "3705:2:8"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3684:5:8",
"type": ""
}
],
"src": "3648:156:8"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := mload(headStart)\n validator_revert_t_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_addresst_array$_t_address_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(value1, value1) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value1, value1) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(value1, value1) }\n if gt(add(add(_2, mul(length, 32)), 32), dataEnd) { revert(value1, value1) }\n value1 := add(_2, 32)\n value2 := length\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(r, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(r, 0x24)\n }\n r := div(x, y)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function validator_revert_t_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n}",
"id": 8,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c8063715018a61161005b578063715018a6146100d35780638b47dcd1146100db5780638da5cb5b146100ee578063f2fde38b146101035761007d565b80630f85e6381461008257806345c09daf1461009757806361227349146100c0575b600080fd5b610095610090366004610b85565b610116565b005b6100aa6100a5366004610bc4565b61018d565b6040516100b79190610d04565b60405180910390f35b6100aa6100ce366004610b85565b6105a3565b610095610787565b6100aa6100e9366004610bc4565b6107d2565b6100f6610aa4565b6040516100b79190610c5e565b610095610111366004610b85565b610ab3565b61011e610b24565b6001600160a01b031661012f610aa4565b6001600160a01b03161461015e5760405162461bcd60e51b815260040161015590610ccf565b60405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000805b8281101561059b5760008484838181106101bb57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906101d09190610b85565b6002549091506000906001600160a01b03166316934fc487878681811061020757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061021c9190610b85565b6040518263ffffffff1660e01b81526004016102389190610c5e565b60206040518083038186803b15801561025057600080fd5b505afa158015610264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102889190610ba8565b90506001600160a01b03811661029f575050610589565b6001546000906001600160a01b03166370a082318888878181106102d357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906102e89190610b85565b6040518263ffffffff1660e01b81526004016103049190610c5e565b60206040518083038186803b15801561031c57600080fd5b505afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103549190610c46565b90506000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561039157600080fd5b505afa1580156103a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c99190610c46565b90506000846001600160a01b03166370a082318b6040518263ffffffff1660e01b81526004016103f99190610c5e565b60206040518083038186803b15801561041157600080fd5b505afa158015610425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104499190610c46565b90506000846001600160a01b03166370a082318c6040518263ffffffff1660e01b81526004016104799190610c5e565b60206040518083038186803b15801561049157600080fd5b505afa1580156104a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c99190610c46565b90506000856001600160a01b0316628cc2628d6040518263ffffffff1660e01b81526004016104f89190610c5e565b60206040518083038186803b15801561051057600080fd5b505afa158015610524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105489190610c46565b90508084866105578587610d0d565b6105619190610d45565b61056b9190610d25565b6105759190610d0d565b61057f908a610d0d565b9850505050505050505b8061059381610d64565b915050610191565b509392505050565b6001546040517fb4b5ea570000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063b4b5ea57906105ed908590600401610c5e565b60206040518083038186803b15801561060557600080fd5b505afa158015610619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063d9190610c46565b6106479082610d0d565b6001546040517f587cde1e0000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b039091169063587cde1e90610696908690600401610c5e565b60206040518083038186803b1580156106ae57600080fd5b505afa1580156106c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e69190610ba8565b6001600160a01b03161415610782576001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610725908590600401610c5e565b60206040518083038186803b15801561073d57600080fd5b505afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107759190610c46565b61077f9082610d0d565b90505b919050565b61078f610b24565b6001600160a01b03166107a0610aa4565b6001600160a01b0316146107c65760405162461bcd60e51b815260040161015590610ccf565b6107d06000610b28565b565b6000805b8281101561059b57600084848381811061080057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906108159190610b85565b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316826001600160a01b03166372f702f36040518163ffffffff1660e01b815260040160206040518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190610ba8565b6001600160a01b0316146108be57600061093a565b6040516370a0823160e01b81526001600160a01b038316906370a08231906108ea908a90600401610c5e565b60206040518083038186803b15801561090257600080fd5b505afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190610c46565b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316836001600160a01b031663d1af0c7d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561099657600080fd5b505afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce9190610ba8565b6001600160a01b0316146109e3576000610a76565b6040517e8cc2620000000000000000000000000000000000000000000000000000000081526001600160a01b03841690628cc26290610a26908b90600401610c5e565b60206040518083038186803b158015610a3e57600080fd5b505afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a769190610c46565b9050610a828183610d0d565b610a8c9086610d0d565b94505050508080610a9c90610d64565b9150506107d6565b6000546001600160a01b031690565b610abb610b24565b6001600160a01b0316610acc610aa4565b6001600160a01b031614610af25760405162461bcd60e51b815260040161015590610ccf565b6001600160a01b038116610b185760405162461bcd60e51b815260040161015590610c72565b610b2181610b28565b50565b3390565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610b96578081fd5b8135610ba181610d95565b9392505050565b600060208284031215610bb9578081fd5b8151610ba181610d95565b600080600060408486031215610bd8578182fd5b8335610be381610d95565b9250602084013567ffffffffffffffff80821115610bff578384fd5b818601915086601f830112610c12578384fd5b813581811115610c20578485fd5b8760208083028501011115610c33578485fd5b6020830194508093505050509250925092565b600060208284031215610c57578081fd5b5051919050565b6001600160a01b0391909116815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b90815260200190565b60008219821115610d2057610d20610d7f565b500190565b600082610d4057634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610d5f57610d5f610d7f565b500290565b6000600019821415610d7857610d78610d7f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b2157600080fdfea264697066735822122020fa16c4dfc935d5d5a48927159daa166953e5dbb2819de936dae8ac621f385f64736f6c63430008000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x8B47DCD1 EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x103 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0xF85E638 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x45C09DAF EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x61227349 EQ PUSH2 0xC0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x116 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xBC4 JUMP JUMPDEST PUSH2 0x18D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0xD04 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH2 0xCE CALLDATASIZE PUSH1 0x4 PUSH2 0xB85 JUMP JUMPDEST PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0x95 PUSH2 0x787 JUMP JUMPDEST PUSH2 0xAA PUSH2 0xE9 CALLDATASIZE PUSH1 0x4 PUSH2 0xBC4 JUMP JUMPDEST PUSH2 0x7D2 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH2 0x95 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0xB85 JUMP JUMPDEST PUSH2 0xAB3 JUMP JUMPDEST PUSH2 0x11E PUSH2 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x12F PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x15E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x155 SWAP1 PUSH2 0xCCF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1BB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D0 SWAP2 SWAP1 PUSH2 0xB85 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x16934FC4 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x207 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x21C SWAP2 SWAP1 PUSH2 0xB85 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x264 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x288 SWAP2 SWAP1 PUSH2 0xBA8 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x29F JUMPI POP POP PUSH2 0x589 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP9 DUP9 DUP8 DUP2 DUP2 LT PUSH2 0x2D3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2E8 SWAP2 SWAP1 PUSH2 0xB85 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x304 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x330 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x354 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C9 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP12 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x425 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x449 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP13 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x479 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4C9 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x8CC262 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x524 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x548 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 DUP7 PUSH2 0x557 DUP6 DUP8 PUSH2 0xD0D JUMP JUMPDEST PUSH2 0x561 SWAP2 SWAP1 PUSH2 0xD45 JUMP JUMPDEST PUSH2 0x56B SWAP2 SWAP1 PUSH2 0xD25 JUMP JUMPDEST PUSH2 0x575 SWAP2 SWAP1 PUSH2 0xD0D JUMP JUMPDEST PUSH2 0x57F SWAP1 DUP11 PUSH2 0xD0D JUMP JUMPDEST SWAP9 POP POP POP POP POP POP POP POP JUMPDEST DUP1 PUSH2 0x593 DUP2 PUSH2 0xD64 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x191 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xB4B5EA5700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xB4B5EA57 SWAP1 PUSH2 0x5ED SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x619 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x63D SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST PUSH2 0x647 SWAP1 DUP3 PUSH2 0xD0D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x587CDE1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x587CDE1E SWAP1 PUSH2 0x696 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6E6 SWAP2 SWAP1 PUSH2 0xBA8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x782 JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x725 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x751 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x775 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST PUSH2 0x77F SWAP1 DUP3 PUSH2 0xD0D JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x78F PUSH2 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7A0 PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x155 SWAP1 PUSH2 0xCCF JUMP JUMPDEST PUSH2 0x7D0 PUSH1 0x0 PUSH2 0xB28 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x800 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x815 SWAP2 SWAP1 PUSH2 0xB85 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x72F702F3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x885 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8A9 SWAP2 SWAP1 PUSH2 0xBA8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8BE JUMPI PUSH1 0x0 PUSH2 0x93A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x8EA SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x916 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x93A SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1AF0C7D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x996 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9CE SWAP2 SWAP1 PUSH2 0xBA8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9E3 JUMPI PUSH1 0x0 PUSH2 0xA76 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH31 0x8CC26200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH3 0x8CC262 SWAP1 PUSH2 0xA26 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA76 SWAP2 SWAP1 PUSH2 0xC46 JUMP JUMPDEST SWAP1 POP PUSH2 0xA82 DUP2 DUP4 PUSH2 0xD0D JUMP JUMPDEST PUSH2 0xA8C SWAP1 DUP7 PUSH2 0xD0D JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH2 0xA9C SWAP1 PUSH2 0xD64 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xABB PUSH2 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xACC PUSH2 0xAA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x155 SWAP1 PUSH2 0xCCF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB18 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x155 SWAP1 PUSH2 0xC72 JUMP JUMPDEST PUSH2 0xB21 DUP2 PUSH2 0xB28 JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB96 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xBA1 DUP2 PUSH2 0xD95 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBB9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xBA1 DUP2 PUSH2 0xD95 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xBD8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xBE3 DUP2 PUSH2 0xD95 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xBFF JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xC12 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xC20 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0xC33 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC57 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xD20 JUMPI PUSH2 0xD20 PUSH2 0xD7F JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xD40 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0xD5F JUMPI PUSH2 0xD5F PUSH2 0xD7F JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0xD78 JUMPI PUSH2 0xD78 PUSH2 0xD7F JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB21 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 STATICCALL AND 0xC4 0xDF 0xC9 CALLDATALOAD 0xD5 0xD5 LOG4 DUP10 0x27 ISZERO SWAP14 0xAA AND PUSH10 0x53E5DBB2819DE936DAE8 0xAC PUSH3 0x1F385F PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ",
"sourceMap": "945:2198:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:162;;;;;;:::i;:::-;;:::i;:::-;;1249:875;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2648:320;;;;;;:::i;:::-;;:::i;1605:92:0:-;;;:::i;2132:508:6:-;;;;;;:::i;:::-;;:::i;973:85:0:-;;;:::i;:::-;;;;;;;:::i;1846:189::-;;;;;;:::i;:::-;;:::i;2976:162:6:-;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;;;;;;;;;3069:16:6::1;:61:::0;;-1:-1:-1;;3069:61:6::1;-1:-1:-1::0;;;;;3069:61:6;;;::::1;::::0;;;::::1;::::0;;2976:162::o;1249:875::-;1342:10;1370:6;1365:752;1378:14;;;1365:752;;;1414:18;1449:5;;1455:1;1449:8;;;;;-1:-1:-1;;;1449:8:6;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1515:16;;1414:44;;-1:-1:-1;1473:23:6;;-1:-1:-1;;;;;1515:16:6;:23;1539:5;;1545:1;1539:8;;;;;-1:-1:-1;;;1539:8:6;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1515:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1473:76;-1:-1:-1;;;;;;1630:30:6;;1626:44;;1662:8;;;;1626:44;1709:3;;1687:19;;-1:-1:-1;;;;;1709:3:6;:13;1723:5;;1729:1;1723:8;;;;;-1:-1:-1;;;1723:8:6;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1709:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1687:45;;1747:19;1769:4;-1:-1:-1;;;;;1769:16:6;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1747:40;;1847:16;1866:4;-1:-1:-1;;;;;1866:14:6;;1881:5;1866:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1847:40;;1902:16;1921:7;-1:-1:-1;;;;;1921:17:6;;1939:5;1921:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1902:43;;1962:16;1981:7;-1:-1:-1;;;;;1981:14:6;;1996:5;1981:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1962:40;-1:-1:-1;1962:40:6;2077:14;2059;2030:25;2044:11;2030;:25;:::i;:::-;2029:44;;;;:::i;:::-;2028:63;;;;:::i;:::-;:77;;;;:::i;:::-;2019:86;;;;:::i;:::-;;;1365:752;;;;;;;;1394:3;;;;:::i;:::-;;;;1365:752;;;;1249:875;;;;;:::o;2648:320::-;2788:3;;:26;;;;;2715:10;;-1:-1:-1;;;;;2788:3:6;;:19;;:26;;2808:5;;2788:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2779:35;;;;:::i;:::-;2869:3;;:20;;;;;2779:35;;-1:-1:-1;2901:1:6;;-1:-1:-1;;;;;2869:3:6;;;;:13;;:20;;2883:5;;2869:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2869:34:6;;2865:96;;;2929:3;;:20;;-1:-1:-1;;;2929:20:6;;-1:-1:-1;;;;;2929:3:6;;;;:13;;:20;;2943:5;;2929:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2920:29;;;;:::i;:::-;;;2865:96;2648:320;;;:::o;1605:92:0:-;1196:12;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;1669:21:::1;1687:1;1669:9;:21::i;:::-;1605:92::o:0;2132:508:6:-;2226:10;2254:6;2249:384;2262:15;;;2249:384;;;2299:23;2341:6;;2348:1;2341:9;;;;;-1:-1:-1;;;2341:9:6;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2299:52;;2368:15;2420:3;;;;;;;;;-1:-1:-1;;;;;2420:3:6;-1:-1:-1;;;;;2386:38:6;:7;-1:-1:-1;;;;;2386:20:6;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2386:38:6;;:75;;2459:1;2386:75;;;2427:24;;-1:-1:-1;;;2427:24:6;;-1:-1:-1;;;;;2427:17:6;;;;;:24;;2445:5;;2427:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2368:93;;2478:16;2531:3;;;;;;;;;-1:-1:-1;;;;;2531:3:6;-1:-1:-1;;;;;2497:38:6;:7;-1:-1:-1;;;;;2497:20:6;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2497:38:6;;:72;;2567:1;2497:72;;;2538:21;;;;;-1:-1:-1;;;;;2538:14:6;;;;;:21;;2553:5;;2538:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2478:91;-1:-1:-1;2596:24:6;2478:91;2596:10;:24;:::i;:::-;2586:35;;;;:::i;:::-;;;2249:384;;;2279:3;;;;;:::i;:::-;;;;2249:384;;973:85:0;1019:7;1045:6;-1:-1:-1;;;;;1045:6:0;973:85;:::o;1846:189::-;1196:12;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1934:22:0;::::1;1926:73;;;;-1:-1:-1::0;;;1926:73:0::1;;;;;;;:::i;:::-;2009:19;2019:8;2009:9;:19::i;:::-;1846:189:::0;:::o;587:96:5:-;666:10;587:96;:::o;2041:169:0:-;2096:16;2115:6;;-1:-1:-1;;;;;2131:17:0;;;-1:-1:-1;;2131:17:0;;;;;;2163:40;;2115:6;;;;;;;2163:40;;2096:16;2163:40;2041:169;;:::o;14:259:8:-;;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;:::-;262:5;84:189;-1:-1:-1;;;84:189:8:o;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:803::-;;;;710:2;698:9;689:7;685:23;681:32;678:2;;;731:6;723;716:22;678:2;775:9;762:23;794:33;821:5;794:33;:::i;:::-;846:5;-1:-1:-1;902:2:8;887:18;;874:32;925:18;955:14;;;952:2;;;987:6;979;972:22;952:2;1030:6;1019:9;1015:22;1005:32;;1075:7;1068:4;1064:2;1060:13;1056:27;1046:2;;1102:6;1094;1087:22;1046:2;1147;1134:16;1173:2;1165:6;1162:14;1159:2;;;1194:6;1186;1179:22;1159:2;1253:7;1248:2;1242;1234:6;1230:15;1226:2;1222:24;1218:33;1215:46;1212:2;;;1279:6;1271;1264:22;1212:2;1315;1311;1307:11;1297:21;;1337:6;1327:16;;;;;668:681;;;;;:::o;1354:194::-;;1477:2;1465:9;1456:7;1452:23;1448:32;1445:2;;;1498:6;1490;1483:22;1445:2;-1:-1:-1;1526:16:8;;1435:113;-1:-1:-1;1435:113:8:o;1553:226::-;-1:-1:-1;;;;;1717:55:8;;;;1699:74;;1687:2;1672:18;;1654:125::o;1784:402::-;1986:2;1968:21;;;2025:2;2005:18;;;1998:30;2064:34;2059:2;2044:18;;2037:62;2135:8;2130:2;2115:18;;2108:36;2176:3;2161:19;;1958:228::o;2191:356::-;2393:2;2375:21;;;2412:18;;;2405:30;2471:34;2466:2;2451:18;;2444:62;2538:2;2523:18;;2365:182::o;2552:177::-;2698:25;;;2686:2;2671:18;;2653:76::o;2734:128::-;;2805:1;2801:6;2798:1;2795:13;2792:2;;;2811:18;;:::i;:::-;-1:-1:-1;2847:9:8;;2782:80::o;2867:274::-;;2933:1;2923:2;;-1:-1:-1;;;2965:1:8;2958:88;3069:4;3066:1;3059:15;3097:4;3094:1;3087:15;2923:2;-1:-1:-1;3126:9:8;;2913:228::o;3146:168::-;;3252:1;3248;3244:6;3240:14;3237:1;3234:21;3229:1;3222:9;3215:17;3211:45;3208:2;;;3259:18;;:::i;:::-;-1:-1:-1;3299:9:8;;3198:116::o;3319:135::-;;-1:-1:-1;;3379:17:8;;3376:2;;;3399:18;;:::i;:::-;-1:-1:-1;3446:1:8;3435:13;;3366:88::o;3459:184::-;-1:-1:-1;;;3508:1:8;3501:88;3608:4;3605:1;3598:15;3632:4;3629:1;3622:15;3648:156;-1:-1:-1;;;;;3729:5:8;3725:54;3718:5;3715:65;3705:2;;3794:1;3791;3784:12"
},
"methodIdentifiers": {
"changeLiquidityPoolManager(address)": "0f85e638",
"getVotesFromFarming(address,address[])": "45c09daf",
"getVotesFromStaking(address,address[])": "8b47dcd1",
"getVotesFromWallets(address)": "61227349",
"owner()": "8da5cb5b",
"renounceOwnership()": "715018a6",
"transferOwnership(address)": "f2fde38b"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_png\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_liquidityManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_liquidityManager\",\"type\":\"address\"}],\"name\":\"changeLiquidityPoolManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"farms\",\"type\":\"address[]\"}],\"name\":\"getVotesFromFarming\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"stakes\",\"type\":\"address[]\"}],\"name\":\"getVotesFromStaking\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"getVotesFromWallets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PangolinVoteCalculator.sol\":\"PangolinVoteCalculator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"contracts/PangolinVoteCalculator.sol\":{\"keccak256\":\"0x4cda8ad6ce4b3f2e1860730a6fb2c9486f5f41bf2e5ff93005cc7b79669df902\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://687b30672b23a38108540b82474e29edaafa520b0637fbbf4b75d3a6d9e4ffbc\",\"dweb:/ipfs/QmcAfDJ8X353Az3VXzd56gSMTCL8QeFydsoFp1r82dcrMp\"]}},\"version\":1}"
}
},
"contracts/TreasuryVesterProxy.sol": {
"IMiniChefV2": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "newFunding",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
}
],
"name": "fundRewards",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"fundRewards(uint256,uint256)": "28662551"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFunding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"fundRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TreasuryVesterProxy.sol\":\"IMiniChefV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x842ccf9a6cd33e17b7acef8372ca42090755217b358fe0c44c98e951ea549d3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6cc5f36034a77d105263ae6d8cc18b16260b4a0f6cdb1a26f21ba3670fdd06dd\",\"dweb:/ipfs/QmdJrJ2LoG546BkfyZPta96BNmaVBfqZoh8kq7PqHuQyPk\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x02348b2e4b9f3200c7e3907c5c2661643a6d8520e9f79939fbb9b4005a54894d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d41d627f4ef9c6006df8c2d01227d3cf4a6c3359b5704c629d88933272eecadd\",\"dweb:/ipfs/QmYDo7MvMsvuDxuJZ9RC9zFganS3Tm8RYzSmBP5qSmJfuY\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x3336baae5cf23e94274d75336e2d412193be508504aee185e61dc7d58cd05c8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39a05eec7083dfa0cc7e0cbfe6cd1bd085a340af1ede93fdff3ad047c5fb3d8e\",\"dweb:/ipfs/QmVApz5fCUq2QC8gKTsNNdCmcedJ3ETHp68zR5N3WUKS4r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"contracts/TreasuryVesterProxy.sol\":{\"keccak256\":\"0x31ff0dce94e3fa77cdacb36b63643cf6813a22e69902700febe79b78fd520b53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e940d2b0166dd49bf0076079407358302b7a7de4c9466884164fe5818abe8100\",\"dweb:/ipfs/QmP8dTTnw42UzACuDsvAMQsR7e8h8NcCS5xJuuyErL1Ub4\"]}},\"version\":1}"
},
"ITreasuryVester": {
"abi": [
{
"inputs": [],
"name": "claim",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "recipient",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"methodIdentifiers": {
"claim()": "4e71d92d",
"recipient()": "66d003ac"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TreasuryVesterProxy.sol\":\"ITreasuryVester\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x842ccf9a6cd33e17b7acef8372ca42090755217b358fe0c44c98e951ea549d3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6cc5f36034a77d105263ae6d8cc18b16260b4a0f6cdb1a26f21ba3670fdd06dd\",\"dweb:/ipfs/QmdJrJ2LoG546BkfyZPta96BNmaVBfqZoh8kq7PqHuQyPk\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x02348b2e4b9f3200c7e3907c5c2661643a6d8520e9f79939fbb9b4005a54894d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d41d627f4ef9c6006df8c2d01227d3cf4a6c3359b5704c629d88933272eecadd\",\"dweb:/ipfs/QmYDo7MvMsvuDxuJZ9RC9zFganS3Tm8RYzSmBP5qSmJfuY\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x3336baae5cf23e94274d75336e2d412193be508504aee185e61dc7d58cd05c8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39a05eec7083dfa0cc7e0cbfe6cd1bd085a340af1ede93fdff3ad047c5fb3d8e\",\"dweb:/ipfs/QmVApz5fCUq2QC8gKTsNNdCmcedJ3ETHp68zR5N3WUKS4r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"contracts/TreasuryVesterProxy.sol\":{\"keccak256\":\"0x31ff0dce94e3fa77cdacb36b63643cf6813a22e69902700febe79b78fd520b53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e940d2b0166dd49bf0076079407358302b7a7de4c9466884164fe5818abe8100\",\"dweb:/ipfs/QmP8dTTnw42UzACuDsvAMQsR7e8h8NcCS5xJuuyErL1Ub4\"]}},\"version\":1}"
},
"TreasuryVesterProxy": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_png",
"type": "address"
},
{
"internalType": "address",
"name": "_treasuryVester",
"type": "address"
},
{
"internalType": "address",
"name": "_treasury",
"type": "address"
},
{
"internalType": "address",
"name": "_chef",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "chef",
"outputs": [
{
"internalType": "contract IMiniChefV2",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "claimAndDistribute",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "distributionCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "diversionAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "diversionGain",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "init",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "png",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pngVested",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "treasury",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "treasuryDiversionRemaining",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "treasuryVester",
"outputs": [
{
"internalType": "contract ITreasuryVester",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1106:8",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:8",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "76:117:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "86:22:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "101:6:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "95:5:8"
},
"nodeType": "YulFunctionCall",
"src": "95:13:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "86:5:8"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "171:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "180:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "183:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "173:6:8"
},
"nodeType": "YulFunctionCall",
"src": "173:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "173:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "130:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "141:5:8"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "156:3:8",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "161:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "152:3:8"
},
"nodeType": "YulFunctionCall",
"src": "152:11:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "165:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "148:3:8"
},
"nodeType": "YulFunctionCall",
"src": "148:19:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "137:3:8"
},
"nodeType": "YulFunctionCall",
"src": "137:31:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "127:2:8"
},
"nodeType": "YulFunctionCall",
"src": "127:42:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "120:6:8"
},
"nodeType": "YulFunctionCall",
"src": "120:50:8"
},
"nodeType": "YulIf",
"src": "117:2:8"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "55:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "66:5:8",
"type": ""
}
],
"src": "14:179:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "330:350:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "377:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "386:6:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "394:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "379:6:8"
},
"nodeType": "YulFunctionCall",
"src": "379:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "379:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "351:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "360:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "347:3:8"
},
"nodeType": "YulFunctionCall",
"src": "347:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "372:3:8",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "343:3:8"
},
"nodeType": "YulFunctionCall",
"src": "343:33:8"
},
"nodeType": "YulIf",
"src": "340:2:8"
},
{
"nodeType": "YulAssignment",
"src": "412:52:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "454:9:8"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "422:31:8"
},
"nodeType": "YulFunctionCall",
"src": "422:42:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "412:6:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "473:61:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "519:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "530:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "515:3:8"
},
"nodeType": "YulFunctionCall",
"src": "515:18:8"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "483:31:8"
},
"nodeType": "YulFunctionCall",
"src": "483:51:8"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "473:6:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "543:61:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "589:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "600:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "585:3:8"
},
"nodeType": "YulFunctionCall",
"src": "585:18:8"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "553:31:8"
},
"nodeType": "YulFunctionCall",
"src": "553:51:8"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "543:6:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "613:61:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "659:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "670:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "655:3:8"
},
"nodeType": "YulFunctionCall",
"src": "655:18:8"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "623:31:8"
},
"nodeType": "YulFunctionCall",
"src": "623:51:8"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "613:6:8"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_addresst_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "272:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "283:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "295:6:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "303:6:8",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "311:6:8",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "319:6:8",
"type": ""
}
],
"src": "198:482:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "859:245:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "876:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "887:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "869:6:8"
},
"nodeType": "YulFunctionCall",
"src": "869:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "869:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "910:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "921:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "906:3:8"
},
"nodeType": "YulFunctionCall",
"src": "906:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "926:2:8",
"type": "",
"value": "55"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "899:6:8"
},
"nodeType": "YulFunctionCall",
"src": "899:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "899:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "949:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "960:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "945:3:8"
},
"nodeType": "YulFunctionCall",
"src": "945:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "965:34:8",
"type": "",
"value": "TreasuryVesterProxy::Cannot cons"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "938:6:8"
},
"nodeType": "YulFunctionCall",
"src": "938:62:8"
},
"nodeType": "YulExpressionStatement",
"src": "938:62:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1020:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1031:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1016:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1016:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "1036:25:8",
"type": "",
"value": "truct with zero address"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1009:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1009:53:8"
},
"nodeType": "YulExpressionStatement",
"src": "1009:53:8"
},
{
"nodeType": "YulAssignment",
"src": "1071:27:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1083:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1094:3:8",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1079:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1079:19:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1071:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_474255cdee1f3cf201cef1b214dd1d2931642d92c3e3ad25c8ac1ee0fa40b568__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "836:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "850:4:8",
"type": ""
}
],
"src": "685:419:8"
}
]
},
"contents": "{\n { }\n function abi_decode_t_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n value0 := abi_decode_t_address_fromMemory(headStart)\n value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n value2 := abi_decode_t_address_fromMemory(add(headStart, 64))\n value3 := abi_decode_t_address_fromMemory(add(headStart, 96))\n }\n function abi_encode_tuple_t_stringliteral_474255cdee1f3cf201cef1b214dd1d2931642d92c3e3ad25c8ac1ee0fa40b568__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 55)\n mstore(add(headStart, 64), \"TreasuryVesterProxy::Cannot cons\")\n mstore(add(headStart, 96), \"truct with zero address\")\n tail := add(headStart, 128)\n }\n}",
"id": 8,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b50604051620012b8380380620012b8833981016040819052620000349162000184565b620000486200004262000113565b62000117565b600180556001600160a01b038416158015906200006d57506001600160a01b03831615155b80156200008257506001600160a01b03821615155b80156200009757506001600160a01b03811615155b620000bf5760405162461bcd60e51b8152600401620000b690620001e0565b60405180910390fd5b600280546001600160a01b039586166001600160a01b03199182161790915560038054948616948216949094179093556005805492851692841692909217909155600480549190931691161790556200023d565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200017f57600080fd5b919050565b600080600080608085870312156200019a578384fd5b620001a58562000167565b9350620001b56020860162000167565b9250620001c56040860162000167565b9150620001d56060860162000167565b905092959194509250565b60208082526037908201527f547265617375727956657374657250726f78793a3a43616e6e6f7420636f6e7360408201527f74727563742077697468207a65726f2061646472657373000000000000000000606082015260800190565b61106b806200024d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063dfb89c3711610066578063dfb89c3714610164578063e1c7392a1461016c578063eea9f1ac14610174578063f2fde38b1461017c576100ea565b80638da5cb5b1461014c578063b57eb05114610154578063c65c3d951461015c576100ea565b806361d027b3116100c857806361d027b31461011d5780636d19e0ad14610125578063715018a61461013a578063841f2c3114610144576100ea565b8063150895db146100ef5780631fc8bc5d1461010d5780635f77567814610115575b600080fd5b6100f761018f565b6040516101049190610c5f565b60405180910390f35b6100f761019e565b6100f76101ad565b6100f76101bc565b61012d6101cb565b6040516101049190610f59565b6101426101d1565b005b61012d610225565b6100f761022b565b61012d61023a565b61012d610240565b610142610246565b6101426105aa565b61012d6108c1565b61014261018a366004610bd3565b6108c7565b6003546001600160a01b031681565b6004546001600160a01b031681565b6002546001600160a01b031681565b6005546001600160a01b031681565b60095481565b6101d9610938565b6001600160a01b03166101ea61022b565b6001600160a01b0316146102195760405162461bcd60e51b815260040161021090610e33565b60405180910390fd5b610223600061093c565b565b60065481565b6000546001600160a01b031690565b60085481565b60075481565b600554600160a01b900460ff1615156001146102745760405162461bcd60e51b815260040161021090610efc565b600354604080517f4e71d92d00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691634e71d92d91600480830192602092919082900301818787803b1580156102d357600080fd5b505af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b9190610c2b565b90506000811161032d5760405162461bcd60e51b815260040161021090610dd6565b61012c60075461033d9190610fea565b61036257683635c9adc5dea00000600a600082825461035c9190610f70565b90915550505b601e6007546103719190610fea565b61038f57600a54600960008282546103899190610f70565b90915550505b80600954111561039f5760098190555b6000600854600954116103b4576009546103b8565b6008545b90506000600954836103ca9190610f88565b600854909150156104705760006abe4064fbcc1d7ea6000000836006546103f19190610f70565b116103fc5782610414565b600654610414906abe4064fbcc1d7ea6000000610f88565b905080600660008282546104289190610f70565b9091555061043890508185610f88565b9350806008600082825461044c9190610f88565b909155505060055460025461046e916001600160a01b039182169116836109a4565b505b6abe4064fbcc1d7ea600000060065410156105715760006abe4064fbcc1d7ea6000000826006546104a19190610f70565b116104ac57816104c4565b6006546104c4906abe4064fbcc1d7ea6000000610f88565b9050801561056f5780600660008282546104de9190610f70565b909155506104ee90508185610f88565b600480546040517f286625510000000000000000000000000000000000000000000000000000000081529296506001600160a01b03169163286625519161053c918591620151809101610f62565b600060405180830381600087803b15801561055657600080fd5b505af115801561056a573d6000803e3d6000fd5b505050505b505b821561059057600254610590906001600160a01b031661dead856109a4565b600780549060006105a083610fcf565b9190505550505050565b6105b2610938565b6001600160a01b03166105c361022b565b6001600160a01b0316146105e95760405162461bcd60e51b815260040161021090610e33565b600354604080517f66d003ac000000000000000000000000000000000000000000000000000000008152905130926001600160a01b0316916366d003ac9160048083019260209291908290030181600087803b15801561064857600080fd5b505af115801561065c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106809190610bef565b6001600160a01b0316146106a65760405162461bcd60e51b815260040161021090610d1c565b6002546003546040516370a0823160e01b81526000926001600160a01b03908116926370a08231926106de9290911690600401610c5f565b60206040518083038186803b1580156106f657600080fd5b505afa15801561070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e9190610c2b565b6002546005546040516370a0823160e01b81529293506000926001600160a01b03928316926370a082319261076892911690600401610c5f565b60206040518083038186803b15801561078057600080fd5b505afa158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b89190610c2b565b90506107d0826b01bd05ee709aab645a000000610f88565b6006556107e8816a18d0bf423c03d8de000000610f88565b600855600254600480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363095ea7b39361083c93909116916000199101610c73565b602060405180830381600087803b15801561085657600080fd5b505af115801561086a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088e9190610c0b565b5050600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b17905550565b600a5481565b6108cf610938565b6001600160a01b03166108e061022b565b6001600160a01b0316146109065760405162461bcd60e51b815260040161021090610e33565b6001600160a01b03811661092c5760405162461bcd60e51b815260040161021090610cbf565b6109358161093c565b50565b3390565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a278363a9059cbb60e01b84846040516024016109c3929190610c73565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610a2c565b505050565b6000610a81826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610abb9092919063ffffffff16565b805190915015610a275780806020019051810190610a9f9190610c0b565b610a275760405162461bcd60e51b815260040161021090610e9f565b6060610aca8484600085610ad4565b90505b9392505050565b606082471015610af65760405162461bcd60e51b815260040161021090610d79565b610aff85610b94565b610b1b5760405162461bcd60e51b815260040161021090610e68565b600080866001600160a01b03168587604051610b379190610c43565b60006040518083038185875af1925050503d8060008114610b74576040519150601f19603f3d011682016040523d82523d6000602084013e610b79565b606091505b5091509150610b89828286610b9a565b979650505050505050565b3b151590565b60608315610ba9575081610acd565b825115610bb95782518084602001fd5b8160405162461bcd60e51b81526004016102109190610c8c565b600060208284031215610be4578081fd5b8135610acd81611020565b600060208284031215610c00578081fd5b8151610acd81611020565b600060208284031215610c1c578081fd5b81518015158114610acd578182fd5b600060208284031215610c3c578081fd5b5051919050565b60008251610c55818460208701610f9f565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6000602082528251806020840152610cab816040850160208701610f9f565b601f01601f19169190910160400192915050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526036908201527f547265617375727956657374657250726f78793a3a496e76616c69642074726560408201527f61737572792076657374657220726563697069656e7400000000000000000000606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60408201527f722063616c6c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f547265617375727956657374657250726f78793a3a4e6f7468696e672076657360408201527f7465640000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f547265617375727956657374657250726f78793a3a4e6f7420696e697469616c60408201527f697a656400000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b918252602082015260400190565b60008219821115610f8357610f8361100a565b500190565b600082821015610f9a57610f9a61100a565b500390565b60005b83811015610fba578181015183820152602001610fa2565b83811115610fc9576000848401525b50505050565b6000600019821415610fe357610fe361100a565b5060010190565b60008261100557634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461093557600080fdfea26469706673582212209161562885fecacd9bef165de33897b85fc8e3937870e7c8e9a070d7418ab0ba64736f6c63430008000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x12B8 CODESIZE SUB DUP1 PUSH3 0x12B8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x184 JUMP JUMPDEST PUSH3 0x48 PUSH3 0x42 PUSH3 0x113 JUMP JUMPDEST PUSH3 0x117 JUMP JUMPDEST PUSH1 0x1 DUP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x6D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x82 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x97 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH3 0xBF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB6 SWAP1 PUSH3 0x1E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP5 DUP7 AND SWAP5 DUP3 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE PUSH1 0x5 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH3 0x23D JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x19A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH3 0x1A5 DUP6 PUSH3 0x167 JUMP JUMPDEST SWAP4 POP PUSH3 0x1B5 PUSH1 0x20 DUP7 ADD PUSH3 0x167 JUMP JUMPDEST SWAP3 POP PUSH3 0x1C5 PUSH1 0x40 DUP7 ADD PUSH3 0x167 JUMP JUMPDEST SWAP2 POP PUSH3 0x1D5 PUSH1 0x60 DUP7 ADD PUSH3 0x167 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x547265617375727956657374657250726F78793A3A43616E6E6F7420636F6E73 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74727563742077697468207A65726F2061646472657373000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH2 0x106B DUP1 PUSH3 0x24D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDFB89C37 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDFB89C37 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0xE1C7392A EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0xEEA9F1AC EQ PUSH2 0x174 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x17C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0xB57EB051 EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0xC65C3D95 EQ PUSH2 0x15C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x61D027B3 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x61D027B3 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0x6D19E0AD EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x841F2C31 EQ PUSH2 0x144 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x150895DB EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x1FC8BC5D EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x5F775678 EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x18F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0xC5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x19E JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x1AD JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x1BC JUMP JUMPDEST PUSH2 0x12D PUSH2 0x1CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0xF59 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x1D1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12D PUSH2 0x225 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x22B JUMP JUMPDEST PUSH2 0x12D PUSH2 0x23A JUMP JUMPDEST PUSH2 0x12D PUSH2 0x240 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x246 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x12D PUSH2 0x8C1 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x938 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EA PUSH2 0x22B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x219 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xE33 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x223 PUSH1 0x0 PUSH2 0x93C JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x274 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xEFC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x4E71D92D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x4E71D92D SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x30B SWAP2 SWAP1 PUSH2 0xC2B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x32D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x12C PUSH1 0x7 SLOAD PUSH2 0x33D SWAP2 SWAP1 PUSH2 0xFEA JUMP JUMPDEST PUSH2 0x362 JUMPI PUSH9 0x3635C9ADC5DEA00000 PUSH1 0xA PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x35C SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH1 0x1E PUSH1 0x7 SLOAD PUSH2 0x371 SWAP2 SWAP1 PUSH2 0xFEA JUMP JUMPDEST PUSH2 0x38F JUMPI PUSH1 0xA SLOAD PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x389 SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST DUP1 PUSH1 0x9 SLOAD GT ISZERO PUSH2 0x39F JUMPI PUSH1 0x9 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD GT PUSH2 0x3B4 JUMPI PUSH1 0x9 SLOAD PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x9 SLOAD DUP4 PUSH2 0x3CA SWAP2 SWAP1 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x8 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 PUSH11 0xBE4064FBCC1D7EA6000000 DUP4 PUSH1 0x6 SLOAD PUSH2 0x3F1 SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST GT PUSH2 0x3FC JUMPI DUP3 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x414 SWAP1 PUSH11 0xBE4064FBCC1D7EA6000000 PUSH2 0xF88 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x428 SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x438 SWAP1 POP DUP2 DUP6 PUSH2 0xF88 JUMP JUMPDEST SWAP4 POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x44C SWAP2 SWAP1 PUSH2 0xF88 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x5 SLOAD PUSH1 0x2 SLOAD PUSH2 0x46E SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x9A4 JUMP JUMPDEST POP JUMPDEST PUSH11 0xBE4064FBCC1D7EA6000000 PUSH1 0x6 SLOAD LT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 PUSH11 0xBE4064FBCC1D7EA6000000 DUP3 PUSH1 0x6 SLOAD PUSH2 0x4A1 SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST GT PUSH2 0x4AC JUMPI DUP2 PUSH2 0x4C4 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x4C4 SWAP1 PUSH11 0xBE4064FBCC1D7EA6000000 PUSH2 0xF88 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x56F JUMPI DUP1 PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x4DE SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x4EE SWAP1 POP DUP2 DUP6 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2866255100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP7 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x28662551 SWAP2 PUSH2 0x53C SWAP2 DUP6 SWAP2 PUSH3 0x15180 SWAP2 ADD PUSH2 0xF62 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x56A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST DUP3 ISZERO PUSH2 0x590 JUMPI PUSH1 0x2 SLOAD PUSH2 0x590 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDEAD DUP6 PUSH2 0x9A4 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x5A0 DUP4 PUSH2 0xFCF JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP POP POP POP JUMP JUMPDEST PUSH2 0x5B2 PUSH2 0x938 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5C3 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xE33 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x66D003AC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD ADDRESS SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x66D003AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x648 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x65C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x680 SWAP2 SWAP1 PUSH2 0xBEF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x6A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 PUSH4 0x70A08231 SWAP3 PUSH2 0x6DE SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0xC5F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x70A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x72E SWAP2 SWAP1 PUSH2 0xC2B JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x70A08231 SWAP3 PUSH2 0x768 SWAP3 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0xC5F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x794 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7B8 SWAP2 SWAP1 PUSH2 0xC2B JUMP JUMPDEST SWAP1 POP PUSH2 0x7D0 DUP3 PUSH12 0x1BD05EE709AAB645A000000 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x6 SSTORE PUSH2 0x7E8 DUP2 PUSH11 0x18D0BF423C03D8DE000000 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x2 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x95EA7B3 SWAP4 PUSH2 0x83C SWAP4 SWAP1 SWAP2 AND SWAP2 PUSH1 0x0 NOT SWAP2 ADD PUSH2 0xC73 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x856 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x86A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x88E SWAP2 SWAP1 PUSH2 0xC0B JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH2 0x8CF PUSH2 0x938 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8E0 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x906 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xE33 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x92C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x935 DUP2 PUSH2 0x93C JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xA27 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x9C3 SWAP3 SWAP2 SWAP1 PUSH2 0xC73 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xA2C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA81 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xABB SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xA27 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xA9F SWAP2 SWAP1 PUSH2 0xC0B JUMP JUMPDEST PUSH2 0xA27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xE9F JUMP JUMPDEST PUSH1 0x60 PUSH2 0xACA DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0xAD4 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0xAF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xD79 JUMP JUMPDEST PUSH2 0xAFF DUP6 PUSH2 0xB94 JUMP JUMPDEST PUSH2 0xB1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xE68 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0xB37 SWAP2 SWAP1 PUSH2 0xC43 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xB79 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xB89 DUP3 DUP3 DUP7 PUSH2 0xB9A JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xBA9 JUMPI POP DUP2 PUSH2 0xACD JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0xBB9 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP2 SWAP1 PUSH2 0xC8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBE4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xACD DUP2 PUSH2 0x1020 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC00 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xACD DUP2 PUSH2 0x1020 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC1C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xACD JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC3C JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC55 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xF9F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xCAB DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xF9F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x547265617375727956657374657250726F78793A3A496E76616C696420747265 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x61737572792076657374657220726563697069656E7400000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x547265617375727956657374657250726F78793A3A4E6F7468696E6720766573 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7465640000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1D SWAP1 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x547265617375727956657374657250726F78793A3A4E6F7420696E697469616C PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697A656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xF83 JUMPI PUSH2 0xF83 PUSH2 0x100A JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xF9A JUMPI PUSH2 0xF9A PUSH2 0x100A JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFA2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0xFE3 JUMPI PUSH2 0xFE3 PUSH2 0x100A JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1005 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x935 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 PUSH2 0x5628 DUP6 INVALID 0xCA 0xCD SWAP12 0xEF AND 0x5D 0xE3 CODESIZE SWAP8 0xB8 0x5F 0xC8 0xE3 SWAP4 PUSH25 0x70E7C8E9A070D7418AB0BA64736F6C63430008000033000000 ",
"sourceMap": "545:4218:7:-:0;;;1341:507;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;867:23:0;877:12;:10;:12::i;:::-;867:9;:23::i;:::-;1637:1:1;1742:22;;-1:-1:-1;;;;;1459:18:7;;;;;;:64;;-1:-1:-1;;;;;;1494:29:7;;;;1459:64;:104;;;;-1:-1:-1;;;;;;1540:23:7;;;;1459:104;:140;;;;-1:-1:-1;;;;;;1580:19:7;;;;1459:140;1437:245;;;;-1:-1:-1;;;1437:245:7;;;;;;;:::i;:::-;;;;;;;;;1695:3;:18;;-1:-1:-1;;;;;1695:18:7;;;-1:-1:-1;;;;;;1695:18:7;;;;;;;1724:14;:49;;;;;;;;;;;;;;;1784:8;:20;;;;;;;;;;;;;;;1815:4;:25;;;;;;;;;;;545:4218;;587:96:5;666:10;587:96;:::o;2041:169:0:-;2096:16;2115:6;;-1:-1:-1;;;;;2131:17:0;;;-1:-1:-1;;;;;;2131:17:0;;;;;;2163:40;;2115:6;;;;;;;2163:40;;2096:16;2163:40;2041:169;;:::o;14:179:8:-;95:13;;-1:-1:-1;;;;;137:31:8;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:482::-;;;;;372:3;360:9;351:7;347:23;343:33;340:2;;;394:6;386;379:22;340:2;422:42;454:9;422:42;:::i;:::-;412:52;;483:51;530:2;519:9;515:18;483:51;:::i;:::-;473:61;;553:51;600:2;589:9;585:18;553:51;:::i;:::-;543:61;;623:51;670:2;659:9;655:18;623:51;:::i;:::-;613:61;;330:350;;;;;;;:::o;685:419::-;887:2;869:21;;;926:2;906:18;;;899:30;965:34;960:2;945:18;;938:62;1036:25;1031:2;1016:18;;1009:53;1094:3;1079:19;;859:245::o;:::-;545:4218:7;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:7893:8",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:8",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "84:189:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "130:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "139:6:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "147:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "132:6:8"
},
"nodeType": "YulFunctionCall",
"src": "132:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "132:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "105:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "114:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "101:3:8"
},
"nodeType": "YulFunctionCall",
"src": "101:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "126:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "97:3:8"
},
"nodeType": "YulFunctionCall",
"src": "97:32:8"
},
"nodeType": "YulIf",
"src": "94:2:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "165:36:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "191:9:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "178:12:8"
},
"nodeType": "YulFunctionCall",
"src": "178:23:8"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "169:5:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "237:5:8"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "210:26:8"
},
"nodeType": "YulFunctionCall",
"src": "210:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "210:33:8"
},
{
"nodeType": "YulAssignment",
"src": "252:15:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "262:5:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "252:6:8"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "50:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "61:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "73:6:8",
"type": ""
}
],
"src": "14:259:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "359:182:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "405:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "414:6:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "422:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "407:6:8"
},
"nodeType": "YulFunctionCall",
"src": "407:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "407:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "380:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "389:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "376:3:8"
},
"nodeType": "YulFunctionCall",
"src": "376:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "372:3:8"
},
"nodeType": "YulFunctionCall",
"src": "372:32:8"
},
"nodeType": "YulIf",
"src": "369:2:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "440:29:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "459:9:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "453:5:8"
},
"nodeType": "YulFunctionCall",
"src": "453:16:8"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "444:5:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "505:5:8"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "478:26:8"
},
"nodeType": "YulFunctionCall",
"src": "478:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "478:33:8"
},
{
"nodeType": "YulAssignment",
"src": "520:15:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "530:5:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "520:6:8"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "325:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "336:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "348:6:8",
"type": ""
}
],
"src": "278:263:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "624:219:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "670:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "679:6:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "687:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "672:6:8"
},
"nodeType": "YulFunctionCall",
"src": "672:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "672:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "645:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "654:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "641:3:8"
},
"nodeType": "YulFunctionCall",
"src": "641:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "666:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "637:3:8"
},
"nodeType": "YulFunctionCall",
"src": "637:32:8"
},
"nodeType": "YulIf",
"src": "634:2:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "705:29:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "724:9:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "718:5:8"
},
"nodeType": "YulFunctionCall",
"src": "718:16:8"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "709:5:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "787:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "796:6:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "804:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "789:6:8"
},
"nodeType": "YulFunctionCall",
"src": "789:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "789:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "756:5:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "777:5:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "770:6:8"
},
"nodeType": "YulFunctionCall",
"src": "770:13:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "763:6:8"
},
"nodeType": "YulFunctionCall",
"src": "763:21:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "753:2:8"
},
"nodeType": "YulFunctionCall",
"src": "753:32:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "746:6:8"
},
"nodeType": "YulFunctionCall",
"src": "746:40:8"
},
"nodeType": "YulIf",
"src": "743:2:8"
},
{
"nodeType": "YulAssignment",
"src": "822:15:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "832:5:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "822:6:8"
}
]
}
]
},
"name": "abi_decode_tuple_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "590:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "601:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "613:6:8",
"type": ""
}
],
"src": "546:297:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "929:113:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "975:26:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "984:6:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "992:6:8"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "977:6:8"
},
"nodeType": "YulFunctionCall",
"src": "977:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "977:22:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "950:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "959:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "946:3:8"
},
"nodeType": "YulFunctionCall",
"src": "946:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "971:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "942:3:8"
},
"nodeType": "YulFunctionCall",
"src": "942:32:8"
},
"nodeType": "YulIf",
"src": "939:2:8"
},
{
"nodeType": "YulAssignment",
"src": "1010:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1026:9:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1020:5:8"
},
"nodeType": "YulFunctionCall",
"src": "1020:16:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1010:6:8"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "895:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "906:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "918:6:8",
"type": ""
}
],
"src": "848:194:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1184:137:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1194:27:8",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1214:6:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1208:5:8"
},
"nodeType": "YulFunctionCall",
"src": "1208:13:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1198:6:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1256:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1264:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1252:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1252:17:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1271:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1276:6:8"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "1230:21:8"
},
"nodeType": "YulFunctionCall",
"src": "1230:53:8"
},
"nodeType": "YulExpressionStatement",
"src": "1230:53:8"
},
{
"nodeType": "YulAssignment",
"src": "1292:23:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1303:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1308:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1299:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1299:16:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1292:3:8"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1160:3:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1165:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1176:3:8",
"type": ""
}
],
"src": "1047:274:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1427:125:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1437:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1449:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1460:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1445:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1445:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1437:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1479:9:8"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1494:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1502:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1490:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1490:55:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1472:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1472:74:8"
},
"nodeType": "YulExpressionStatement",
"src": "1472:74:8"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1396:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1407:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1418:4:8",
"type": ""
}
],
"src": "1326:226:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1686:168:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1696:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1708:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1719:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1704:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1704:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1696:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1738:9:8"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1753:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1761:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1749:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1749:55:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1731:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1731:74:8"
},
"nodeType": "YulExpressionStatement",
"src": "1731:74:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1825:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1836:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1821:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1821:18:8"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1841:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1814:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1814:34:8"
},
"nodeType": "YulExpressionStatement",
"src": "1814:34:8"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1647:9:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1658:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1666:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1677:4:8",
"type": ""
}
],
"src": "1557:297:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1974:125:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1984:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1996:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2007:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1992:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1992:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1984:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2026:9:8"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2041:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2049:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2037:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2037:55:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2019:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2019:74:8"
},
"nodeType": "YulExpressionStatement",
"src": "2019:74:8"
}
]
},
"name": "abi_encode_tuple_t_contract$_IERC20_$221__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1943:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1954:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1965:4:8",
"type": ""
}
],
"src": "1859:240:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2225:125:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2235:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2247:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2258:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2243:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2243:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2235:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2277:9:8"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2292:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2300:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2288:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2288:55:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2270:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2270:74:8"
},
"nodeType": "YulExpressionStatement",
"src": "2270:74:8"
}
]
},
"name": "abi_encode_tuple_t_contract$_IMiniChefV2_$1120__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2194:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2205:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2216:4:8",
"type": ""
}
],
"src": "2104:246:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2480:125:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2490:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2502:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2513:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2498:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2498:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2490:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2532:9:8"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2547:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2555:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2543:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2543:55:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2525:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2525:74:8"
},
"nodeType": "YulExpressionStatement",
"src": "2525:74:8"
}
]
},
"name": "abi_encode_tuple_t_contract$_ITreasuryVester_$1112__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2449:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2460:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2471:4:8",
"type": ""
}
],
"src": "2355:250:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2731:262:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2748:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2759:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2741:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2741:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "2741:21:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2771:27:8",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2791:6:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2785:5:8"
},
"nodeType": "YulFunctionCall",
"src": "2785:13:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2775:6:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2818:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2829:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2814:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2814:18:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2834:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2807:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2807:34:8"
},
"nodeType": "YulExpressionStatement",
"src": "2807:34:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2876:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2884:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2872:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2872:15:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2893:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2904:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2889:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2889:18:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2909:6:8"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "2850:21:8"
},
"nodeType": "YulFunctionCall",
"src": "2850:66:8"
},
"nodeType": "YulExpressionStatement",
"src": "2850:66:8"
},
{
"nodeType": "YulAssignment",
"src": "2925:62:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2941:9:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2960:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2968:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2956:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2956:15:8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2977:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2973:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2973:7:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2952:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2952:29:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2937:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2937:45:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2984:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2933:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2933:54:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2925:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2700:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2711:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2722:4:8",
"type": ""
}
],
"src": "2610:383:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3172:228:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3189:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3200:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3182:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3182:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "3182:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3223:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3234:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3219:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3219:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3239:2:8",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3212:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3212:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "3212:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3262:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3273:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3258:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3258:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "3278:34:8",
"type": "",
"value": "Ownable: new owner is the zero a"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3251:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3251:62:8"
},
"nodeType": "YulExpressionStatement",
"src": "3251:62:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3333:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3344:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3329:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3329:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "3349:8:8",
"type": "",
"value": "ddress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3322:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3322:36:8"
},
"nodeType": "YulExpressionStatement",
"src": "3322:36:8"
},
{
"nodeType": "YulAssignment",
"src": "3367:27:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3379:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3390:3:8",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3375:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3375:19:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3367:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3149:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3163:4:8",
"type": ""
}
],
"src": "2998:402:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3579:244:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3596:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3607:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3589:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3589:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "3589:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3630:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3641:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3626:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3626:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3646:2:8",
"type": "",
"value": "54"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3619:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3619:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "3619:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3669:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3680:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3665:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3665:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "3685:34:8",
"type": "",
"value": "TreasuryVesterProxy::Invalid tre"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3658:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3658:62:8"
},
"nodeType": "YulExpressionStatement",
"src": "3658:62:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3740:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3751:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3736:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3736:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "3756:24:8",
"type": "",
"value": "asury vester recipient"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3729:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3729:52:8"
},
"nodeType": "YulExpressionStatement",
"src": "3729:52:8"
},
{
"nodeType": "YulAssignment",
"src": "3790:27:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3802:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3813:3:8",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3798:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3798:19:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3790:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_2ccf417ea0a8e7f976b20994efdee03b74a6dad64b71f5de57c99a01d0e1ffe0__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3556:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3570:4:8",
"type": ""
}
],
"src": "3405:418:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4002:228:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4019:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4030:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4012:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4012:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "4012:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4053:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4064:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4049:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4049:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4069:2:8",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4042:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4042:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "4042:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4092:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4103:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4088:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4088:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "4108:34:8",
"type": "",
"value": "Address: insufficient balance fo"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4081:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4081:62:8"
},
"nodeType": "YulExpressionStatement",
"src": "4081:62:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4163:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4174:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4159:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4159:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "4179:8:8",
"type": "",
"value": "r call"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4152:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4152:36:8"
},
"nodeType": "YulExpressionStatement",
"src": "4152:36:8"
},
{
"nodeType": "YulAssignment",
"src": "4197:27:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4209:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4220:3:8",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4205:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4205:19:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4197:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3979:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3993:4:8",
"type": ""
}
],
"src": "3828:402:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4409:225:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4426:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4437:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4419:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4419:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "4419:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4460:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4471:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4456:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4456:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4476:2:8",
"type": "",
"value": "35"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4449:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4449:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "4449:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4499:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4510:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4495:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4495:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "4515:34:8",
"type": "",
"value": "TreasuryVesterProxy::Nothing ves"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4488:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4488:62:8"
},
"nodeType": "YulExpressionStatement",
"src": "4488:62:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4570:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4581:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4566:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4566:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "4586:5:8",
"type": "",
"value": "ted"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4559:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4559:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "4559:33:8"
},
{
"nodeType": "YulAssignment",
"src": "4601:27:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4613:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4624:3:8",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4609:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4609:19:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4601:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_957f7ceabbcc153e275d538d7e6f3da06adb3c2f0bf09e68a6764d3f58cdd21e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4386:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4400:4:8",
"type": ""
}
],
"src": "4235:399:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4813:182:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4830:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4841:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4823:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4823:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "4823:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4864:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4875:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4860:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4860:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4880:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4853:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4853:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "4853:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4903:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4914:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4899:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4899:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "4919:34:8",
"type": "",
"value": "Ownable: caller is not the owner"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4892:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4892:62:8"
},
"nodeType": "YulExpressionStatement",
"src": "4892:62:8"
},
{
"nodeType": "YulAssignment",
"src": "4963:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4975:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4986:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4971:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4971:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4963:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4790:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4804:4:8",
"type": ""
}
],
"src": "4639:356:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5174:179:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5191:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5202:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5184:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5184:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "5184:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5225:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5236:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5221:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5221:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5241:2:8",
"type": "",
"value": "29"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5214:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5214:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "5214:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5264:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5275:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5260:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5260:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5280:31:8",
"type": "",
"value": "Address: call to non-contract"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5253:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5253:59:8"
},
"nodeType": "YulExpressionStatement",
"src": "5253:59:8"
},
{
"nodeType": "YulAssignment",
"src": "5321:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5333:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5344:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5329:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5329:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5321:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5151:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5165:4:8",
"type": ""
}
],
"src": "5000:353:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5532:232:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5549:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5560:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5542:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5542:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "5542:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5583:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5594:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5579:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5579:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5599:2:8",
"type": "",
"value": "42"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5572:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5572:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "5572:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5622:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5633:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5618:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5618:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5638:34:8",
"type": "",
"value": "SafeERC20: ERC20 operation did n"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5611:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5611:62:8"
},
"nodeType": "YulExpressionStatement",
"src": "5611:62:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5693:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5704:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5689:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5689:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "5709:12:8",
"type": "",
"value": "ot succeed"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5682:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5682:40:8"
},
"nodeType": "YulExpressionStatement",
"src": "5682:40:8"
},
{
"nodeType": "YulAssignment",
"src": "5731:27:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5743:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5754:3:8",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5739:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5739:19:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5731:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5509:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5523:4:8",
"type": ""
}
],
"src": "5358:406:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5943:226:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5960:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5971:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5953:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5953:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "5953:21:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5994:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6005:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5990:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5990:18:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6010:2:8",
"type": "",
"value": "36"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5983:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5983:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "5983:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6033:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6044:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6029:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6029:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6049:34:8",
"type": "",
"value": "TreasuryVesterProxy::Not initial"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6022:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6022:62:8"
},
"nodeType": "YulExpressionStatement",
"src": "6022:62:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6104:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6115:2:8",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6100:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6100:18:8"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6120:6:8",
"type": "",
"value": "ized"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6093:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6093:34:8"
},
"nodeType": "YulExpressionStatement",
"src": "6093:34:8"
},
{
"nodeType": "YulAssignment",
"src": "6136:27:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6148:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6159:3:8",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6144:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6144:19:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6136:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_e23873d41ae59bf2a98692a32c9fa2824f103d7cfb9584ebf20c2eea259e7c2a__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5920:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5934:4:8",
"type": ""
}
],
"src": "5769:400:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6275:76:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6285:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6297:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6308:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6293:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6293:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6285:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6327:9:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6338:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6320:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6320:25:8"
},
"nodeType": "YulExpressionStatement",
"src": "6320:25:8"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6244:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6255:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6266:4:8",
"type": ""
}
],
"src": "6174:177:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6485:119:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6495:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6507:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6518:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6503:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6503:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6495:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6537:9:8"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6548:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6530:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6530:25:8"
},
"nodeType": "YulExpressionStatement",
"src": "6530:25:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6575:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6586:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6571:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6571:18:8"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "6591:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6564:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6564:34:8"
},
"nodeType": "YulExpressionStatement",
"src": "6564:34:8"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6446:9:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "6457:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6465:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6476:4:8",
"type": ""
}
],
"src": "6356:248:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6657:80:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6684:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "6686:16:8"
},
"nodeType": "YulFunctionCall",
"src": "6686:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "6686:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6673:1:8"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6680:1:8"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "6676:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6676:6:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6670:2:8"
},
"nodeType": "YulFunctionCall",
"src": "6670:13:8"
},
"nodeType": "YulIf",
"src": "6667:2:8"
},
{
"nodeType": "YulAssignment",
"src": "6715:16:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6726:1:8"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6729:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6722:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6722:9:8"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "6715:3:8"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "6640:1:8",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "6643:1:8",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "6649:3:8",
"type": ""
}
],
"src": "6609:128:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6791:76:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6813:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "6815:16:8"
},
"nodeType": "YulFunctionCall",
"src": "6815:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "6815:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6807:1:8"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6810:1:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "6804:2:8"
},
"nodeType": "YulFunctionCall",
"src": "6804:8:8"
},
"nodeType": "YulIf",
"src": "6801:2:8"
},
{
"nodeType": "YulAssignment",
"src": "6844:17:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6856:1:8"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6859:1:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6852:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6852:9:8"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "6844:4:8"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "6773:1:8",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "6776:1:8",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "6782:4:8",
"type": ""
}
],
"src": "6742:125:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6925:205:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6935:10:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6944:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "6939:1:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7004:63:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7029:3:8"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7034:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7025:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7025:11:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7048:3:8"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7053:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7044:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7044:11:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "7038:5:8"
},
"nodeType": "YulFunctionCall",
"src": "7038:18:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7018:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7018:39:8"
},
"nodeType": "YulExpressionStatement",
"src": "7018:39:8"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "6965:1:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6968:6:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "6962:2:8"
},
"nodeType": "YulFunctionCall",
"src": "6962:13:8"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "6976:19:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6978:15:8",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "6987:1:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6990:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6983:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6983:10:8"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "6978:1:8"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "6958:3:8",
"statements": []
},
"src": "6954:113:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7093:31:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7106:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7111:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7102:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7102:16:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7120:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7095:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7095:27:8"
},
"nodeType": "YulExpressionStatement",
"src": "7095:27:8"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7082:1:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7085:6:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7079:2:8"
},
"nodeType": "YulFunctionCall",
"src": "7079:13:8"
},
"nodeType": "YulIf",
"src": "7076:2:8"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "6903:3:8",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "6908:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6913:6:8",
"type": ""
}
],
"src": "6872:258:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7182:88:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "7213:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "7215:16:8"
},
"nodeType": "YulFunctionCall",
"src": "7215:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "7215:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7198:5:8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7209:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "7205:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7205:6:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "7195:2:8"
},
"nodeType": "YulFunctionCall",
"src": "7195:17:8"
},
"nodeType": "YulIf",
"src": "7192:2:8"
},
{
"nodeType": "YulAssignment",
"src": "7244:20:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7255:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7262:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7251:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7251:13:8"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "7244:3:8"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7164:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "7174:3:8",
"type": ""
}
],
"src": "7135:135:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7313:228:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "7344:168:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "7365:1:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7368:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7358:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7358:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "7358:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7466:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7469:4:8",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7459:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7459:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "7459:15:8"
},
{
"expression": {
"arguments": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "7494:1:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7497:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "7487:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7487:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "7487:15:8"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7333:1:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "7326:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7326:9:8"
},
"nodeType": "YulIf",
"src": "7323:2:8"
},
{
"nodeType": "YulAssignment",
"src": "7521:14:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7530:1:8"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7533:1:8"
}
],
"functionName": {
"name": "mod",
"nodeType": "YulIdentifier",
"src": "7526:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7526:9:8"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "7521:1:8"
}
]
}
]
},
"name": "mod_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "7298:1:8",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "7301:1:8",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "7307:1:8",
"type": ""
}
],
"src": "7275:266:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7578:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7595:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7598:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7588:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7588:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "7588:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7692:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7695:4:8",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7685:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7685:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "7685:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7716:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7719:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "7709:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7709:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "7709:15:8"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "7546:184:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7782:109:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "7869:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7878:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7881:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "7871:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7871:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "7871:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7805:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7816:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7823:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7812:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7812:54:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "7802:2:8"
},
"nodeType": "YulFunctionCall",
"src": "7802:65:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "7795:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7795:73:8"
},
"nodeType": "YulIf",
"src": "7792:2:8"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7771:5:8",
"type": ""
}
],
"src": "7735:156:8"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := mload(headStart)\n validator_revert_t_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(value0, value0) }\n value0 := value\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_contract$_IERC20_$221__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_contract$_IMiniChefV2_$1120__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_contract$_ITreasuryVester_$1112__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_2ccf417ea0a8e7f976b20994efdee03b74a6dad64b71f5de57c99a01d0e1ffe0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 54)\n mstore(add(headStart, 64), \"TreasuryVesterProxy::Invalid tre\")\n mstore(add(headStart, 96), \"asury vester recipient\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_957f7ceabbcc153e275d538d7e6f3da06adb3c2f0bf09e68a6764d3f58cdd21e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"TreasuryVesterProxy::Nothing ves\")\n mstore(add(headStart, 96), \"ted\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n mstore(add(headStart, 96), \"ot succeed\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_e23873d41ae59bf2a98692a32c9fa2824f103d7cfb9584ebf20c2eea259e7c2a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"TreasuryVesterProxy::Not initial\")\n mstore(add(headStart, 96), \"ized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function copy_memory_to_memory(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length) { mstore(add(dst, length), 0) }\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(r, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(r, 0x24)\n }\n r := mod(x, y)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function validator_revert_t_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n}",
"id": 8,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063dfb89c3711610066578063dfb89c3714610164578063e1c7392a1461016c578063eea9f1ac14610174578063f2fde38b1461017c576100ea565b80638da5cb5b1461014c578063b57eb05114610154578063c65c3d951461015c576100ea565b806361d027b3116100c857806361d027b31461011d5780636d19e0ad14610125578063715018a61461013a578063841f2c3114610144576100ea565b8063150895db146100ef5780631fc8bc5d1461010d5780635f77567814610115575b600080fd5b6100f761018f565b6040516101049190610c5f565b60405180910390f35b6100f761019e565b6100f76101ad565b6100f76101bc565b61012d6101cb565b6040516101049190610f59565b6101426101d1565b005b61012d610225565b6100f761022b565b61012d61023a565b61012d610240565b610142610246565b6101426105aa565b61012d6108c1565b61014261018a366004610bd3565b6108c7565b6003546001600160a01b031681565b6004546001600160a01b031681565b6002546001600160a01b031681565b6005546001600160a01b031681565b60095481565b6101d9610938565b6001600160a01b03166101ea61022b565b6001600160a01b0316146102195760405162461bcd60e51b815260040161021090610e33565b60405180910390fd5b610223600061093c565b565b60065481565b6000546001600160a01b031690565b60085481565b60075481565b600554600160a01b900460ff1615156001146102745760405162461bcd60e51b815260040161021090610efc565b600354604080517f4e71d92d00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691634e71d92d91600480830192602092919082900301818787803b1580156102d357600080fd5b505af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b9190610c2b565b90506000811161032d5760405162461bcd60e51b815260040161021090610dd6565b61012c60075461033d9190610fea565b61036257683635c9adc5dea00000600a600082825461035c9190610f70565b90915550505b601e6007546103719190610fea565b61038f57600a54600960008282546103899190610f70565b90915550505b80600954111561039f5760098190555b6000600854600954116103b4576009546103b8565b6008545b90506000600954836103ca9190610f88565b600854909150156104705760006abe4064fbcc1d7ea6000000836006546103f19190610f70565b116103fc5782610414565b600654610414906abe4064fbcc1d7ea6000000610f88565b905080600660008282546104289190610f70565b9091555061043890508185610f88565b9350806008600082825461044c9190610f88565b909155505060055460025461046e916001600160a01b039182169116836109a4565b505b6abe4064fbcc1d7ea600000060065410156105715760006abe4064fbcc1d7ea6000000826006546104a19190610f70565b116104ac57816104c4565b6006546104c4906abe4064fbcc1d7ea6000000610f88565b9050801561056f5780600660008282546104de9190610f70565b909155506104ee90508185610f88565b600480546040517f286625510000000000000000000000000000000000000000000000000000000081529296506001600160a01b03169163286625519161053c918591620151809101610f62565b600060405180830381600087803b15801561055657600080fd5b505af115801561056a573d6000803e3d6000fd5b505050505b505b821561059057600254610590906001600160a01b031661dead856109a4565b600780549060006105a083610fcf565b9190505550505050565b6105b2610938565b6001600160a01b03166105c361022b565b6001600160a01b0316146105e95760405162461bcd60e51b815260040161021090610e33565b600354604080517f66d003ac000000000000000000000000000000000000000000000000000000008152905130926001600160a01b0316916366d003ac9160048083019260209291908290030181600087803b15801561064857600080fd5b505af115801561065c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106809190610bef565b6001600160a01b0316146106a65760405162461bcd60e51b815260040161021090610d1c565b6002546003546040516370a0823160e01b81526000926001600160a01b03908116926370a08231926106de9290911690600401610c5f565b60206040518083038186803b1580156106f657600080fd5b505afa15801561070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e9190610c2b565b6002546005546040516370a0823160e01b81529293506000926001600160a01b03928316926370a082319261076892911690600401610c5f565b60206040518083038186803b15801561078057600080fd5b505afa158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b89190610c2b565b90506107d0826b01bd05ee709aab645a000000610f88565b6006556107e8816a18d0bf423c03d8de000000610f88565b600855600254600480546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039384169363095ea7b39361083c93909116916000199101610c73565b602060405180830381600087803b15801561085657600080fd5b505af115801561086a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088e9190610c0b565b5050600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b17905550565b600a5481565b6108cf610938565b6001600160a01b03166108e061022b565b6001600160a01b0316146109065760405162461bcd60e51b815260040161021090610e33565b6001600160a01b03811661092c5760405162461bcd60e51b815260040161021090610cbf565b6109358161093c565b50565b3390565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a278363a9059cbb60e01b84846040516024016109c3929190610c73565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610a2c565b505050565b6000610a81826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610abb9092919063ffffffff16565b805190915015610a275780806020019051810190610a9f9190610c0b565b610a275760405162461bcd60e51b815260040161021090610e9f565b6060610aca8484600085610ad4565b90505b9392505050565b606082471015610af65760405162461bcd60e51b815260040161021090610d79565b610aff85610b94565b610b1b5760405162461bcd60e51b815260040161021090610e68565b600080866001600160a01b03168587604051610b379190610c43565b60006040518083038185875af1925050503d8060008114610b74576040519150601f19603f3d011682016040523d82523d6000602084013e610b79565b606091505b5091509150610b89828286610b9a565b979650505050505050565b3b151590565b60608315610ba9575081610acd565b825115610bb95782518084602001fd5b8160405162461bcd60e51b81526004016102109190610c8c565b600060208284031215610be4578081fd5b8135610acd81611020565b600060208284031215610c00578081fd5b8151610acd81611020565b600060208284031215610c1c578081fd5b81518015158114610acd578182fd5b600060208284031215610c3c578081fd5b5051919050565b60008251610c55818460208701610f9f565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6000602082528251806020840152610cab816040850160208701610f9f565b601f01601f19169190910160400192915050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526036908201527f547265617375727956657374657250726f78793a3a496e76616c69642074726560408201527f61737572792076657374657220726563697069656e7400000000000000000000606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60408201527f722063616c6c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f547265617375727956657374657250726f78793a3a4e6f7468696e672076657360408201527f7465640000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f547265617375727956657374657250726f78793a3a4e6f7420696e697469616c60408201527f697a656400000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b918252602082015260400190565b60008219821115610f8357610f8361100a565b500190565b600082821015610f9a57610f9a61100a565b500390565b60005b83811015610fba578181015183820152602001610fa2565b83811115610fc9576000848401525b50505050565b6000600019821415610fe357610fe361100a565b5060010190565b60008261100557634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461093557600080fdfea26469706673582212209161562885fecacd9bef165de33897b85fc8e3937870e7c8e9a070d7418ab0ba64736f6c63430008000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDFB89C37 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDFB89C37 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0xE1C7392A EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0xEEA9F1AC EQ PUSH2 0x174 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x17C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0xB57EB051 EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0xC65C3D95 EQ PUSH2 0x15C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x61D027B3 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x61D027B3 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0x6D19E0AD EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x841F2C31 EQ PUSH2 0x144 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x150895DB EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x1FC8BC5D EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x5F775678 EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x18F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0xC5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x19E JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x1AD JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x1BC JUMP JUMPDEST PUSH2 0x12D PUSH2 0x1CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0xF59 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x1D1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12D PUSH2 0x225 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x22B JUMP JUMPDEST PUSH2 0x12D PUSH2 0x23A JUMP JUMPDEST PUSH2 0x12D PUSH2 0x240 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x246 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x12D PUSH2 0x8C1 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0xBD3 JUMP JUMPDEST PUSH2 0x8C7 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x938 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1EA PUSH2 0x22B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x219 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xE33 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x223 PUSH1 0x0 PUSH2 0x93C JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x1 EQ PUSH2 0x274 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xEFC JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x4E71D92D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x4E71D92D SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x30B SWAP2 SWAP1 PUSH2 0xC2B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x32D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x12C PUSH1 0x7 SLOAD PUSH2 0x33D SWAP2 SWAP1 PUSH2 0xFEA JUMP JUMPDEST PUSH2 0x362 JUMPI PUSH9 0x3635C9ADC5DEA00000 PUSH1 0xA PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x35C SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH1 0x1E PUSH1 0x7 SLOAD PUSH2 0x371 SWAP2 SWAP1 PUSH2 0xFEA JUMP JUMPDEST PUSH2 0x38F JUMPI PUSH1 0xA SLOAD PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x389 SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST DUP1 PUSH1 0x9 SLOAD GT ISZERO PUSH2 0x39F JUMPI PUSH1 0x9 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD GT PUSH2 0x3B4 JUMPI PUSH1 0x9 SLOAD PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x9 SLOAD DUP4 PUSH2 0x3CA SWAP2 SWAP1 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x8 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 PUSH11 0xBE4064FBCC1D7EA6000000 DUP4 PUSH1 0x6 SLOAD PUSH2 0x3F1 SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST GT PUSH2 0x3FC JUMPI DUP3 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x414 SWAP1 PUSH11 0xBE4064FBCC1D7EA6000000 PUSH2 0xF88 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x428 SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x438 SWAP1 POP DUP2 DUP6 PUSH2 0xF88 JUMP JUMPDEST SWAP4 POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x44C SWAP2 SWAP1 PUSH2 0xF88 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x5 SLOAD PUSH1 0x2 SLOAD PUSH2 0x46E SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x9A4 JUMP JUMPDEST POP JUMPDEST PUSH11 0xBE4064FBCC1D7EA6000000 PUSH1 0x6 SLOAD LT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 PUSH11 0xBE4064FBCC1D7EA6000000 DUP3 PUSH1 0x6 SLOAD PUSH2 0x4A1 SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST GT PUSH2 0x4AC JUMPI DUP2 PUSH2 0x4C4 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x4C4 SWAP1 PUSH11 0xBE4064FBCC1D7EA6000000 PUSH2 0xF88 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x56F JUMPI DUP1 PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x4DE SWAP2 SWAP1 PUSH2 0xF70 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x4EE SWAP1 POP DUP2 DUP6 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2866255100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 SWAP7 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x28662551 SWAP2 PUSH2 0x53C SWAP2 DUP6 SWAP2 PUSH3 0x15180 SWAP2 ADD PUSH2 0xF62 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x56A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST DUP3 ISZERO PUSH2 0x590 JUMPI PUSH1 0x2 SLOAD PUSH2 0x590 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDEAD DUP6 PUSH2 0x9A4 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x5A0 DUP4 PUSH2 0xFCF JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP POP POP POP JUMP JUMPDEST PUSH2 0x5B2 PUSH2 0x938 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5C3 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xE33 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x66D003AC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD ADDRESS SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x66D003AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x648 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x65C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x680 SWAP2 SWAP1 PUSH2 0xBEF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x6A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xD1C JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 PUSH4 0x70A08231 SWAP3 PUSH2 0x6DE SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0xC5F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x70A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x72E SWAP2 SWAP1 PUSH2 0xC2B JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x70A08231 SWAP3 PUSH2 0x768 SWAP3 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0xC5F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x794 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7B8 SWAP2 SWAP1 PUSH2 0xC2B JUMP JUMPDEST SWAP1 POP PUSH2 0x7D0 DUP3 PUSH12 0x1BD05EE709AAB645A000000 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x6 SSTORE PUSH2 0x7E8 DUP2 PUSH11 0x18D0BF423C03D8DE000000 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x8 SSTORE PUSH1 0x2 SLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 PUSH4 0x95EA7B3 SWAP4 PUSH2 0x83C SWAP4 SWAP1 SWAP2 AND SWAP2 PUSH1 0x0 NOT SWAP2 ADD PUSH2 0xC73 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x856 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x86A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x88E SWAP2 SWAP1 PUSH2 0xC0B JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH2 0x8CF PUSH2 0x938 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8E0 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x906 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xE33 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x92C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x935 DUP2 PUSH2 0x93C JUMP JUMPDEST POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xA27 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x9C3 SWAP3 SWAP2 SWAP1 PUSH2 0xC73 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xA2C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA81 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xABB SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xA27 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xA9F SWAP2 SWAP1 PUSH2 0xC0B JUMP JUMPDEST PUSH2 0xA27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xE9F JUMP JUMPDEST PUSH1 0x60 PUSH2 0xACA DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0xAD4 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0xAF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xD79 JUMP JUMPDEST PUSH2 0xAFF DUP6 PUSH2 0xB94 JUMP JUMPDEST PUSH2 0xB1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP1 PUSH2 0xE68 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0xB37 SWAP2 SWAP1 PUSH2 0xC43 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xB79 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xB89 DUP3 DUP3 DUP7 PUSH2 0xB9A JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xBA9 JUMPI POP DUP2 PUSH2 0xACD JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0xBB9 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x210 SWAP2 SWAP1 PUSH2 0xC8C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBE4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xACD DUP2 PUSH2 0x1020 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC00 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xACD DUP2 PUSH2 0x1020 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC1C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xACD JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC3C JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC55 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xF9F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xCAB DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xF9F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x547265617375727956657374657250726F78793A3A496E76616C696420747265 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x61737572792076657374657220726563697069656E7400000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x547265617375727956657374657250726F78793A3A4E6F7468696E6720766573 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7465640000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1D SWAP1 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x547265617375727956657374657250726F78793A3A4E6F7420696E697469616C PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x697A656400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xF83 JUMPI PUSH2 0xF83 PUSH2 0x100A JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xF9A JUMPI PUSH2 0xF9A PUSH2 0x100A JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFA2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0xFE3 JUMPI PUSH2 0xFE3 PUSH2 0x100A JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1005 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x935 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 PUSH2 0x5628 DUP6 INVALID 0xCA 0xCD SWAP12 0xEF AND 0x5D 0xE3 CODESIZE SWAP8 0xB8 0x5F 0xC8 0xE3 SWAP4 PUSH25 0x70E7C8E9A070D7418AB0BA64736F6C63430008000033000000 ",
"sourceMap": "545:4218:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;712:23;;;:::i;644:17::-;;;:::i;742:23::-;;;:::i;1273:27::-;;;:::i;:::-;;;;;;;:::i;1605:92:0:-;;;:::i;:::-;;1158:21:7;;;:::i;973:85:0:-;;;:::i;1226:38:7:-;;;:::i;1188:29::-;;;:::i;2561:2197::-;;;:::i;1856:697::-;;;:::i;1307:25::-;;;:::i;1846:189:0:-;;;;;;:::i;:::-;;:::i;668:37:7:-;;;-1:-1:-1;;;;;668:37:7;;:::o;712:23::-;;;-1:-1:-1;;;;;712:23:7;;:::o;644:17::-;;;-1:-1:-1;;;;;644:17:7;;:::o;742:23::-;;;-1:-1:-1;;;;;742:23:7;;:::o;1273:27::-;;;;:::o;1605:92:0:-;1196:12;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;;;;;;;;;1669:21:::1;1687:1;1669:9;:21::i;:::-;1605:92::o:0;1158:21:7:-;;;;:::o;973:85:0:-;1019:7;1045:6;-1:-1:-1;;;;;1045:6:0;973:85;:::o;1226:38:7:-;;;;:::o;1188:29::-;;;;:::o;2561:2197::-;2619:11;;-1:-1:-1;;;2619:11:7;;;;:19;;2634:4;2619:19;2611:68;;;;-1:-1:-1;;;2611:68:7;;;;;;;:::i;:::-;2719:14;;:22;;;;;;;;2690:26;;-1:-1:-1;;;;;2719:14:7;;:20;;:22;;;;;;;;;;;;;;2690:26;2719:14;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2690:51;;2784:1;2760:21;:25;2752:73;;;;-1:-1:-1;;;2752:73:7;;;;;;;:::i;:::-;2926:3;2906:17;;:23;;;;:::i;:::-;2902:92;;1028:8;2951:13;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;2902:92:7;3075:2;3055:17;;:22;;;;:::i;:::-;3051:92;;3118:13;;3099:15;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;3051:92:7;3242:21;3224:15;;:39;3220:111;;;3280:15;:39;;;3220:111;3343:22;3387:26;;3369:15;;:44;3368:149;;3502:15;;3368:149;;;3430:26;;3368:149;3343:174;;3528:18;3573:15;;3549:21;:39;;;;:::i;:::-;3605:26;;3528:60;;-1:-1:-1;3605:30:7;3601:461;;3652:19;869:14;3686:17;3674:9;;:29;;;;:::i;:::-;:50;:162;;3819:17;3674:162;;;3765:9;;3744:30;;869:14;3744:30;:::i;:::-;3652:184;;3866:14;3853:9;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;3895:39:7;;-1:-1:-1;3920:14:7;3895:39;;:::i;:::-;;;3979:14;3949:26;;:44;;;;;;;:::i;:::-;;;;-1:-1:-1;;4025:8:7;;4008:3;;:42;;-1:-1:-1;;;;;4008:3:7;;;;4025:8;4035:14;4008:16;:42::i;:::-;3601:461;;869:14;4078:9;;:30;4074:451;;;4125:15;869:14;4156:13;4144:9;;:25;;;;:::i;:::-;:46;4143:156;;4286:13;4143:156;;;4232:9;;4211:30;;869:14;4211:30;:::i;:::-;4125:174;-1:-1:-1;4320:14:7;;4316:198;;4368:10;4355:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;4397:35:7;;-1:-1:-1;4422:10:7;4397:35;;:::i;:::-;4451:4;;;:47;;;;;4397:35;;-1:-1:-1;;;;;;4451:4:7;;:16;;:47;;4468:10;;984:6;;4451:47;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4316:198;4074:451;;4541:25;;4537:182;;4654:3;;:53;;-1:-1:-1;;;;;4654:3:7;1083:42;4685:21;4654:16;:53::i;:::-;4731:17;:19;;;:17;:19;;;:::i;:::-;;;;;;2561:2197;;;:::o;1856:697::-;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;1910:14:7::1;::::0;:26:::1;::::0;;;;;;;1948:4:::1;::::0;-1:-1:-1;;;;;1910:14:7::1;::::0;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:14:::1;::::0;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1910:43:7::1;;1902:110;;;;-1:-1:-1::0;;;1902:110:7::1;;;;;;;:::i;:::-;2044:3;::::0;2066:14:::1;::::0;2044:38:::1;::::0;-1:-1:-1;;;2044:38:7;;2025:16:::1;::::0;-1:-1:-1;;;;;2044:3:7;;::::1;::::0;:13:::1;::::0;:38:::1;::::0;2066:14;;::::1;::::0;2044:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2116:3;::::0;2130:8:::1;::::0;2116:23:::1;::::0;-1:-1:-1;;;2116:23:7;;2025:57;;-1:-1:-1;2093:20:7::1;::::0;-1:-1:-1;;;;;2116:3:7;;::::1;::::0;:13:::1;::::0;:23:::1;::::0;2130:8;::::1;::::0;2116:23:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2093:46:::0;-1:-1:-1;2209:36:7::1;2234:11:::0;813:14:::1;2209:36;:::i;:::-;2197:9;:48:::0;2371:41:::1;2397:15:::0;930:13:::1;2371:41;:::i;:::-;2342:26;:70:::0;2469:3:::1;::::0;2489:4:::1;::::0;;2469:45:::1;::::0;;;;-1:-1:-1;;;;;2469:3:7;;::::1;::::0;:11:::1;::::0;:45:::1;::::0;2489:4;;::::1;::::0;-1:-1:-1;;2496:17:7;2469:45:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;2527:11:7::1;:18:::0;;;::::1;-1:-1:-1::0;;;2527:18:7::1;::::0;;-1:-1:-1;1856:697:7:o;1307:25::-;;;;:::o;1846:189:0:-;1196:12;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1934:22:0;::::1;1926:73;;;;-1:-1:-1::0;;;1926:73:0::1;;;;;;;:::i;:::-;2009:19;2019:8;2009:9;:19::i;:::-;1846:189:::0;:::o;587:96:5:-;666:10;587:96;:::o;2041:169:0:-;2096:16;2115:6;;-1:-1:-1;;;;;2131:17:0;;;;;;;;;;2163:40;;2115:6;;;;;;;2163:40;;2096:16;2163:40;2041:169;;:::o;634:205:3:-;746:86;766:5;796:23;;;821:2;825:5;773:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;773:58:3;;;;;;;;;;;;;;;;;;;;;;;;;;;746:19;:86::i;:::-;634:205;;;:::o;3140:706::-;3559:23;3585:69;3613:4;3585:69;;;;;;;;;;;;;;;;;3593:5;-1:-1:-1;;;;;3585:27:3;;;:69;;;;;:::i;:::-;3668:17;;3559:95;;-1:-1:-1;3668:21:3;3664:176;;3763:10;3752:30;;;;;;;;;;;;:::i;:::-;3744:85;;;;-1:-1:-1;;;3744:85:3;;;;;;;:::i;3461:223:4:-;3594:12;3625:52;3647:6;3655:4;3661:1;3664:12;3625:21;:52::i;:::-;3618:59;;3461:223;;;;;;:::o;4548:499::-;4713:12;4770:5;4745:21;:30;;4737:81;;;;-1:-1:-1;;;4737:81:4;;;;;;;:::i;:::-;4836:18;4847:6;4836:10;:18::i;:::-;4828:60;;;;-1:-1:-1;;;4828:60:4;;;;;;;:::i;:::-;4900:12;4914:23;4941:6;-1:-1:-1;;;;;4941:11:4;4960:5;4967:4;4941:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4899:73;;;;4989:51;5006:7;5015:10;5027:12;4989:16;:51::i;:::-;4982:58;4548:499;-1:-1:-1;;;;;;;4548:499:4:o;718:377::-;1034:20;1080:8;;;718:377::o;7161:692::-;7307:12;7335:7;7331:516;;;-1:-1:-1;7365:10:4;7358:17;;7331:516;7476:17;;:21;7472:365;;7670:10;7664:17;7730:15;7717:10;7713:2;7709:19;7702:44;7619:145;7809:12;7802:20;;-1:-1:-1;;;7802:20:4;;;;;;;;:::i;14:259:8:-;;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:297::-;;666:2;654:9;645:7;641:23;637:32;634:2;;;687:6;679;672:22;634:2;724:9;718:16;777:5;770:13;763:21;756:5;753:32;743:2;;804:6;796;789:22;848:194;;971:2;959:9;950:7;946:23;942:32;939:2;;;992:6;984;977:22;939:2;-1:-1:-1;1020:16:8;;929:113;-1:-1:-1;929:113:8:o;1047:274::-;;1214:6;1208:13;1230:53;1276:6;1271:3;1264:4;1256:6;1252:17;1230:53;:::i;:::-;1299:16;;;;;1184:137;-1:-1:-1;;1184:137:8:o;1326:226::-;-1:-1:-1;;;;;1490:55:8;;;;1472:74;;1460:2;1445:18;;1427:125::o;1557:297::-;-1:-1:-1;;;;;1749:55:8;;;;1731:74;;1836:2;1821:18;;1814:34;1719:2;1704:18;;1686:168::o;2610:383::-;;2759:2;2748:9;2741:21;2791:6;2785:13;2834:6;2829:2;2818:9;2814:18;2807:34;2850:66;2909:6;2904:2;2893:9;2889:18;2884:2;2876:6;2872:15;2850:66;:::i;:::-;2977:2;2956:15;-1:-1:-1;;2952:29:8;2937:45;;;;2984:2;2933:54;;2731:262;-1:-1:-1;;2731:262:8:o;2998:402::-;3200:2;3182:21;;;3239:2;3219:18;;;3212:30;3278:34;3273:2;3258:18;;3251:62;3349:8;3344:2;3329:18;;3322:36;3390:3;3375:19;;3172:228::o;3405:418::-;3607:2;3589:21;;;3646:2;3626:18;;;3619:30;3685:34;3680:2;3665:18;;3658:62;3756:24;3751:2;3736:18;;3729:52;3813:3;3798:19;;3579:244::o;3828:402::-;4030:2;4012:21;;;4069:2;4049:18;;;4042:30;4108:34;4103:2;4088:18;;4081:62;4179:8;4174:2;4159:18;;4152:36;4220:3;4205:19;;4002:228::o;4235:399::-;4437:2;4419:21;;;4476:2;4456:18;;;4449:30;4515:34;4510:2;4495:18;;4488:62;4586:5;4581:2;4566:18;;4559:33;4624:3;4609:19;;4409:225::o;4639:356::-;4841:2;4823:21;;;4860:18;;;4853:30;4919:34;4914:2;4899:18;;4892:62;4986:2;4971:18;;4813:182::o;5000:353::-;5202:2;5184:21;;;5241:2;5221:18;;;5214:30;5280:31;5275:2;5260:18;;5253:59;5344:2;5329:18;;5174:179::o;5358:406::-;5560:2;5542:21;;;5599:2;5579:18;;;5572:30;5638:34;5633:2;5618:18;;5611:62;5709:12;5704:2;5689:18;;5682:40;5754:3;5739:19;;5532:232::o;5769:400::-;5971:2;5953:21;;;6010:2;5990:18;;;5983:30;6049:34;6044:2;6029:18;;6022:62;6120:6;6115:2;6100:18;;6093:34;6159:3;6144:19;;5943:226::o;6174:177::-;6320:25;;;6308:2;6293:18;;6275:76::o;6356:248::-;6530:25;;;6586:2;6571:18;;6564:34;6518:2;6503:18;;6485:119::o;6609:128::-;;6680:1;6676:6;6673:1;6670:13;6667:2;;;6686:18;;:::i;:::-;-1:-1:-1;6722:9:8;;6657:80::o;6742:125::-;;6810:1;6807;6804:8;6801:2;;;6815:18;;:::i;:::-;-1:-1:-1;6852:9:8;;6791:76::o;6872:258::-;6944:1;6954:113;6968:6;6965:1;6962:13;6954:113;;;7044:11;;;7038:18;7025:11;;;7018:39;6990:2;6983:10;6954:113;;;7085:6;7082:1;7079:13;7076:2;;;7120:1;7111:6;7106:3;7102:16;7095:27;7076:2;;6925:205;;;:::o;7135:135::-;;-1:-1:-1;;7195:17:8;;7192:2;;;7215:18;;:::i;:::-;-1:-1:-1;7262:1:8;7251:13;;7182:88::o;7275:266::-;;7333:1;7323:2;;-1:-1:-1;;;7365:1:8;7358:88;7469:4;7466:1;7459:15;7497:4;7494:1;7487:15;7323:2;-1:-1:-1;7526:9:8;;7313:228::o;7546:184::-;-1:-1:-1;;;7595:1:8;7588:88;7695:4;7692:1;7685:15;7719:4;7716:1;7709:15;7735:156;-1:-1:-1;;;;;7816:5:8;7812:54;7805:5;7802:65;7792:2;;7881:1;7878;7871:12"
},
"methodIdentifiers": {
"chef()": "1fc8bc5d",
"claimAndDistribute()": "dfb89c37",
"distributionCount()": "c65c3d95",
"diversionAmount()": "6d19e0ad",
"diversionGain()": "eea9f1ac",
"init()": "e1c7392a",
"owner()": "8da5cb5b",
"png()": "5f775678",
"pngVested()": "841f2c31",
"renounceOwnership()": "715018a6",
"transferOwnership(address)": "f2fde38b",
"treasury()": "61d027b3",
"treasuryDiversionRemaining()": "b57eb051",
"treasuryVester()": "150895db"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_png\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_treasuryVester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_chef\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"chef\",\"outputs\":[{\"internalType\":\"contract IMiniChefV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimAndDistribute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"diversionAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"diversionGain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"png\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pngVested\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasuryDiversionRemaining\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasuryVester\",\"outputs\":[{\"internalType\":\"contract ITreasuryVester\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TreasuryVesterProxy.sol\":\"TreasuryVesterProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x842ccf9a6cd33e17b7acef8372ca42090755217b358fe0c44c98e951ea549d3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6cc5f36034a77d105263ae6d8cc18b16260b4a0f6cdb1a26f21ba3670fdd06dd\",\"dweb:/ipfs/QmdJrJ2LoG546BkfyZPta96BNmaVBfqZoh8kq7PqHuQyPk\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x02348b2e4b9f3200c7e3907c5c2661643a6d8520e9f79939fbb9b4005a54894d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d41d627f4ef9c6006df8c2d01227d3cf4a6c3359b5704c629d88933272eecadd\",\"dweb:/ipfs/QmYDo7MvMsvuDxuJZ9RC9zFganS3Tm8RYzSmBP5qSmJfuY\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x3336baae5cf23e94274d75336e2d412193be508504aee185e61dc7d58cd05c8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39a05eec7083dfa0cc7e0cbfe6cd1bd085a340af1ede93fdff3ad047c5fb3d8e\",\"dweb:/ipfs/QmVApz5fCUq2QC8gKTsNNdCmcedJ3ETHp68zR5N3WUKS4r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"contracts/TreasuryVesterProxy.sol\":{\"keccak256\":\"0x31ff0dce94e3fa77cdacb36b63643cf6813a22e69902700febe79b78fd520b53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e940d2b0166dd49bf0076079407358302b7a7de4c9466884164fe5818abe8100\",\"dweb:/ipfs/QmP8dTTnw42UzACuDsvAMQsR7e8h8NcCS5xJuuyErL1Ub4\"]}},\"version\":1}"
}
}
},
"sources": {
"@openzeppelin/contracts/access/Ownable.sol": {
"ast": {
"absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
"exportedSymbols": {
"Context": [
764
],
"Ownable": [
103
]
},
"id": 104,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "33:23:0"
},
{
"absolutePath": "@openzeppelin/contracts/utils/Context.sol",
"file": "../utils/Context.sol",
"id": 2,
"nodeType": "ImportDirective",
"scope": 104,
"sourceUnit": 765,
"src": "58:30:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": true,
"baseContracts": [
{
"baseName": {
"id": 4,
"name": "Context",
"nodeType": "IdentifierPath",
"referencedDeclaration": 764,
"src": "614:7:0"
},
"id": 5,
"nodeType": "InheritanceSpecifier",
"src": "614:7:0"
}
],
"contractDependencies": [
764
],
"contractKind": "contract",
"documentation": {
"id": 3,
"nodeType": "StructuredDocumentation",
"src": "90:494:0",
"text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
},
"fullyImplemented": true,
"id": 103,
"linearizedBaseContracts": [
103,
764
],
"name": "Ownable",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"id": 7,
"mutability": "mutable",
"name": "_owner",
"nodeType": "VariableDeclaration",
"scope": 103,
"src": "628:22:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 6,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "628:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "private"
},
{
"anonymous": false,
"id": 13,
"name": "OwnershipTransferred",
"nodeType": "EventDefinition",
"parameters": {
"id": 12,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 9,
"indexed": true,
"mutability": "mutable",
"name": "previousOwner",
"nodeType": "VariableDeclaration",
"scope": 13,
"src": "684:29:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 8,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "684:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 11,
"indexed": true,
"mutability": "mutable",
"name": "newOwner",
"nodeType": "VariableDeclaration",
"scope": 13,
"src": "715:24:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "715:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "683:57:0"
},
"src": "657:84:0"
},
{
"body": {
"id": 22,
"nodeType": "Block",
"src": "857:40:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 18,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 754,
"src": "877:10:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 19,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "877:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 17,
"name": "_setOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 102,
"src": "867:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 20,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "867:23:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21,
"nodeType": "ExpressionStatement",
"src": "867:23:0"
}
]
},
"documentation": {
"id": 14,
"nodeType": "StructuredDocumentation",
"src": "747:91:0",
"text": " @dev Initializes the contract setting the deployer as the initial owner."
},
"id": 23,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 15,
"nodeType": "ParameterList",
"parameters": [],
"src": "854:2:0"
},
"returnParameters": {
"id": 16,
"nodeType": "ParameterList",
"parameters": [],
"src": "857:0:0"
},
"scope": 103,
"src": "843:54:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 31,
"nodeType": "Block",
"src": "1028:30:0",
"statements": [
{
"expression": {
"id": 29,
"name": "_owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7,
"src": "1045:6:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 28,
"id": 30,
"nodeType": "Return",
"src": "1038:13:0"
}
]
},
"documentation": {
"id": 24,
"nodeType": "StructuredDocumentation",
"src": "903:65:0",
"text": " @dev Returns the address of the current owner."
},
"functionSelector": "8da5cb5b",
"id": 32,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "owner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 25,
"nodeType": "ParameterList",
"parameters": [],
"src": "987:2:0"
},
"returnParameters": {
"id": 28,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 27,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 32,
"src": "1019:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1019:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1018:9:0"
},
"scope": 103,
"src": "973:85:0",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"body": {
"id": 45,
"nodeType": "Block",
"src": "1167:96:0",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 40,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 36,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32,
"src": "1185:5:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 37,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1185:7:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 38,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 754,
"src": "1196:10:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 39,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1196:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1185:23:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
"id": 41,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1210:34:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
"typeString": "literal_string \"Ownable: caller is not the owner\""
},
"value": "Ownable: caller is not the owner"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
"typeString": "literal_string \"Ownable: caller is not the owner\""
}
],
"id": 35,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1177:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 42,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1177:68:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 43,
"nodeType": "ExpressionStatement",
"src": "1177:68:0"
},
{
"id": 44,
"nodeType": "PlaceholderStatement",
"src": "1255:1:0"
}
]
},
"documentation": {
"id": 33,
"nodeType": "StructuredDocumentation",
"src": "1064:77:0",
"text": " @dev Throws if called by any account other than the owner."
},
"id": 46,
"name": "onlyOwner",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 34,
"nodeType": "ParameterList",
"parameters": [],
"src": "1164:2:0"
},
"src": "1146:117:0",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 59,
"nodeType": "Block",
"src": "1659:38:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 55,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1687:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 54,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1679:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 53,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1679:7:0",
"typeDescriptions": {}
}
},
"id": 56,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1679:10:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 52,
"name": "_setOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 102,
"src": "1669:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 57,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1669:21:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 58,
"nodeType": "ExpressionStatement",
"src": "1669:21:0"
}
]
},
"documentation": {
"id": 47,
"nodeType": "StructuredDocumentation",
"src": "1269:331:0",
"text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
},
"functionSelector": "715018a6",
"id": 60,
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 50,
"modifierName": {
"id": 49,
"name": "onlyOwner",
"nodeType": "IdentifierPath",
"referencedDeclaration": 46,
"src": "1649:9:0"
},
"nodeType": "ModifierInvocation",
"src": "1649:9:0"
}
],
"name": "renounceOwnership",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 48,
"nodeType": "ParameterList",
"parameters": [],
"src": "1631:2:0"
},
"returnParameters": {
"id": 51,
"nodeType": "ParameterList",
"parameters": [],
"src": "1659:0:0"
},
"scope": 103,
"src": "1605:92:0",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"body": {
"id": 82,
"nodeType": "Block",
"src": "1916:119:0",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 74,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 69,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "1934:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 72,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1954:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 71,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1946:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 70,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1946:7:0",
"typeDescriptions": {}
}
},
"id": 73,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1946:10:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1934:22:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
"id": 75,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1958:40:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
"typeString": "literal_string \"Ownable: new owner is the zero address\""
},
"value": "Ownable: new owner is the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
"typeString": "literal_string \"Ownable: new owner is the zero address\""
}
],
"id": 68,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1926:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 76,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1926:73:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 77,
"nodeType": "ExpressionStatement",
"src": "1926:73:0"
},
{
"expression": {
"arguments": [
{
"id": 79,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "2019:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 78,
"name": "_setOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 102,
"src": "2009:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 80,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2009:19:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 81,
"nodeType": "ExpressionStatement",
"src": "2009:19:0"
}
]
},
"documentation": {
"id": 61,
"nodeType": "StructuredDocumentation",
"src": "1703:138:0",
"text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
},
"functionSelector": "f2fde38b",
"id": 83,
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 66,
"modifierName": {
"id": 65,
"name": "onlyOwner",
"nodeType": "IdentifierPath",
"referencedDeclaration": 46,
"src": "1906:9:0"
},
"nodeType": "ModifierInvocation",
"src": "1906:9:0"
}
],
"name": "transferOwnership",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 64,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 63,
"mutability": "mutable",
"name": "newOwner",
"nodeType": "VariableDeclaration",
"scope": 83,
"src": "1873:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 62,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1873:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1872:18:0"
},
"returnParameters": {
"id": 67,
"nodeType": "ParameterList",
"parameters": [],
"src": "1916:0:0"
},
"scope": 103,
"src": "1846:189:0",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"body": {
"id": 101,
"nodeType": "Block",
"src": "2086:124:0",
"statements": [
{
"assignments": [
89
],
"declarations": [
{
"constant": false,
"id": 89,
"mutability": "mutable",
"name": "oldOwner",
"nodeType": "VariableDeclaration",
"scope": 101,
"src": "2096:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 88,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2096:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 91,
"initialValue": {
"id": 90,
"name": "_owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7,
"src": "2115:6:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2096:25:0"
},
{
"expression": {
"id": 94,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 92,
"name": "_owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7,
"src": "2131:6:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 93,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 85,
"src": "2140:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2131:17:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 95,
"nodeType": "ExpressionStatement",
"src": "2131:17:0"
},
{
"eventCall": {
"arguments": [
{
"id": 97,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 89,
"src": "2184:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 98,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 85,
"src": "2194:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 96,
"name": "OwnershipTransferred",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13,
"src": "2163:20:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
"typeString": "function (address,address)"
}
},
"id": 99,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2163:40:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 100,
"nodeType": "EmitStatement",
"src": "2158:45:0"
}
]
},
"id": 102,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_setOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 86,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 85,
"mutability": "mutable",
"name": "newOwner",
"nodeType": "VariableDeclaration",
"scope": 102,
"src": "2060:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 84,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2060:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2059:18:0"
},
"returnParameters": {
"id": 87,
"nodeType": "ParameterList",
"parameters": [],
"src": "2086:0:0"
},
"scope": 103,
"src": "2041:169:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
}
],
"scope": 104,
"src": "585:1627:0"
}
],
"src": "33:2180:0"
},
"id": 0
},
"@openzeppelin/contracts/security/ReentrancyGuard.sol": {
"ast": {
"absolutePath": "@openzeppelin/contracts/security/ReentrancyGuard.sol",
"exportedSymbols": {
"ReentrancyGuard": [
143
]
},
"id": 144,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 105,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "33:23:1"
},
{
"abstract": true,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 106,
"nodeType": "StructuredDocumentation",
"src": "58:750:1",
"text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."
},
"fullyImplemented": true,
"id": 143,
"linearizedBaseContracts": [
143
],
"name": "ReentrancyGuard",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 109,
"mutability": "constant",
"name": "_NOT_ENTERED",
"nodeType": "VariableDeclaration",
"scope": 143,
"src": "1597:41:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 107,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1597:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"hexValue": "31",
"id": 108,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1637:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"visibility": "private"
},
{
"constant": true,
"id": 112,
"mutability": "constant",
"name": "_ENTERED",
"nodeType": "VariableDeclaration",
"scope": 143,
"src": "1644:37:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 110,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1644:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"hexValue": "32",
"id": 111,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1680:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"visibility": "private"
},
{
"constant": false,
"id": 114,
"mutability": "mutable",
"name": "_status",
"nodeType": "VariableDeclaration",
"scope": 143,
"src": "1688:23:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 113,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1688:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "private"
},
{
"body": {
"id": 121,
"nodeType": "Block",
"src": "1732:39:1",
"statements": [
{
"expression": {
"id": 119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 117,
"name": "_status",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 114,
"src": "1742:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 118,
"name": "_NOT_ENTERED",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 109,
"src": "1752:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1742:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 120,
"nodeType": "ExpressionStatement",
"src": "1742:22:1"
}
]
},
"id": 122,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 115,
"nodeType": "ParameterList",
"parameters": [],
"src": "1729:2:1"
},
"returnParameters": {
"id": 116,
"nodeType": "ParameterList",
"parameters": [],
"src": "1732:0:1"
},
"scope": 143,
"src": "1718:53:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 141,
"nodeType": "Block",
"src": "2170:421:1",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 128,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 126,
"name": "_status",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 114,
"src": "2259:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 127,
"name": "_ENTERED",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 112,
"src": "2270:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2259:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
"id": 129,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2280:33:1",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
"typeString": "literal_string \"ReentrancyGuard: reentrant call\""
},
"value": "ReentrancyGuard: reentrant call"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
"typeString": "literal_string \"ReentrancyGuard: reentrant call\""
}
],
"id": 125,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2251:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 130,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2251:63:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 131,
"nodeType": "ExpressionStatement",
"src": "2251:63:1"
},
{
"expression": {
"id": 134,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 132,
"name": "_status",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 114,
"src": "2389:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 133,
"name": "_ENTERED",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 112,
"src": "2399:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2389:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 135,
"nodeType": "ExpressionStatement",
"src": "2389:18:1"
},
{
"id": 136,
"nodeType": "PlaceholderStatement",
"src": "2418:1:1"
},
{
"expression": {
"id": 139,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 137,
"name": "_status",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 114,
"src": "2562:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 138,
"name": "_NOT_ENTERED",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 109,
"src": "2572:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2562:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 140,
"nodeType": "ExpressionStatement",
"src": "2562:22:1"
}
]
},
"documentation": {
"id": 123,
"nodeType": "StructuredDocumentation",
"src": "1777:364:1",
"text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work."
},
"id": 142,
"name": "nonReentrant",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 124,
"nodeType": "ParameterList",
"parameters": [],
"src": "2167:2:1"
},
"src": "2146:445:1",
"virtual": false,
"visibility": "internal"
}
],
"scope": 144,
"src": "809:1784:1"
}
],
"src": "33:2561:1"
},
"id": 1
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"ast": {
"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"exportedSymbols": {
"IERC20": [
221
]
},
"id": 222,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 145,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "33:23:2"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 146,
"nodeType": "StructuredDocumentation",
"src": "58:70:2",
"text": " @dev Interface of the ERC20 standard as defined in the EIP."
},
"fullyImplemented": false,
"id": 221,
"linearizedBaseContracts": [
221
],
"name": "IERC20",
"nodeType": "ContractDefinition",
"nodes": [
{
"documentation": {
"id": 147,
"nodeType": "StructuredDocumentation",
"src": "152:66:2",
"text": " @dev Returns the amount of tokens in existence."
},
"functionSelector": "18160ddd",
"id": 152,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "totalSupply",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 148,
"nodeType": "ParameterList",
"parameters": [],
"src": "243:2:2"
},
"returnParameters": {
"id": 151,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 150,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 152,
"src": "269:7:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 149,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "269:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "268:9:2"
},
"scope": 221,
"src": "223:55:2",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"documentation": {
"id": 153,
"nodeType": "StructuredDocumentation",
"src": "284:72:2",
"text": " @dev Returns the amount of tokens owned by `account`."
},
"functionSelector": "70a08231",
"id": 160,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 156,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 155,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 160,
"src": "380:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 154,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "380:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "379:17:2"
},
"returnParameters": {
"id": 159,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 158,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 160,
"src": "420:7:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 157,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "420:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "419:9:2"
},
"scope": 221,
"src": "361:68:2",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"documentation": {
"id": 161,
"nodeType": "StructuredDocumentation",
"src": "435:209:2",
"text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
},
"functionSelector": "a9059cbb",
"id": 170,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "transfer",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 166,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 163,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"scope": 170,
"src": "667:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 162,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "667:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 165,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 170,
"src": "686:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 164,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "686:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "666:35:2"
},
"returnParameters": {
"id": 169,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 168,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 170,
"src": "720:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 167,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "720:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "719:6:2"
},
"scope": 221,
"src": "649:77:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"documentation": {
"id": 171,
"nodeType": "StructuredDocumentation",
"src": "732:264:2",
"text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
},
"functionSelector": "dd62ed3e",
"id": 180,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "allowance",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 176,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 173,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 180,
"src": "1020:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 172,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1020:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 175,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 180,
"src": "1035:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 174,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1035:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1019:32:2"
},
"returnParameters": {
"id": 179,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 178,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 180,
"src": "1075:7:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 177,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1075:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1074:9:2"
},
"scope": 221,
"src": "1001:83:2",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"documentation": {
"id": 181,
"nodeType": "StructuredDocumentation",
"src": "1090:642:2",
"text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
},
"functionSelector": "095ea7b3",
"id": 190,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "approve",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 186,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 183,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 190,
"src": "1754:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 182,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1754:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 185,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 190,
"src": "1771:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 184,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1771:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1753:33:2"
},
"returnParameters": {
"id": 189,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 188,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 190,
"src": "1805:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 187,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1805:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "1804:6:2"
},
"scope": 221,
"src": "1737:74:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"documentation": {
"id": 191,
"nodeType": "StructuredDocumentation",
"src": "1817:296:2",
"text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
},
"functionSelector": "23b872dd",
"id": 202,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "transferFrom",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 198,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 193,
"mutability": "mutable",
"name": "sender",
"nodeType": "VariableDeclaration",
"scope": 202,
"src": "2149:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 192,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2149:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 195,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"scope": 202,
"src": "2173:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 194,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2173:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 197,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 202,
"src": "2200:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 196,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2200:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2139:81:2"
},
"returnParameters": {
"id": 201,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 200,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 202,
"src": "2239:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 199,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2239:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "2238:6:2"
},
"scope": 221,
"src": "2118:127:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"anonymous": false,
"documentation": {
"id": 203,
"nodeType": "StructuredDocumentation",
"src": "2251:158:2",
"text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
},
"id": 211,
"name": "Transfer",
"nodeType": "EventDefinition",
"parameters": {
"id": 210,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 205,
"indexed": true,
"mutability": "mutable",
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 211,
"src": "2429:20:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 204,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2429:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 207,
"indexed": true,
"mutability": "mutable",
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 211,
"src": "2451:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 206,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2451:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 209,
"indexed": false,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 211,
"src": "2471:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 208,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2471:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2428:57:2"
},
"src": "2414:72:2"
},
{
"anonymous": false,
"documentation": {
"id": 212,
"nodeType": "StructuredDocumentation",
"src": "2492:148:2",
"text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
},
"id": 220,
"name": "Approval",
"nodeType": "EventDefinition",
"parameters": {
"id": 219,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 214,
"indexed": true,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 220,
"src": "2660:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 213,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2660:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 216,
"indexed": true,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 220,
"src": "2683:23:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 215,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2683:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 218,
"indexed": false,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 220,
"src": "2708:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 217,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2708:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2659:63:2"
},
"src": "2645:78:2"
}
],
"scope": 222,
"src": "129:2596:2"
}
],
"src": "33:2693:2"
},
"id": 2
},
"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
"ast": {
"absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
"exportedSymbols": {
"Address": [
742
],
"IERC20": [
221
],
"SafeERC20": [
445
]
},
"id": 446,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 223,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "33:23:3"
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"file": "../IERC20.sol",
"id": 224,
"nodeType": "ImportDirective",
"scope": 446,
"sourceUnit": 222,
"src": "58:23:3",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/Address.sol",
"file": "../../../utils/Address.sol",
"id": 225,
"nodeType": "ImportDirective",
"scope": 446,
"sourceUnit": 743,
"src": "82:36:3",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 226,
"nodeType": "StructuredDocumentation",
"src": "120:457:3",
"text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."
},
"fullyImplemented": true,
"id": 445,
"linearizedBaseContracts": [
445
],
"name": "SafeERC20",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 229,
"libraryName": {
"id": 227,
"name": "Address",
"nodeType": "IdentifierPath",
"referencedDeclaration": 742,
"src": "608:7:3"
},
"nodeType": "UsingForDirective",
"src": "602:26:3",
"typeName": {
"id": 228,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "620:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"body": {
"id": 251,
"nodeType": "Block",
"src": "736:103:3",
"statements": [
{
"expression": {
"arguments": [
{
"id": 240,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 232,
"src": "766:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
{
"arguments": [
{
"expression": {
"expression": {
"id": 243,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 232,
"src": "796:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 170,
"src": "796:14:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "selector",
"nodeType": "MemberAccess",
"src": "796:23:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
{
"id": 246,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 234,
"src": "821:2:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 247,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 236,
"src": "825:5:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 241,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "773:3:3",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 242,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodeWithSelector",
"nodeType": "MemberAccess",
"src": "773:22:3",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bytes4) pure returns (bytes memory)"
}
},
"id": 248,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "773:58:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 239,
"name": "_callOptionalReturn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 444,
"src": "746:19:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$221_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (contract IERC20,bytes memory)"
}
},
"id": 249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "746:86:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 250,
"nodeType": "ExpressionStatement",
"src": "746:86:3"
}
]
},
"id": 252,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeTransfer",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 237,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 232,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 252,
"src": "665:12:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
"typeName": {
"id": 231,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 230,
"name": "IERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 221,
"src": "665:6:3"
},
"referencedDeclaration": 221,
"src": "665:6:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 234,
"mutability": "mutable",
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 252,
"src": "687:10:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 233,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "687:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 236,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 252,
"src": "707:13:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 235,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "707:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "655:71:3"
},
"returnParameters": {
"id": 238,
"nodeType": "ParameterList",
"parameters": [],
"src": "736:0:3"
},
"scope": 445,
"src": "634:205:3",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 277,
"nodeType": "Block",
"src": "973:113:3",
"statements": [
{
"expression": {
"arguments": [
{
"id": 265,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 255,
"src": "1003:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
{
"arguments": [
{
"expression": {
"expression": {
"id": 268,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 255,
"src": "1033:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 269,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 202,
"src": "1033:18:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) external returns (bool)"
}
},
"id": 270,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "selector",
"nodeType": "MemberAccess",
"src": "1033:27:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
{
"id": 271,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 257,
"src": "1062:4:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 272,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 259,
"src": "1068:2:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 273,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 261,
"src": "1072:5:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 266,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1010:3:3",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 267,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodeWithSelector",
"nodeType": "MemberAccess",
"src": "1010:22:3",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bytes4) pure returns (bytes memory)"
}
},
"id": 274,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1010:68:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 264,
"name": "_callOptionalReturn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 444,
"src": "983:19:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$221_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (contract IERC20,bytes memory)"
}
},
"id": 275,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "983:96:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 276,
"nodeType": "ExpressionStatement",
"src": "983:96:3"
}
]
},
"id": 278,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeTransferFrom",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 262,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 255,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 278,
"src": "880:12:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
"typeName": {
"id": 254,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 253,
"name": "IERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 221,
"src": "880:6:3"
},
"referencedDeclaration": 221,
"src": "880:6:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 257,
"mutability": "mutable",
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 278,
"src": "902:12:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 256,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "902:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 259,
"mutability": "mutable",
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 278,
"src": "924:10:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 258,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "924:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 261,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 278,
"src": "944:13:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 260,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "944:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "870:93:3"
},
"returnParameters": {
"id": 263,
"nodeType": "ParameterList",
"parameters": [],
"src": "973:0:3"
},
"scope": 445,
"src": "845:241:3",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 321,
"nodeType": "Block",
"src": "1452:497:3",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 305,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 292,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 290,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 286,
"src": "1701:5:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 291,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1710:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1701:10:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 293,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1700:12:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 303,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"arguments": [
{
"id": 298,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "1741:4:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeERC20_$445",
"typeString": "library SafeERC20"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_SafeERC20_$445",
"typeString": "library SafeERC20"
}
],
"id": 297,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1733:7:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 296,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1733:7:3",
"typeDescriptions": {}
}
},
"id": 299,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1733:13:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 300,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 284,
"src": "1748:7:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 294,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 282,
"src": "1717:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "allowance",
"nodeType": "MemberAccess",
"referencedDeclaration": 180,
"src": "1717:15:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
"typeString": "function (address,address) view external returns (uint256)"
}
},
"id": 301,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1717:39:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 302,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1760:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1717:44:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 304,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1716:46:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1700:62:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
"id": 306,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1776:56:3",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
"typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
},
"value": "SafeERC20: approve from non-zero to non-zero allowance"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
"typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
}
],
"id": 289,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1679:7:3",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 307,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1679:163:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 308,
"nodeType": "ExpressionStatement",
"src": "1679:163:3"
},
{
"expression": {
"arguments": [
{
"id": 310,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 282,
"src": "1872:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
{
"arguments": [
{
"expression": {
"expression": {
"id": 313,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 282,
"src": "1902:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "approve",
"nodeType": "MemberAccess",
"referencedDeclaration": 190,
"src": "1902:13:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 315,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "selector",
"nodeType": "MemberAccess",
"src": "1902:22:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
{
"id": 316,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 284,
"src": "1926:7:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 317,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 286,
"src": "1935:5:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 311,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1879:3:3",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 312,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodeWithSelector",
"nodeType": "MemberAccess",
"src": "1879:22:3",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bytes4) pure returns (bytes memory)"
}
},
"id": 318,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1879:62:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 309,
"name": "_callOptionalReturn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 444,
"src": "1852:19:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$221_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (contract IERC20,bytes memory)"
}
},
"id": 319,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1852:90:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 320,
"nodeType": "ExpressionStatement",
"src": "1852:90:3"
}
]
},
"documentation": {
"id": 279,
"nodeType": "StructuredDocumentation",
"src": "1092:249:3",
"text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."
},
"id": 322,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeApprove",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 287,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 282,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 322,
"src": "1376:12:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
"typeName": {
"id": 281,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 280,
"name": "IERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 221,
"src": "1376:6:3"
},
"referencedDeclaration": 221,
"src": "1376:6:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 284,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 322,
"src": "1398:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 283,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1398:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 286,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 322,
"src": "1423:13:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 285,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1423:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1366:76:3"
},
"returnParameters": {
"id": 288,
"nodeType": "ParameterList",
"parameters": [],
"src": "1452:0:3"
},
"scope": 445,
"src": "1346:603:3",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 357,
"nodeType": "Block",
"src": "2071:194:3",
"statements": [
{
"assignments": [
333
],
"declarations": [
{
"constant": false,
"id": 333,
"mutability": "mutable",
"name": "newAllowance",
"nodeType": "VariableDeclaration",
"scope": 357,
"src": "2081:20:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 332,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2081:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 344,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 343,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"arguments": [
{
"id": 338,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "2128:4:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeERC20_$445",
"typeString": "library SafeERC20"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_SafeERC20_$445",
"typeString": "library SafeERC20"
}
],
"id": 337,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2120:7:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 336,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2120:7:3",
"typeDescriptions": {}
}
},
"id": 339,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2120:13:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 340,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 327,
"src": "2135:7:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 334,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 325,
"src": "2104:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 335,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "allowance",
"nodeType": "MemberAccess",
"referencedDeclaration": 180,
"src": "2104:15:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
"typeString": "function (address,address) view external returns (uint256)"
}
},
"id": 341,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2104:39:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 342,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 329,
"src": "2146:5:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2104:47:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2081:70:3"
},
{
"expression": {
"arguments": [
{
"id": 346,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 325,
"src": "2181:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
{
"arguments": [
{
"expression": {
"expression": {
"id": 349,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 325,
"src": "2211:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 350,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "approve",
"nodeType": "MemberAccess",
"referencedDeclaration": 190,
"src": "2211:13:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 351,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "selector",
"nodeType": "MemberAccess",
"src": "2211:22:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
{
"id": 352,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 327,
"src": "2235:7:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 353,
"name": "newAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 333,
"src": "2244:12:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 347,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "2188:3:3",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 348,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodeWithSelector",
"nodeType": "MemberAccess",
"src": "2188:22:3",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bytes4) pure returns (bytes memory)"
}
},
"id": 354,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2188:69:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 345,
"name": "_callOptionalReturn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 444,
"src": "2161:19:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$221_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (contract IERC20,bytes memory)"
}
},
"id": 355,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2161:97:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 356,
"nodeType": "ExpressionStatement",
"src": "2161:97:3"
}
]
},
"id": 358,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeIncreaseAllowance",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 330,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 325,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 358,
"src": "1995:12:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
"typeName": {
"id": 324,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 323,
"name": "IERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 221,
"src": "1995:6:3"
},
"referencedDeclaration": 221,
"src": "1995:6:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 327,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 358,
"src": "2017:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 326,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2017:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 329,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 358,
"src": "2042:13:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 328,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2042:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1985:76:3"
},
"returnParameters": {
"id": 331,
"nodeType": "ParameterList",
"parameters": [],
"src": "2071:0:3"
},
"scope": 445,
"src": "1955:310:3",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 405,
"nodeType": "Block",
"src": "2387:370:3",
"statements": [
{
"id": 404,
"nodeType": "UncheckedBlock",
"src": "2397:354:3",
"statements": [
{
"assignments": [
369
],
"declarations": [
{
"constant": false,
"id": 369,
"mutability": "mutable",
"name": "oldAllowance",
"nodeType": "VariableDeclaration",
"scope": 404,
"src": "2421:20:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 368,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2421:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 378,
"initialValue": {
"arguments": [
{
"arguments": [
{
"id": 374,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "2468:4:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeERC20_$445",
"typeString": "library SafeERC20"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_SafeERC20_$445",
"typeString": "library SafeERC20"
}
],
"id": 373,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2460:7:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 372,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2460:7:3",
"typeDescriptions": {}
}
},
"id": 375,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2460:13:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 376,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 363,
"src": "2475:7:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 370,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 361,
"src": "2444:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 371,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "allowance",
"nodeType": "MemberAccess",
"referencedDeclaration": 180,
"src": "2444:15:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
"typeString": "function (address,address) view external returns (uint256)"
}
},
"id": 377,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2444:39:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2421:62:3"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 382,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 380,
"name": "oldAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 369,
"src": "2505:12:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"id": 381,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 365,
"src": "2521:5:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2505:21:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
"id": 383,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2528:43:3",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
"typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
},
"value": "SafeERC20: decreased allowance below zero"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
"typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
}
],
"id": 379,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2497:7:3",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 384,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2497:75:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 385,
"nodeType": "ExpressionStatement",
"src": "2497:75:3"
},
{
"assignments": [
387
],
"declarations": [
{
"constant": false,
"id": 387,
"mutability": "mutable",
"name": "newAllowance",
"nodeType": "VariableDeclaration",
"scope": 404,
"src": "2586:20:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 386,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2586:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 391,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 390,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 388,
"name": "oldAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 369,
"src": "2609:12:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 389,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 365,
"src": "2624:5:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2609:20:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2586:43:3"
},
{
"expression": {
"arguments": [
{
"id": 393,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 361,
"src": "2663:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
{
"arguments": [
{
"expression": {
"expression": {
"id": 396,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 361,
"src": "2693:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 397,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "approve",
"nodeType": "MemberAccess",
"referencedDeclaration": 190,
"src": "2693:13:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 398,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "selector",
"nodeType": "MemberAccess",
"src": "2693:22:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
{
"id": 399,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 363,
"src": "2717:7:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 400,
"name": "newAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 387,
"src": "2726:12:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 394,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "2670:3:3",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 395,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodeWithSelector",
"nodeType": "MemberAccess",
"src": "2670:22:3",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bytes4) pure returns (bytes memory)"
}
},
"id": 401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2670:69:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 392,
"name": "_callOptionalReturn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 444,
"src": "2643:19:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$221_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (contract IERC20,bytes memory)"
}
},
"id": 402,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2643:97:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 403,
"nodeType": "ExpressionStatement",
"src": "2643:97:3"
}
]
}
]
},
"id": 406,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "safeDecreaseAllowance",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 366,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 361,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 406,
"src": "2311:12:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
"typeName": {
"id": 360,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 359,
"name": "IERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 221,
"src": "2311:6:3"
},
"referencedDeclaration": 221,
"src": "2311:6:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 363,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 406,
"src": "2333:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 362,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2333:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 365,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 406,
"src": "2358:13:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 364,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2358:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2301:76:3"
},
"returnParameters": {
"id": 367,
"nodeType": "ParameterList",
"parameters": [],
"src": "2387:0:3"
},
"scope": 445,
"src": "2271:486:3",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 443,
"nodeType": "Block",
"src": "3210:636:3",
"statements": [
{
"assignments": [
416
],
"declarations": [
{
"constant": false,
"id": 416,
"mutability": "mutable",
"name": "returndata",
"nodeType": "VariableDeclaration",
"scope": 443,
"src": "3559:23:3",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 415,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3559:5:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 425,
"initialValue": {
"arguments": [
{
"id": 422,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 412,
"src": "3613:4:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564",
"id": 423,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3619:34:3",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
"typeString": "literal_string \"SafeERC20: low-level call failed\""
},
"value": "SafeERC20: low-level call failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
"typeString": "literal_string \"SafeERC20: low-level call failed\""
}
],
"expression": {
"arguments": [
{
"id": 419,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 410,
"src": "3593:5:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
],
"id": 418,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3585:7:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 417,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3585:7:3",
"typeDescriptions": {}
}
},
"id": 420,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3585:14:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 421,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "functionCall",
"nodeType": "MemberAccess",
"referencedDeclaration": 536,
"src": "3585:27:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$",
"typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
}
},
"id": 424,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3585:69:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3559:95:3"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 429,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 426,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 416,
"src": "3668:10:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 427,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "3668:17:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 428,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3688:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3668:21:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 442,
"nodeType": "IfStatement",
"src": "3664:176:3",
"trueBody": {
"id": 441,
"nodeType": "Block",
"src": "3691:149:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 433,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 416,
"src": "3763:10:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"components": [
{
"id": 435,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3776:4:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bool_$",
"typeString": "type(bool)"
},
"typeName": {
"id": 434,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3776:4:3",
"typeDescriptions": {}
}
}
],
"id": 436,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3775:6:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bool_$",
"typeString": "type(bool)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_type$_t_bool_$",
"typeString": "type(bool)"
}
],
"expression": {
"id": 431,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "3752:3:3",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 432,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "decode",
"nodeType": "MemberAccess",
"src": "3752:10:3",
"typeDescriptions": {
"typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 437,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3752:30:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564",
"id": 438,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3784:44:3",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
"typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
},
"value": "SafeERC20: ERC20 operation did not succeed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
"typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
}
],
"id": 430,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3744:7:3",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 439,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3744:85:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 440,
"nodeType": "ExpressionStatement",
"src": "3744:85:3"
}
]
}
}
]
},
"documentation": {
"id": 407,
"nodeType": "StructuredDocumentation",
"src": "2763:372:3",
"text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."
},
"id": 444,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_callOptionalReturn",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 413,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 410,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 444,
"src": "3169:12:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
"typeName": {
"id": 409,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 408,
"name": "IERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 221,
"src": "3169:6:3"
},
"referencedDeclaration": 221,
"src": "3169:6:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 412,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 444,
"src": "3183:17:3",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 411,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3183:5:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "3168:33:3"
},
"returnParameters": {
"id": 414,
"nodeType": "ParameterList",
"parameters": [],
"src": "3210:0:3"
},
"scope": 445,
"src": "3140:706:3",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
}
],
"scope": 446,
"src": "578:3270:3"
}
],
"src": "33:3816:3"
},
"id": 3
},
"@openzeppelin/contracts/utils/Address.sol": {
"ast": {
"absolutePath": "@openzeppelin/contracts/utils/Address.sol",
"exportedSymbols": {
"Address": [
742
]
},
"id": 743,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 447,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "33:23:4"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 448,
"nodeType": "StructuredDocumentation",
"src": "58:67:4",
"text": " @dev Collection of functions related to the address type"
},
"fullyImplemented": true,
"id": 742,
"linearizedBaseContracts": [
742
],
"name": "Address",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 464,
"nodeType": "Block",
"src": "784:311:4",
"statements": [
{
"assignments": [
457
],
"declarations": [
{
"constant": false,
"id": 457,
"mutability": "mutable",
"name": "size",
"nodeType": "VariableDeclaration",
"scope": 464,
"src": "981:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 456,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "981:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 458,
"nodeType": "VariableDeclarationStatement",
"src": "981:12:4"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "1012:52:4",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1026:28:4",
"value": {
"arguments": [
{
"name": "account",
"nodeType": "YulIdentifier",
"src": "1046:7:4"
}
],
"functionName": {
"name": "extcodesize",
"nodeType": "YulIdentifier",
"src": "1034:11:4"
},
"nodeType": "YulFunctionCall",
"src": "1034:20:4"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1026:4:4"
}
]
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 451,
"isOffset": false,
"isSlot": false,
"src": "1046:7:4",
"valueSize": 1
},
{
"declaration": 457,
"isOffset": false,
"isSlot": false,
"src": "1026:4:4",
"valueSize": 1
}
],
"id": 459,
"nodeType": "InlineAssembly",
"src": "1003:61:4"
},
{
"expression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 462,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 460,
"name": "size",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "1080:4:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 461,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1087:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1080:8:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 455,
"id": 463,
"nodeType": "Return",
"src": "1073:15:4"
}
]
},
"documentation": {
"id": 449,
"nodeType": "StructuredDocumentation",
"src": "148:565:4",
"text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="
},
"id": 465,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isContract",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 452,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 451,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 465,
"src": "738:15:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 450,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "738:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "737:17:4"
},
"returnParameters": {
"id": 455,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 454,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 465,
"src": "778:4:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 453,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "778:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "777:6:4"
},
"scope": 742,
"src": "718:377:4",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 498,
"nodeType": "Block",
"src": "2083:241:4",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 480,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"arguments": [
{
"id": 476,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "2109:4:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Address_$742",
"typeString": "library Address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Address_$742",
"typeString": "library Address"
}
],
"id": 475,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2101:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 474,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2101:7:4",
"typeDescriptions": {}
}
},
"id": 477,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2101:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 478,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balance",
"nodeType": "MemberAccess",
"src": "2101:21:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"id": 479,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 470,
"src": "2126:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2101:31:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
"id": 481,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2134:31:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
"typeString": "literal_string \"Address: insufficient balance\""
},
"value": "Address: insufficient balance"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
"typeString": "literal_string \"Address: insufficient balance\""
}
],
"id": 473,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2093:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 482,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2093:73:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 483,
"nodeType": "ExpressionStatement",
"src": "2093:73:4"
},
{
"assignments": [
485,
null
],
"declarations": [
{
"constant": false,
"id": 485,
"mutability": "mutable",
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 498,
"src": "2178:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 484,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2178:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
null
],
"id": 492,
"initialValue": {
"arguments": [
{
"hexValue": "",
"id": 490,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2226:2:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
}
],
"expression": {
"id": 486,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 468,
"src": "2196:9:4",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"id": 487,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "call",
"nodeType": "MemberAccess",
"src": "2196:14:4",
"typeDescriptions": {
"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "function (bytes memory) payable returns (bool,bytes memory)"
}
},
"id": 489,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"id": 488,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 470,
"src": "2218:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"src": "2196:29:4",
"typeDescriptions": {
"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
"typeString": "function (bytes memory) payable returns (bool,bytes memory)"
}
},
"id": 491,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2196:33:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2177:52:4"
},
{
"expression": {
"arguments": [
{
"id": 494,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 485,
"src": "2247:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
"id": 495,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2256:60:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
"typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
},
"value": "Address: unable to send value, recipient may have reverted"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
"typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
}
],
"id": 493,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2239:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 496,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2239:78:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 497,
"nodeType": "ExpressionStatement",
"src": "2239:78:4"
}
]
},
"documentation": {
"id": 466,
"nodeType": "StructuredDocumentation",
"src": "1101:906:4",
"text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
},
"id": 499,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "sendValue",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 471,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 468,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"scope": 499,
"src": "2031:25:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
"typeName": {
"id": 467,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2031:15:4",
"stateMutability": "payable",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 470,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 499,
"src": "2058:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 469,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2058:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2030:43:4"
},
"returnParameters": {
"id": 472,
"nodeType": "ParameterList",
"parameters": [],
"src": "2083:0:4"
},
"scope": 742,
"src": "2012:312:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 515,
"nodeType": "Block",
"src": "3155:84:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 510,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 502,
"src": "3185:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 511,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 504,
"src": "3193:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564",
"id": 512,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3199:32:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
"typeString": "literal_string \"Address: low-level call failed\""
},
"value": "Address: low-level call failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
"typeString": "literal_string \"Address: low-level call failed\""
}
],
"id": 509,
"name": "functionCall",
"nodeType": "Identifier",
"overloadedDeclarations": [
516,
536
],
"referencedDeclaration": 536,
"src": "3172:12:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
}
},
"id": 513,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3172:60:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 508,
"id": 514,
"nodeType": "Return",
"src": "3165:67:4"
}
]
},
"documentation": {
"id": 500,
"nodeType": "StructuredDocumentation",
"src": "2330:731:4",
"text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"
},
"id": 516,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 505,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 502,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 516,
"src": "3088:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 501,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3088:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 504,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 516,
"src": "3104:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 503,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3104:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "3087:35:4"
},
"returnParameters": {
"id": 508,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 507,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 516,
"src": "3141:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 506,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3141:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "3140:14:4"
},
"scope": 742,
"src": "3066:173:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 535,
"nodeType": "Block",
"src": "3608:76:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 529,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 519,
"src": "3647:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 530,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 521,
"src": "3655:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"hexValue": "30",
"id": 531,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3661:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"id": 532,
"name": "errorMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 523,
"src": "3664:12:4",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 528,
"name": "functionCallWithValue",
"nodeType": "Identifier",
"overloadedDeclarations": [
556,
606
],
"referencedDeclaration": 606,
"src": "3625:21:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
}
},
"id": 533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3625:52:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 527,
"id": 534,
"nodeType": "Return",
"src": "3618:59:4"
}
]
},
"documentation": {
"id": 517,
"nodeType": "StructuredDocumentation",
"src": "3245:211:4",
"text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
},
"id": 536,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 524,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 519,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 536,
"src": "3492:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 518,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3492:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 521,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 536,
"src": "3516:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 520,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3516:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 523,
"mutability": "mutable",
"name": "errorMessage",
"nodeType": "VariableDeclaration",
"scope": 536,
"src": "3543:26:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 522,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3543:6:4",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "3482:93:4"
},
"returnParameters": {
"id": 527,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 526,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 536,
"src": "3594:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 525,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3594:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "3593:14:4"
},
"scope": 742,
"src": "3461:223:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 555,
"nodeType": "Block",
"src": "4189:111:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 549,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 539,
"src": "4228:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 550,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 541,
"src": "4236:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"id": 551,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 543,
"src": "4242:5:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564",
"id": 552,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4249:43:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
"typeString": "literal_string \"Address: low-level call with value failed\""
},
"value": "Address: low-level call with value failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
"typeString": "literal_string \"Address: low-level call with value failed\""
}
],
"id": 548,
"name": "functionCallWithValue",
"nodeType": "Identifier",
"overloadedDeclarations": [
556,
606
],
"referencedDeclaration": 606,
"src": "4206:21:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
}
},
"id": 553,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4206:87:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 547,
"id": 554,
"nodeType": "Return",
"src": "4199:94:4"
}
]
},
"documentation": {
"id": 537,
"nodeType": "StructuredDocumentation",
"src": "3690:351:4",
"text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"
},
"id": 556,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionCallWithValue",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 544,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 539,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 556,
"src": "4086:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 538,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4086:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 541,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 556,
"src": "4110:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 540,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4110:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 543,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 556,
"src": "4137:13:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 542,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4137:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4076:80:4"
},
"returnParameters": {
"id": 547,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 546,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 556,
"src": "4175:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 545,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4175:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "4174:14:4"
},
"scope": 742,
"src": "4046:254:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 605,
"nodeType": "Block",
"src": "4727:320:4",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 577,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"arguments": [
{
"id": 573,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "4753:4:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Address_$742",
"typeString": "library Address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Address_$742",
"typeString": "library Address"
}
],
"id": 572,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4745:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 571,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4745:7:4",
"typeDescriptions": {}
}
},
"id": 574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4745:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 575,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balance",
"nodeType": "MemberAccess",
"src": "4745:21:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"id": 576,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 563,
"src": "4770:5:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4745:30:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c",
"id": 578,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4777:40:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
"typeString": "literal_string \"Address: insufficient balance for call\""
},
"value": "Address: insufficient balance for call"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
"typeString": "literal_string \"Address: insufficient balance for call\""
}
],
"id": 570,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4737:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 579,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4737:81:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 580,
"nodeType": "ExpressionStatement",
"src": "4737:81:4"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 583,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "4847:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 582,
"name": "isContract",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 465,
"src": "4836:10:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4836:18:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
"id": 585,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4856:31:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
"typeString": "literal_string \"Address: call to non-contract\""
},
"value": "Address: call to non-contract"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
"typeString": "literal_string \"Address: call to non-contract\""
}
],
"id": 581,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4828:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 586,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4828:60:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 587,
"nodeType": "ExpressionStatement",
"src": "4828:60:4"
},
{
"assignments": [
589,
591
],
"declarations": [
{
"constant": false,
"id": 589,
"mutability": "mutable",
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 605,
"src": "4900:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 588,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4900:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 591,
"mutability": "mutable",
"name": "returndata",
"nodeType": "VariableDeclaration",
"scope": 605,
"src": "4914:23:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 590,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4914:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 598,
"initialValue": {
"arguments": [
{
"id": 596,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 561,
"src": "4967:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 592,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "4941:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 593,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "call",
"nodeType": "MemberAccess",
"src": "4941:11:4",
"typeDescriptions": {
"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "function (bytes memory) payable returns (bool,bytes memory)"
}
},
"id": 595,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"id": 594,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 563,
"src": "4960:5:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"src": "4941:25:4",
"typeDescriptions": {
"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
"typeString": "function (bytes memory) payable returns (bool,bytes memory)"
}
},
"id": 597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4941:31:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4899:73:4"
},
{
"expression": {
"arguments": [
{
"id": 600,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 589,
"src": "5006:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"id": 601,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 591,
"src": "5015:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"id": 602,
"name": "errorMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 565,
"src": "5027:12:4",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 599,
"name": "verifyCallResult",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "4989:16:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
}
},
"id": 603,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4989:51:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 569,
"id": 604,
"nodeType": "Return",
"src": "4982:58:4"
}
]
},
"documentation": {
"id": 557,
"nodeType": "StructuredDocumentation",
"src": "4306:237:4",
"text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
},
"id": 606,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionCallWithValue",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 566,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 559,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 606,
"src": "4588:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 558,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4588:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 561,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 606,
"src": "4612:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 560,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4612:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 563,
"mutability": "mutable",
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 606,
"src": "4639:13:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 562,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4639:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 565,
"mutability": "mutable",
"name": "errorMessage",
"nodeType": "VariableDeclaration",
"scope": 606,
"src": "4662:26:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 564,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "4662:6:4",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "4578:116:4"
},
"returnParameters": {
"id": 569,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 568,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 606,
"src": "4713:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 567,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4713:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "4712:14:4"
},
"scope": 742,
"src": "4548:499:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 622,
"nodeType": "Block",
"src": "5324:97:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 617,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 609,
"src": "5360:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 618,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 611,
"src": "5368:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564",
"id": 619,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5374:39:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
"typeString": "literal_string \"Address: low-level static call failed\""
},
"value": "Address: low-level static call failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
"typeString": "literal_string \"Address: low-level static call failed\""
}
],
"id": 616,
"name": "functionStaticCall",
"nodeType": "Identifier",
"overloadedDeclarations": [
623,
658
],
"referencedDeclaration": 658,
"src": "5341:18:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"
}
},
"id": 620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5341:73:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 615,
"id": 621,
"nodeType": "Return",
"src": "5334:80:4"
}
]
},
"documentation": {
"id": 607,
"nodeType": "StructuredDocumentation",
"src": "5053:166:4",
"text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
},
"id": 623,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionStaticCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 612,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 609,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 623,
"src": "5252:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 608,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5252:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 611,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 623,
"src": "5268:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 610,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5268:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5251:35:4"
},
"returnParameters": {
"id": 615,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 614,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 623,
"src": "5310:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 613,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5310:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5309:14:4"
},
"scope": 742,
"src": "5224:197:4",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 657,
"nodeType": "Block",
"src": "5763:228:4",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 637,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 626,
"src": "5792:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 636,
"name": "isContract",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 465,
"src": "5781:10:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5781:18:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
"id": 639,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5801:38:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
"typeString": "literal_string \"Address: static call to non-contract\""
},
"value": "Address: static call to non-contract"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
"typeString": "literal_string \"Address: static call to non-contract\""
}
],
"id": 635,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5773:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 640,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5773:67:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 641,
"nodeType": "ExpressionStatement",
"src": "5773:67:4"
},
{
"assignments": [
643,
645
],
"declarations": [
{
"constant": false,
"id": 643,
"mutability": "mutable",
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 657,
"src": "5852:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 642,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "5852:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 645,
"mutability": "mutable",
"name": "returndata",
"nodeType": "VariableDeclaration",
"scope": 657,
"src": "5866:23:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 644,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5866:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 650,
"initialValue": {
"arguments": [
{
"id": 648,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 628,
"src": "5911:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 646,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 626,
"src": "5893:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 647,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "staticcall",
"nodeType": "MemberAccess",
"src": "5893:17:4",
"typeDescriptions": {
"typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "function (bytes memory) view returns (bool,bytes memory)"
}
},
"id": 649,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5893:23:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5851:65:4"
},
{
"expression": {
"arguments": [
{
"id": 652,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 643,
"src": "5950:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"id": 653,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 645,
"src": "5959:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"id": 654,
"name": "errorMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 630,
"src": "5971:12:4",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 651,
"name": "verifyCallResult",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "5933:16:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
}
},
"id": 655,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5933:51:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 634,
"id": 656,
"nodeType": "Return",
"src": "5926:58:4"
}
]
},
"documentation": {
"id": 624,
"nodeType": "StructuredDocumentation",
"src": "5427:173:4",
"text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
},
"id": 658,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionStaticCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 631,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 626,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 658,
"src": "5642:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 625,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5642:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 628,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 658,
"src": "5666:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 627,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5666:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 630,
"mutability": "mutable",
"name": "errorMessage",
"nodeType": "VariableDeclaration",
"scope": 658,
"src": "5693:26:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 629,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "5693:6:4",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "5632:93:4"
},
"returnParameters": {
"id": 634,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 633,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 658,
"src": "5749:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 632,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5749:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5748:14:4"
},
"scope": 742,
"src": "5605:386:4",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 674,
"nodeType": "Block",
"src": "6267:101:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 669,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 661,
"src": "6305:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 670,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 663,
"src": "6313:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
"id": 671,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6319:41:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
"typeString": "literal_string \"Address: low-level delegate call failed\""
},
"value": "Address: low-level delegate call failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
"typeString": "literal_string \"Address: low-level delegate call failed\""
}
],
"id": 668,
"name": "functionDelegateCall",
"nodeType": "Identifier",
"overloadedDeclarations": [
675,
710
],
"referencedDeclaration": 710,
"src": "6284:20:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
}
},
"id": 672,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6284:77:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 667,
"id": 673,
"nodeType": "Return",
"src": "6277:84:4"
}
]
},
"documentation": {
"id": 659,
"nodeType": "StructuredDocumentation",
"src": "5997:168:4",
"text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
},
"id": 675,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionDelegateCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 664,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 661,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 675,
"src": "6200:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 660,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6200:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 663,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 675,
"src": "6216:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 662,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "6216:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "6199:35:4"
},
"returnParameters": {
"id": 667,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 666,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 675,
"src": "6253:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 665,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "6253:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "6252:14:4"
},
"scope": 742,
"src": "6170:198:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 709,
"nodeType": "Block",
"src": "6709:232:4",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 689,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 678,
"src": "6738:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 688,
"name": "isContract",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 465,
"src": "6727:10:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 690,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6727:18:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374",
"id": 691,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6747:40:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
"typeString": "literal_string \"Address: delegate call to non-contract\""
},
"value": "Address: delegate call to non-contract"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
"typeString": "literal_string \"Address: delegate call to non-contract\""
}
],
"id": 687,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "6719:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 692,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6719:69:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 693,
"nodeType": "ExpressionStatement",
"src": "6719:69:4"
},
{
"assignments": [
695,
697
],
"declarations": [
{
"constant": false,
"id": 695,
"mutability": "mutable",
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 709,
"src": "6800:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 694,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "6800:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 697,
"mutability": "mutable",
"name": "returndata",
"nodeType": "VariableDeclaration",
"scope": 709,
"src": "6814:23:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 696,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "6814:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 702,
"initialValue": {
"arguments": [
{
"id": 700,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 680,
"src": "6861:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 698,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 678,
"src": "6841:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 699,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "delegatecall",
"nodeType": "MemberAccess",
"src": "6841:19:4",
"typeDescriptions": {
"typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "function (bytes memory) returns (bool,bytes memory)"
}
},
"id": 701,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6841:25:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6799:67:4"
},
{
"expression": {
"arguments": [
{
"id": 704,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 695,
"src": "6900:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"id": 705,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 697,
"src": "6909:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"id": 706,
"name": "errorMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 682,
"src": "6921:12:4",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 703,
"name": "verifyCallResult",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "6883:16:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
}
},
"id": 707,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6883:51:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 686,
"id": 708,
"nodeType": "Return",
"src": "6876:58:4"
}
]
},
"documentation": {
"id": 676,
"nodeType": "StructuredDocumentation",
"src": "6374:175:4",
"text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
},
"id": 710,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionDelegateCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 683,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 678,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 710,
"src": "6593:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 677,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6593:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 680,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 710,
"src": "6617:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 679,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "6617:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 682,
"mutability": "mutable",
"name": "errorMessage",
"nodeType": "VariableDeclaration",
"scope": 710,
"src": "6644:26:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 681,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "6644:6:4",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "6583:93:4"
},
"returnParameters": {
"id": 686,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 685,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 710,
"src": "6695:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 684,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "6695:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "6694:14:4"
},
"scope": 742,
"src": "6554:387:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 740,
"nodeType": "Block",
"src": "7321:532:4",
"statements": [
{
"condition": {
"id": 722,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 713,
"src": "7335:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 738,
"nodeType": "Block",
"src": "7392:455:4",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 729,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 726,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 715,
"src": "7476:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 727,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "7476:17:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 728,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7496:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7476:21:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 736,
"nodeType": "Block",
"src": "7784:53:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 733,
"name": "errorMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 717,
"src": "7809:12:4",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 732,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "7802:6:4",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 734,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7802:20:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 735,
"nodeType": "ExpressionStatement",
"src": "7802:20:4"
}
]
},
"id": 737,
"nodeType": "IfStatement",
"src": "7472:365:4",
"trueBody": {
"id": 731,
"nodeType": "Block",
"src": "7499:279:4",
"statements": [
{
"AST": {
"nodeType": "YulBlock",
"src": "7619:145:4",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7641:40:4",
"value": {
"arguments": [
{
"name": "returndata",
"nodeType": "YulIdentifier",
"src": "7670:10:4"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "7664:5:4"
},
"nodeType": "YulFunctionCall",
"src": "7664:17:4"
},
"variables": [
{
"name": "returndata_size",
"nodeType": "YulTypedName",
"src": "7645:15:4",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7713:2:4",
"type": "",
"value": "32"
},
{
"name": "returndata",
"nodeType": "YulIdentifier",
"src": "7717:10:4"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7709:3:4"
},
"nodeType": "YulFunctionCall",
"src": "7709:19:4"
},
{
"name": "returndata_size",
"nodeType": "YulIdentifier",
"src": "7730:15:4"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "7702:6:4"
},
"nodeType": "YulFunctionCall",
"src": "7702:44:4"
},
"nodeType": "YulExpressionStatement",
"src": "7702:44:4"
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 715,
"isOffset": false,
"isSlot": false,
"src": "7670:10:4",
"valueSize": 1
},
{
"declaration": 715,
"isOffset": false,
"isSlot": false,
"src": "7717:10:4",
"valueSize": 1
}
],
"id": 730,
"nodeType": "InlineAssembly",
"src": "7610:154:4"
}
]
}
}
]
},
"id": 739,
"nodeType": "IfStatement",
"src": "7331:516:4",
"trueBody": {
"id": 725,
"nodeType": "Block",
"src": "7344:42:4",
"statements": [
{
"expression": {
"id": 723,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 715,
"src": "7365:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 721,
"id": 724,
"nodeType": "Return",
"src": "7358:17:4"
}
]
}
}
]
},
"documentation": {
"id": 711,
"nodeType": "StructuredDocumentation",
"src": "6947:209:4",
"text": " @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"
},
"id": 741,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "verifyCallResult",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 718,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 713,
"mutability": "mutable",
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 741,
"src": "7196:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 712,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7196:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 715,
"mutability": "mutable",
"name": "returndata",
"nodeType": "VariableDeclaration",
"scope": 741,
"src": "7218:23:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 714,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "7218:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 717,
"mutability": "mutable",
"name": "errorMessage",
"nodeType": "VariableDeclaration",
"scope": 741,
"src": "7251:26:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 716,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "7251:6:4",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "7186:97:4"
},
"returnParameters": {
"id": 721,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 720,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 741,
"src": "7307:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 719,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "7307:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "7306:14:4"
},
"scope": 742,
"src": "7161:692:4",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 743,
"src": "126:7729:4"
}
],
"src": "33:7823:4"
},
"id": 4
},
"@openzeppelin/contracts/utils/Context.sol": {
"ast": {
"absolutePath": "@openzeppelin/contracts/utils/Context.sol",
"exportedSymbols": {
"Context": [
764
]
},
"id": 765,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 744,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "33:23:5"
},
{
"abstract": true,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 745,
"nodeType": "StructuredDocumentation",
"src": "58:496:5",
"text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."
},
"fullyImplemented": true,
"id": 764,
"linearizedBaseContracts": [
764
],
"name": "Context",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 753,
"nodeType": "Block",
"src": "649:34:5",
"statements": [
{
"expression": {
"expression": {
"id": 750,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "666:3:5",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 751,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "666:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 749,
"id": 752,
"nodeType": "Return",
"src": "659:17:5"
}
]
},
"id": 754,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_msgSender",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 746,
"nodeType": "ParameterList",
"parameters": [],
"src": "606:2:5"
},
"returnParameters": {
"id": 749,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 748,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 754,
"src": "640:7:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 747,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "640:7:5",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "639:9:5"
},
"scope": 764,
"src": "587:96:5",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 762,
"nodeType": "Block",
"src": "756:32:5",
"statements": [
{
"expression": {
"expression": {
"id": 759,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "773:3:5",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 760,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "data",
"nodeType": "MemberAccess",
"src": "773:8:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"functionReturnParameters": 758,
"id": 761,
"nodeType": "Return",
"src": "766:15:5"
}
]
},
"id": 763,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_msgData",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 755,
"nodeType": "ParameterList",
"parameters": [],
"src": "706:2:5"
},
"returnParameters": {
"id": 758,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 757,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 763,
"src": "740:14:5",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 756,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "740:5:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "739:16:5"
},
"scope": 764,
"src": "689:99:5",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
}
],
"scope": 765,
"src": "555:235:5"
}
],
"src": "33:758:5"
},
"id": 5
},
"contracts/PangolinVoteCalculator.sol": {
"ast": {
"absolutePath": "contracts/PangolinVoteCalculator.sol",
"exportedSymbols": {
"Context": [
764
],
"ILiquidityPoolManagerV2": [
775
],
"IPangolinERC20": [
810
],
"IPangolinPair": [
788
],
"IStakingRewards": [
835
],
"Ownable": [
103
],
"PangolinVoteCalculator": [
1095
]
},
"id": 1096,
"license": "GPL-3.0-or-later",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 766,
"literals": [
"solidity",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:22:6"
},
{
"absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
"file": "@openzeppelin/contracts/access/Ownable.sol",
"id": 767,
"nodeType": "ImportDirective",
"scope": 1096,
"sourceUnit": 104,
"src": "26:52:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 775,
"linearizedBaseContracts": [
775
],
"name": "ILiquidityPoolManagerV2",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "16934fc4",
"id": 774,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "stakes",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 770,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 769,
"mutability": "mutable",
"name": "pair",
"nodeType": "VariableDeclaration",
"scope": 774,
"src": "139:12:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 768,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "139:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "138:14:6"
},
"returnParameters": {
"id": 773,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 772,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 774,
"src": "176:7:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 771,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "176:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "175:9:6"
},
"scope": 775,
"src": "123:62:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 1096,
"src": "82:106:6"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 788,
"linearizedBaseContracts": [
788
],
"name": "IPangolinPair",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "18160ddd",
"id": 780,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "totalSupply",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 776,
"nodeType": "ParameterList",
"parameters": [],
"src": "243:2:6"
},
"returnParameters": {
"id": 779,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 778,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 780,
"src": "269:4:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 777,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "269:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "268:6:6"
},
"scope": 788,
"src": "223:52:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "70a08231",
"id": 787,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 783,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 782,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 787,
"src": "300:13:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 781,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "300:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "299:15:6"
},
"returnParameters": {
"id": 786,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 785,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 787,
"src": "338:4:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 784,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "338:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "337:6:6"
},
"scope": 788,
"src": "281:63:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 1096,
"src": "192:155:6"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 810,
"linearizedBaseContracts": [
810
],
"name": "IPangolinERC20",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "70a08231",
"id": 795,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 791,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 790,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 795,
"src": "402:13:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 789,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "402:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "401:15:6"
},
"returnParameters": {
"id": 794,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 793,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 795,
"src": "440:4:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 792,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "440:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "439:6:6"
},
"scope": 810,
"src": "383:63:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "b4b5ea57",
"id": 802,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "getCurrentVotes",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 798,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 797,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 802,
"src": "477:15:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 796,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "477:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "476:17:6"
},
"returnParameters": {
"id": 801,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 800,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 802,
"src": "517:4:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 799,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "517:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "516:6:6"
},
"scope": 810,
"src": "452:71:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "587cde1e",
"id": 809,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "delegates",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 805,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 804,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 809,
"src": "548:15:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 803,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "548:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "547:17:6"
},
"returnParameters": {
"id": 808,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 807,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 809,
"src": "588:7:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 806,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "588:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "587:9:6"
},
"scope": 810,
"src": "529:68:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 1096,
"src": "351:249:6"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 835,
"linearizedBaseContracts": [
835
],
"name": "IStakingRewards",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "d1af0c7d",
"id": 815,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "rewardsToken",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 811,
"nodeType": "ParameterList",
"parameters": [],
"src": "658:2:6"
},
"returnParameters": {
"id": 814,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 813,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 815,
"src": "684:7:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 812,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "684:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "683:9:6"
},
"scope": 835,
"src": "637:56:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "72f702f3",
"id": 820,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "stakingToken",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 816,
"nodeType": "ParameterList",
"parameters": [],
"src": "720:2:6"
},
"returnParameters": {
"id": 819,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 818,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 820,
"src": "746:7:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 817,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "746:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "745:9:6"
},
"scope": 835,
"src": "699:56:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "70a08231",
"id": 827,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 823,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 822,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 827,
"src": "780:13:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 821,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "780:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "779:15:6"
},
"returnParameters": {
"id": 826,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 825,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 827,
"src": "818:4:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 824,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "818:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "817:6:6"
},
"scope": 835,
"src": "761:63:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "008cc262",
"id": 834,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "earned",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 830,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 829,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"scope": 834,
"src": "846:15:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 828,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "846:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "845:17:6"
},
"returnParameters": {
"id": 833,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 832,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 834,
"src": "886:4:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 831,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "886:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "885:6:6"
},
"scope": 835,
"src": "830:62:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 1096,
"src": "604:291:6"
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 836,
"name": "Ownable",
"nodeType": "IdentifierPath",
"referencedDeclaration": 103,
"src": "980:7:6"
},
"id": 837,
"nodeType": "InheritanceSpecifier",
"src": "980:7:6"
}
],
"contractDependencies": [
103,
764
],
"contractKind": "contract",
"fullyImplemented": true,
"id": 1095,
"linearizedBaseContracts": [
1095,
103,
764
],
"name": "PangolinVoteCalculator",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"id": 840,
"mutability": "mutable",
"name": "png",
"nodeType": "VariableDeclaration",
"scope": 1095,
"src": "997:18:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
},
"typeName": {
"id": 839,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 838,
"name": "IPangolinERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 810,
"src": "997:14:6"
},
"referencedDeclaration": 810,
"src": "997:14:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 843,
"mutability": "mutable",
"name": "liquidityManager",
"nodeType": "VariableDeclaration",
"scope": 1095,
"src": "1022:40:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILiquidityPoolManagerV2_$775",
"typeString": "contract ILiquidityPoolManagerV2"
},
"typeName": {
"id": 842,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 841,
"name": "ILiquidityPoolManagerV2",
"nodeType": "IdentifierPath",
"referencedDeclaration": 775,
"src": "1022:23:6"
},
"referencedDeclaration": 775,
"src": "1022:23:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILiquidityPoolManagerV2_$775",
"typeString": "contract ILiquidityPoolManagerV2"
}
},
"visibility": "internal"
},
{
"body": {
"id": 862,
"nodeType": "Block",
"src": "1124:117:6",
"statements": [
{
"expression": {
"id": 854,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 850,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 840,
"src": "1135:3:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 852,
"name": "_png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 845,
"src": "1156:4:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 851,
"name": "IPangolinERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 810,
"src": "1141:14:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IPangolinERC20_$810_$",
"typeString": "type(contract IPangolinERC20)"
}
},
"id": 853,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1141:20:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
},
"src": "1135:26:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
},
"id": 855,
"nodeType": "ExpressionStatement",
"src": "1135:26:6"
},
{
"expression": {
"id": 860,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 856,
"name": "liquidityManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 843,
"src": "1172:16:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILiquidityPoolManagerV2_$775",
"typeString": "contract ILiquidityPoolManagerV2"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 858,
"name": "_liquidityManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 847,
"src": "1215:17:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 857,
"name": "ILiquidityPoolManagerV2",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 775,
"src": "1191:23:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ILiquidityPoolManagerV2_$775_$",
"typeString": "type(contract ILiquidityPoolManagerV2)"
}
},
"id": 859,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1191:42:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILiquidityPoolManagerV2_$775",
"typeString": "contract ILiquidityPoolManagerV2"
}
},
"src": "1172:61:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILiquidityPoolManagerV2_$775",
"typeString": "contract ILiquidityPoolManagerV2"
}
},
"id": 861,
"nodeType": "ExpressionStatement",
"src": "1172:61:6"
}
]
},
"id": 863,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 848,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 845,
"mutability": "mutable",
"name": "_png",
"nodeType": "VariableDeclaration",
"scope": 863,
"src": "1083:12:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 844,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1083:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 847,
"mutability": "mutable",
"name": "_liquidityManager",
"nodeType": "VariableDeclaration",
"scope": 863,
"src": "1097:25:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 846,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1097:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1082:41:6"
},
"returnParameters": {
"id": 849,
"nodeType": "ParameterList",
"parameters": [],
"src": "1124:0:6"
},
"scope": 1095,
"src": "1071:170:6",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 967,
"nodeType": "Block",
"src": "1354:770:6",
"statements": [
{
"body": {
"id": 965,
"nodeType": "Block",
"src": "1399:718:6",
"statements": [
{
"assignments": [
885
],
"declarations": [
{
"constant": false,
"id": 885,
"mutability": "mutable",
"name": "pair",
"nodeType": "VariableDeclaration",
"scope": 965,
"src": "1414:18:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinPair_$788",
"typeString": "contract IPangolinPair"
},
"typeName": {
"id": 884,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 883,
"name": "IPangolinPair",
"nodeType": "IdentifierPath",
"referencedDeclaration": 788,
"src": "1414:13:6"
},
"referencedDeclaration": 788,
"src": "1414:13:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinPair_$788",
"typeString": "contract IPangolinPair"
}
},
"visibility": "internal"
}
],
"id": 891,
"initialValue": {
"arguments": [
{
"baseExpression": {
"id": 887,
"name": "farms",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 868,
"src": "1449:5:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
"typeString": "address[] calldata"
}
},
"id": 889,
"indexExpression": {
"id": 888,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 874,
"src": "1455:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1449:8:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 886,
"name": "IPangolinPair",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 788,
"src": "1435:13:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IPangolinPair_$788_$",
"typeString": "type(contract IPangolinPair)"
}
},
"id": 890,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1435:23:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinPair_$788",
"typeString": "contract IPangolinPair"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1414:44:6"
},
{
"assignments": [
894
],
"declarations": [
{
"constant": false,
"id": 894,
"mutability": "mutable",
"name": "staking",
"nodeType": "VariableDeclaration",
"scope": 965,
"src": "1473:23:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
},
"typeName": {
"id": 893,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 892,
"name": "IStakingRewards",
"nodeType": "IdentifierPath",
"referencedDeclaration": 835,
"src": "1473:15:6"
},
"referencedDeclaration": 835,
"src": "1473:15:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
},
"visibility": "internal"
}
],
"id": 903,
"initialValue": {
"arguments": [
{
"arguments": [
{
"baseExpression": {
"id": 898,
"name": "farms",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 868,
"src": "1539:5:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
"typeString": "address[] calldata"
}
},
"id": 900,
"indexExpression": {
"id": 899,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 874,
"src": "1545:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1539:8:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 896,
"name": "liquidityManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 843,
"src": "1515:16:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILiquidityPoolManagerV2_$775",
"typeString": "contract ILiquidityPoolManagerV2"
}
},
"id": 897,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "stakes",
"nodeType": "MemberAccess",
"referencedDeclaration": 774,
"src": "1515:23:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
"typeString": "function (address) view external returns (address)"
}
},
"id": 901,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1515:33:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 895,
"name": "IStakingRewards",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 835,
"src": "1499:15:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IStakingRewards_$835_$",
"typeString": "type(contract IStakingRewards)"
}
},
"id": 902,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1499:50:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1473:76:6"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 912,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 906,
"name": "staking",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 894,
"src": "1638:7:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
],
"id": 905,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1630:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 904,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1630:7:6",
"typeDescriptions": {}
}
},
"id": 907,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1630:16:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 910,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1658:1:6",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 909,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1650:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 908,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1650:7:6",
"typeDescriptions": {}
}
},
"id": 911,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1650:10:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1630:30:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 914,
"nodeType": "IfStatement",
"src": "1626:44:6",
"trueBody": {
"id": 913,
"nodeType": "Continue",
"src": "1662:8:6"
}
},
{
"assignments": [
916
],
"declarations": [
{
"constant": false,
"id": 916,
"mutability": "mutable",
"name": "pair_total_PNG",
"nodeType": "VariableDeclaration",
"scope": 965,
"src": "1687:19:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 915,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1687:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 923,
"initialValue": {
"arguments": [
{
"baseExpression": {
"id": 919,
"name": "farms",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 868,
"src": "1723:5:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
"typeString": "address[] calldata"
}
},
"id": 921,
"indexExpression": {
"id": 920,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 874,
"src": "1729:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1723:8:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 917,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 840,
"src": "1709:3:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
},
"id": 918,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 795,
"src": "1709:13:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 922,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1709:23:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1687:45:6"
},
{
"assignments": [
925
],
"declarations": [
{
"constant": false,
"id": 925,
"mutability": "mutable",
"name": "pair_total_PGL",
"nodeType": "VariableDeclaration",
"scope": 965,
"src": "1747:19:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 924,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1747:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 929,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 926,
"name": "pair",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 885,
"src": "1769:4:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinPair_$788",
"typeString": "contract IPangolinPair"
}
},
"id": 927,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "totalSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 780,
"src": "1769:16:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
"typeString": "function () view external returns (uint256)"
}
},
"id": 928,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1769:18:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1747:40:6"
},
{
"assignments": [
931
],
"declarations": [
{
"constant": false,
"id": 931,
"mutability": "mutable",
"name": "PGL_hodling",
"nodeType": "VariableDeclaration",
"scope": 965,
"src": "1847:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 930,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1847:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 936,
"initialValue": {
"arguments": [
{
"id": 934,
"name": "voter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 865,
"src": "1881:5:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 932,
"name": "pair",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 885,
"src": "1866:4:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinPair_$788",
"typeString": "contract IPangolinPair"
}
},
"id": 933,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 787,
"src": "1866:14:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 935,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1866:21:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1847:40:6"
},
{
"assignments": [
938
],
"declarations": [
{
"constant": false,
"id": 938,
"mutability": "mutable",
"name": "PGL_staking",
"nodeType": "VariableDeclaration",
"scope": 965,
"src": "1902:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 937,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1902:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 943,
"initialValue": {
"arguments": [
{
"id": 941,
"name": "voter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 865,
"src": "1939:5:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 939,
"name": "staking",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 894,
"src": "1921:7:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
},
"id": 940,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 827,
"src": "1921:17:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 942,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1921:24:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1902:43:6"
},
{
"assignments": [
945
],
"declarations": [
{
"constant": false,
"id": 945,
"mutability": "mutable",
"name": "pending_PNG",
"nodeType": "VariableDeclaration",
"scope": 965,
"src": "1962:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 944,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1962:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 950,
"initialValue": {
"arguments": [
{
"id": 948,
"name": "voter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 865,
"src": "1996:5:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 946,
"name": "staking",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 894,
"src": "1981:7:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
},
"id": 947,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "earned",
"nodeType": "MemberAccess",
"referencedDeclaration": 834,
"src": "1981:14:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 949,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1981:21:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1962:40:6"
},
{
"expression": {
"id": 963,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 951,
"name": "votes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 871,
"src": "2019:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 962,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 960,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 957,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 954,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 952,
"name": "PGL_hodling",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 931,
"src": "2030:11:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 953,
"name": "PGL_staking",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "2044:11:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2030:25:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 955,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "2029:27:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"id": 956,
"name": "pair_total_PNG",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 916,
"src": "2059:14:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2029:44:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 958,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "2028:46:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"id": 959,
"name": "pair_total_PGL",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 925,
"src": "2077:14:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2028:63:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 961,
"name": "pending_PNG",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 945,
"src": "2094:11:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2028:77:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2019:86:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 964,
"nodeType": "ExpressionStatement",
"src": "2019:86:6"
}
]
},
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 879,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 876,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 874,
"src": "1378:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"expression": {
"id": 877,
"name": "farms",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 868,
"src": "1380:5:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
"typeString": "address[] calldata"
}
},
"id": 878,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "1380:12:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1378:14:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 966,
"initializationExpression": {
"assignments": [
874
],
"declarations": [
{
"constant": false,
"id": 874,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 966,
"src": "1370:6:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 873,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1370:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 875,
"nodeType": "VariableDeclarationStatement",
"src": "1370:6:6"
},
"loopExpression": {
"expression": {
"id": 881,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "1394:3:6",
"subExpression": {
"id": 880,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 874,
"src": "1394:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 882,
"nodeType": "ExpressionStatement",
"src": "1394:3:6"
},
"nodeType": "ForStatement",
"src": "1365:752:6"
}
]
},
"functionSelector": "45c09daf",
"id": 968,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getVotesFromFarming",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 869,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 865,
"mutability": "mutable",
"name": "voter",
"nodeType": "VariableDeclaration",
"scope": 968,
"src": "1278:13:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 864,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1278:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 868,
"mutability": "mutable",
"name": "farms",
"nodeType": "VariableDeclaration",
"scope": 968,
"src": "1293:24:6",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 866,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1293:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 867,
"nodeType": "ArrayTypeName",
"src": "1293:9:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"visibility": "internal"
}
],
"src": "1277:41:6"
},
"returnParameters": {
"id": 872,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 871,
"mutability": "mutable",
"name": "votes",
"nodeType": "VariableDeclaration",
"scope": 968,
"src": "1342:10:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 870,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1342:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1341:12:6"
},
"scope": 1095,
"src": "1249:875:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 1046,
"nodeType": "Block",
"src": "2238:402:6",
"statements": [
{
"body": {
"id": 1044,
"nodeType": "Block",
"src": "2284:349:6",
"statements": [
{
"assignments": [
990
],
"declarations": [
{
"constant": false,
"id": 990,
"mutability": "mutable",
"name": "staking",
"nodeType": "VariableDeclaration",
"scope": 1044,
"src": "2299:23:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
},
"typeName": {
"id": 989,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 988,
"name": "IStakingRewards",
"nodeType": "IdentifierPath",
"referencedDeclaration": 835,
"src": "2299:15:6"
},
"referencedDeclaration": 835,
"src": "2299:15:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
},
"visibility": "internal"
}
],
"id": 996,
"initialValue": {
"arguments": [
{
"baseExpression": {
"id": 992,
"name": "stakes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 973,
"src": "2341:6:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
"typeString": "address[] calldata"
}
},
"id": 994,
"indexExpression": {
"id": 993,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 979,
"src": "2348:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2341:9:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 991,
"name": "IStakingRewards",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 835,
"src": "2325:15:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IStakingRewards_$835_$",
"typeString": "type(contract IStakingRewards)"
}
},
"id": 995,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2325:26:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2299:52:6"
},
{
"assignments": [
998
],
"declarations": [
{
"constant": false,
"id": 998,
"mutability": "mutable",
"name": "staked_PNG",
"nodeType": "VariableDeclaration",
"scope": 1044,
"src": "2368:15:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 997,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2368:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 1016,
"initialValue": {
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1006,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 999,
"name": "staking",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 990,
"src": "2386:7:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
},
"id": 1000,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "stakingToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 820,
"src": "2386:20:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 1001,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2386:22:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"id": 1004,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 840,
"src": "2420:3:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
],
"id": 1003,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2412:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1002,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2412:7:6",
"typeDescriptions": {}
}
},
"id": 1005,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2412:12:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2386:38:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"arguments": [
{
"hexValue": "30",
"id": 1013,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2459:1:6",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1012,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2454:4:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1011,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2454:4:6",
"typeDescriptions": {}
}
},
"id": 1014,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2454:7:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1015,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "2386:75:6",
"trueExpression": {
"arguments": [
{
"id": 1009,
"name": "voter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 970,
"src": "2445:5:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 1007,
"name": "staking",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 990,
"src": "2427:7:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
},
"id": 1008,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 827,
"src": "2427:17:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1010,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2427:24:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2368:93:6"
},
{
"assignments": [
1018
],
"declarations": [
{
"constant": false,
"id": 1018,
"mutability": "mutable",
"name": "pending_PNG",
"nodeType": "VariableDeclaration",
"scope": 1044,
"src": "2478:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1017,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2478:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 1036,
"initialValue": {
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1026,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1019,
"name": "staking",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 990,
"src": "2497:7:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
},
"id": 1020,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "rewardsToken",
"nodeType": "MemberAccess",
"referencedDeclaration": 815,
"src": "2497:20:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 1021,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2497:22:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"id": 1024,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 840,
"src": "2531:3:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
],
"id": 1023,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2523:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1022,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2523:7:6",
"typeDescriptions": {}
}
},
"id": 1025,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2523:12:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2497:38:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"arguments": [
{
"hexValue": "30",
"id": 1033,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2567:1:6",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1032,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2562:4:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1031,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2562:4:6",
"typeDescriptions": {}
}
},
"id": 1034,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2562:7:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1035,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "2497:72:6",
"trueExpression": {
"arguments": [
{
"id": 1029,
"name": "voter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 970,
"src": "2553:5:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 1027,
"name": "staking",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 990,
"src": "2538:7:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStakingRewards_$835",
"typeString": "contract IStakingRewards"
}
},
"id": 1028,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "earned",
"nodeType": "MemberAccess",
"referencedDeclaration": 834,
"src": "2538:14:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1030,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2538:21:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2478:91:6"
},
{
"expression": {
"id": 1042,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1037,
"name": "votes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 976,
"src": "2586:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1040,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1038,
"name": "staked_PNG",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 998,
"src": "2596:10:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 1039,
"name": "pending_PNG",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1018,
"src": "2609:11:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2596:24:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 1041,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "2595:26:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2586:35:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1043,
"nodeType": "ExpressionStatement",
"src": "2586:35:6"
}
]
},
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 984,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 981,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 979,
"src": "2262:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"expression": {
"id": 982,
"name": "stakes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 973,
"src": "2264:6:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
"typeString": "address[] calldata"
}
},
"id": 983,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"src": "2264:13:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2262:15:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1045,
"initializationExpression": {
"assignments": [
979
],
"declarations": [
{
"constant": false,
"id": 979,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1045,
"src": "2254:6:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 978,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2254:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 980,
"nodeType": "VariableDeclarationStatement",
"src": "2254:6:6"
},
"loopExpression": {
"expression": {
"id": 986,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "2279:3:6",
"subExpression": {
"id": 985,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 979,
"src": "2279:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 987,
"nodeType": "ExpressionStatement",
"src": "2279:3:6"
},
"nodeType": "ForStatement",
"src": "2249:384:6"
}
]
},
"functionSelector": "8b47dcd1",
"id": 1047,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getVotesFromStaking",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 974,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 970,
"mutability": "mutable",
"name": "voter",
"nodeType": "VariableDeclaration",
"scope": 1047,
"src": "2161:13:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 969,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2161:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 973,
"mutability": "mutable",
"name": "stakes",
"nodeType": "VariableDeclaration",
"scope": 1047,
"src": "2176:25:6",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 971,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2176:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 972,
"nodeType": "ArrayTypeName",
"src": "2176:9:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"visibility": "internal"
}
],
"src": "2160:42:6"
},
"returnParameters": {
"id": 977,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 976,
"mutability": "mutable",
"name": "votes",
"nodeType": "VariableDeclaration",
"scope": 1047,
"src": "2226:10:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 975,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2226:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2225:12:6"
},
"scope": 1095,
"src": "2132:508:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 1079,
"nodeType": "Block",
"src": "2727:241:6",
"statements": [
{
"expression": {
"id": 1059,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1054,
"name": "votes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1052,
"src": "2779:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"arguments": [
{
"id": 1057,
"name": "voter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1049,
"src": "2808:5:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 1055,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 840,
"src": "2788:3:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
},
"id": 1056,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getCurrentVotes",
"nodeType": "MemberAccess",
"referencedDeclaration": 802,
"src": "2788:19:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1058,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2788:26:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2779:35:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1060,
"nodeType": "ExpressionStatement",
"src": "2779:35:6"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1069,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 1063,
"name": "voter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1049,
"src": "2883:5:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 1061,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 840,
"src": "2869:3:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
},
"id": 1062,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "delegates",
"nodeType": "MemberAccess",
"referencedDeclaration": 809,
"src": "2869:13:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
"typeString": "function (address) view external returns (address)"
}
},
"id": 1064,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2869:20:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 1067,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2901:1:6",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1066,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2893:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1065,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2893:7:6",
"typeDescriptions": {}
}
},
"id": 1068,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2893:10:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2869:34:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1078,
"nodeType": "IfStatement",
"src": "2865:96:6",
"trueBody": {
"id": 1077,
"nodeType": "Block",
"src": "2905:56:6",
"statements": [
{
"expression": {
"id": 1075,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1070,
"name": "votes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1052,
"src": "2920:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"arguments": [
{
"id": 1073,
"name": "voter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1049,
"src": "2943:5:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 1071,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 840,
"src": "2929:3:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPangolinERC20_$810",
"typeString": "contract IPangolinERC20"
}
},
"id": 1072,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 795,
"src": "2929:13:6",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1074,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2929:20:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2920:29:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1076,
"nodeType": "ExpressionStatement",
"src": "2920:29:6"
}
]
}
}
]
},
"functionSelector": "61227349",
"id": 1080,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getVotesFromWallets",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1050,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1049,
"mutability": "mutable",
"name": "voter",
"nodeType": "VariableDeclaration",
"scope": 1080,
"src": "2677:13:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1048,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2677:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2676:15:6"
},
"returnParameters": {
"id": 1053,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1052,
"mutability": "mutable",
"name": "votes",
"nodeType": "VariableDeclaration",
"scope": 1080,
"src": "2715:10:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1051,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2715:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2714:12:6"
},
"scope": 1095,
"src": "2648:320:6",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 1093,
"nodeType": "Block",
"src": "3058:80:6",
"statements": [
{
"expression": {
"id": 1091,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1087,
"name": "liquidityManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 843,
"src": "3069:16:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILiquidityPoolManagerV2_$775",
"typeString": "contract ILiquidityPoolManagerV2"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 1089,
"name": "_liquidityManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1082,
"src": "3112:17:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1088,
"name": "ILiquidityPoolManagerV2",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 775,
"src": "3088:23:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ILiquidityPoolManagerV2_$775_$",
"typeString": "type(contract ILiquidityPoolManagerV2)"
}
},
"id": 1090,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3088:42:6",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILiquidityPoolManagerV2_$775",
"typeString": "contract ILiquidityPoolManagerV2"
}
},
"src": "3069:61:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILiquidityPoolManagerV2_$775",
"typeString": "contract ILiquidityPoolManagerV2"
}
},
"id": 1092,
"nodeType": "ExpressionStatement",
"src": "3069:61:6"
}
]
},
"functionSelector": "0f85e638",
"id": 1094,
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 1085,
"modifierName": {
"id": 1084,
"name": "onlyOwner",
"nodeType": "IdentifierPath",
"referencedDeclaration": 46,
"src": "3048:9:6"
},
"nodeType": "ModifierInvocation",
"src": "3048:9:6"
}
],
"name": "changeLiquidityPoolManager",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1083,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1082,
"mutability": "mutable",
"name": "_liquidityManager",
"nodeType": "VariableDeclaration",
"scope": 1094,
"src": "3012:25:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1081,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3012:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "3011:27:6"
},
"returnParameters": {
"id": 1086,
"nodeType": "ParameterList",
"parameters": [],
"src": "3058:0:6"
},
"scope": 1095,
"src": "2976:162:6",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1096,
"src": "945:2198:6"
}
],
"src": "0:3143:6"
},
"id": 6
},
"contracts/TreasuryVesterProxy.sol": {
"ast": {
"absolutePath": "contracts/TreasuryVesterProxy.sol",
"exportedSymbols": {
"Address": [
742
],
"Context": [
764
],
"IERC20": [
221
],
"IMiniChefV2": [
1120
],
"ITreasuryVester": [
1112
],
"Ownable": [
103
],
"ReentrancyGuard": [
143
],
"SafeERC20": [
445
],
"TreasuryVesterProxy": [
1465
]
},
"id": 1466,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1097,
"literals": [
"solidity",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:22:7"
},
{
"absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
"file": "@openzeppelin/contracts/access/Ownable.sol",
"id": 1098,
"nodeType": "ImportDirective",
"scope": 1466,
"sourceUnit": 104,
"src": "26:52:7",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/security/ReentrancyGuard.sol",
"file": "@openzeppelin/contracts/security/ReentrancyGuard.sol",
"id": 1099,
"nodeType": "ImportDirective",
"scope": 1466,
"sourceUnit": 144,
"src": "80:62:7",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
"id": 1100,
"nodeType": "ImportDirective",
"scope": 1466,
"sourceUnit": 446,
"src": "144:65:7",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"id": 1101,
"nodeType": "ImportDirective",
"scope": 1466,
"sourceUnit": 222,
"src": "211:56:7",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 1112,
"linearizedBaseContracts": [
1112
],
"name": "ITreasuryVester",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "4e71d92d",
"id": 1106,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "claim",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1102,
"nodeType": "ParameterList",
"parameters": [],
"src": "318:2:7"
},
"returnParameters": {
"id": 1105,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1104,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1106,
"src": "339:4:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1103,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "339:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "338:6:7"
},
"scope": 1112,
"src": "304:41:7",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "66d003ac",
"id": 1111,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "recipient",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1107,
"nodeType": "ParameterList",
"parameters": [],
"src": "369:2:7"
},
"returnParameters": {
"id": 1110,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1109,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1111,
"src": "390:7:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1108,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "390:7:7",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "389:9:7"
},
"scope": 1112,
"src": "351:48:7",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1466,
"src": "271:131:7"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 1120,
"linearizedBaseContracts": [
1120
],
"name": "IMiniChefV2",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "28662551",
"id": 1119,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "fundRewards",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1117,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1114,
"mutability": "mutable",
"name": "newFunding",
"nodeType": "VariableDeclaration",
"scope": 1119,
"src": "456:18:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1113,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "456:7:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 1116,
"mutability": "mutable",
"name": "duration",
"nodeType": "VariableDeclaration",
"scope": 1119,
"src": "476:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1115,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "476:7:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "455:38:7"
},
"returnParameters": {
"id": 1118,
"nodeType": "ParameterList",
"parameters": [],
"src": "502:0:7"
},
"scope": 1120,
"src": "435:68:7",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1466,
"src": "406:100:7"
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 1121,
"name": "Ownable",
"nodeType": "IdentifierPath",
"referencedDeclaration": 103,
"src": "577:7:7"
},
"id": 1122,
"nodeType": "InheritanceSpecifier",
"src": "577:7:7"
},
{
"baseName": {
"id": 1123,
"name": "ReentrancyGuard",
"nodeType": "IdentifierPath",
"referencedDeclaration": 143,
"src": "586:15:7"
},
"id": 1124,
"nodeType": "InheritanceSpecifier",
"src": "586:15:7"
}
],
"contractDependencies": [
103,
143,
764
],
"contractKind": "contract",
"fullyImplemented": true,
"id": 1465,
"linearizedBaseContracts": [
1465,
143,
103,
764
],
"name": "TreasuryVesterProxy",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 1128,
"libraryName": {
"id": 1125,
"name": "SafeERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 445,
"src": "615:9:7"
},
"nodeType": "UsingForDirective",
"src": "609:27:7",
"typeName": {
"id": 1127,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 1126,
"name": "IERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 221,
"src": "629:6:7"
},
"referencedDeclaration": 221,
"src": "629:6:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
}
},
{
"constant": false,
"functionSelector": "5f775678",
"id": 1131,
"mutability": "mutable",
"name": "png",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "644:17:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
},
"typeName": {
"id": 1130,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 1129,
"name": "IERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 221,
"src": "644:6:7"
},
"referencedDeclaration": 221,
"src": "644:6:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "150895db",
"id": 1134,
"mutability": "mutable",
"name": "treasuryVester",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "668:37:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ITreasuryVester_$1112",
"typeString": "contract ITreasuryVester"
},
"typeName": {
"id": 1133,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 1132,
"name": "ITreasuryVester",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1112,
"src": "668:15:7"
},
"referencedDeclaration": 1112,
"src": "668:15:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ITreasuryVester_$1112",
"typeString": "contract ITreasuryVester"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "1fc8bc5d",
"id": 1137,
"mutability": "mutable",
"name": "chef",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "712:23:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMiniChefV2_$1120",
"typeString": "contract IMiniChefV2"
},
"typeName": {
"id": 1136,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 1135,
"name": "IMiniChefV2",
"nodeType": "IdentifierPath",
"referencedDeclaration": 1120,
"src": "712:11:7"
},
"referencedDeclaration": 1120,
"src": "712:11:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMiniChefV2_$1120",
"typeString": "contract IMiniChefV2"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "61d027b3",
"id": 1139,
"mutability": "mutable",
"name": "treasury",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "742:23:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1138,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "742:7:7",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "public"
},
{
"constant": true,
"id": 1142,
"mutability": "constant",
"name": "PNG_INITIAL_MAX_SUPPLY",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "774:53:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1140,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "774:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"hexValue": "3533385f3030305f303030653138",
"id": 1141,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "813:14:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_538000000000000000000000000_by_1",
"typeString": "int_const 538000000000000000000000000"
},
"value": "538_000_000e18"
},
"visibility": "internal"
},
{
"constant": true,
"id": 1145,
"mutability": "constant",
"name": "PNG_NEW_MAX_SUPPLY",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "834:49:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1143,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "834:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"hexValue": "3233305f3030305f303030653138",
"id": 1144,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "869:14:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_230000000000000000000000000_by_1",
"typeString": "int_const 230000000000000000000000000"
},
"value": "230_000_000e18"
},
"visibility": "internal"
},
{
"constant": true,
"id": 1148,
"mutability": "constant",
"name": "TREASURY_TARGET_BALANCE",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "890:53:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1146,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "890:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"hexValue": "33305f3030305f303030653138",
"id": 1147,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "930:13:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_30000000000000000000000000_by_1",
"typeString": "int_const 30000000000000000000000000"
},
"value": "30_000_000e18"
},
"visibility": "internal"
},
{
"constant": true,
"id": 1151,
"mutability": "constant",
"name": "PNG_VESTING_CLIFF",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "950:40:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1149,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "950:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"hexValue": "38365f343030",
"id": 1150,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "984:6:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_86400_by_1",
"typeString": "int_const 86400"
},
"value": "86_400"
},
"visibility": "internal"
},
{
"constant": true,
"id": 1154,
"mutability": "constant",
"name": "DIVERSION_STEP",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "997:39:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1152,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "997:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"hexValue": "315f303030653138",
"id": 1153,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1028:8:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_1000000000000000000000_by_1",
"typeString": "int_const 1000000000000000000000"
},
"value": "1_000e18"
},
"visibility": "internal"
},
{
"constant": true,
"id": 1160,
"mutability": "constant",
"name": "BURN_ADDRESS",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "1043:83:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1155,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1043:7:7",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": {
"arguments": [
{
"hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303064456144",
"id": 1158,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1083:42:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"value": "0x000000000000000000000000000000000000dEaD"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1157,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1075:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1156,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1075:7:7",
"typeDescriptions": {}
}
},
"id": 1159,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1075:51:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 1162,
"mutability": "mutable",
"name": "initialized",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "1135:16:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1161,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1135:4:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"functionSelector": "841f2c31",
"id": 1164,
"mutability": "mutable",
"name": "pngVested",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "1158:21:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1163,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1158:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "c65c3d95",
"id": 1166,
"mutability": "mutable",
"name": "distributionCount",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "1188:29:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1165,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1188:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "b57eb051",
"id": 1168,
"mutability": "mutable",
"name": "treasuryDiversionRemaining",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "1226:38:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1167,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1226:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "6d19e0ad",
"id": 1170,
"mutability": "mutable",
"name": "diversionAmount",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "1273:27:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1169,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1273:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "eea9f1ac",
"id": 1172,
"mutability": "mutable",
"name": "diversionGain",
"nodeType": "VariableDeclaration",
"scope": 1465,
"src": "1307:25:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1171,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1307:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "public"
},
{
"body": {
"id": 1236,
"nodeType": "Block",
"src": "1426:422:7",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1210,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1203,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1196,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1189,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1184,
"name": "_png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1174,
"src": "1459:4:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 1187,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1475:1:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1186,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1467:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1185,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1467:7:7",
"typeDescriptions": {}
}
},
"id": 1188,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1467:10:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1459:18:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1195,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1190,
"name": "_treasuryVester",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1176,
"src": "1494:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 1193,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1521:1:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1192,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1513:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1191,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1513:7:7",
"typeDescriptions": {}
}
},
"id": 1194,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1513:10:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1494:29:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1459:64:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1202,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1197,
"name": "_treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1178,
"src": "1540:9:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 1200,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1561:1:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1199,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1553:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1198,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1553:7:7",
"typeDescriptions": {}
}
},
"id": 1201,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1553:10:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1540:23:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1459:104:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1209,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1204,
"name": "_chef",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1180,
"src": "1580:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 1207,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1597:1:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1206,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1589:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1205,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1589:7:7",
"typeDescriptions": {}
}
},
"id": 1208,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1589:10:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1580:19:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1459:140:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "547265617375727956657374657250726f78793a3a43616e6e6f7420636f6e7374727563742077697468207a65726f2061646472657373",
"id": 1211,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1614:57:7",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_474255cdee1f3cf201cef1b214dd1d2931642d92c3e3ad25c8ac1ee0fa40b568",
"typeString": "literal_string \"TreasuryVesterProxy::Cannot construct with zero address\""
},
"value": "TreasuryVesterProxy::Cannot construct with zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_474255cdee1f3cf201cef1b214dd1d2931642d92c3e3ad25c8ac1ee0fa40b568",
"typeString": "literal_string \"TreasuryVesterProxy::Cannot construct with zero address\""
}
],
"id": 1183,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1437:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1212,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1437:245:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1213,
"nodeType": "ExpressionStatement",
"src": "1437:245:7"
},
{
"expression": {
"id": 1218,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1214,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1131,
"src": "1695:3:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 1216,
"name": "_png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1174,
"src": "1708:4:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1215,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 221,
"src": "1701:6:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$221_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1217,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1701:12:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"src": "1695:18:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 1219,
"nodeType": "ExpressionStatement",
"src": "1695:18:7"
},
{
"expression": {
"id": 1224,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1220,
"name": "treasuryVester",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1134,
"src": "1724:14:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ITreasuryVester_$1112",
"typeString": "contract ITreasuryVester"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 1222,
"name": "_treasuryVester",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1176,
"src": "1757:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1221,
"name": "ITreasuryVester",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1112,
"src": "1741:15:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ITreasuryVester_$1112_$",
"typeString": "type(contract ITreasuryVester)"
}
},
"id": 1223,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1741:32:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ITreasuryVester_$1112",
"typeString": "contract ITreasuryVester"
}
},
"src": "1724:49:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ITreasuryVester_$1112",
"typeString": "contract ITreasuryVester"
}
},
"id": 1225,
"nodeType": "ExpressionStatement",
"src": "1724:49:7"
},
{
"expression": {
"id": 1228,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1226,
"name": "treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1139,
"src": "1784:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 1227,
"name": "_treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1178,
"src": "1795:9:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1784:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1229,
"nodeType": "ExpressionStatement",
"src": "1784:20:7"
},
{
"expression": {
"id": 1234,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1230,
"name": "chef",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1137,
"src": "1815:4:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMiniChefV2_$1120",
"typeString": "contract IMiniChefV2"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 1232,
"name": "_chef",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1180,
"src": "1834:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1231,
"name": "IMiniChefV2",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1120,
"src": "1822:11:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IMiniChefV2_$1120_$",
"typeString": "type(contract IMiniChefV2)"
}
},
"id": 1233,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1822:18:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMiniChefV2_$1120",
"typeString": "contract IMiniChefV2"
}
},
"src": "1815:25:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMiniChefV2_$1120",
"typeString": "contract IMiniChefV2"
}
},
"id": 1235,
"nodeType": "ExpressionStatement",
"src": "1815:25:7"
}
]
},
"id": 1237,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1181,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1174,
"mutability": "mutable",
"name": "_png",
"nodeType": "VariableDeclaration",
"scope": 1237,
"src": "1353:12:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1173,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1353:7:7",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 1176,
"mutability": "mutable",
"name": "_treasuryVester",
"nodeType": "VariableDeclaration",
"scope": 1237,
"src": "1367:23:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1175,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1367:7:7",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 1178,
"mutability": "mutable",
"name": "_treasury",
"nodeType": "VariableDeclaration",
"scope": 1237,
"src": "1392:17:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1177,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1392:7:7",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 1180,
"mutability": "mutable",
"name": "_chef",
"nodeType": "VariableDeclaration",
"scope": 1237,
"src": "1411:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1179,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1411:7:7",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1352:73:7"
},
"returnParameters": {
"id": 1182,
"nodeType": "ParameterList",
"parameters": [],
"src": "1426:0:7"
},
"scope": 1465,
"src": "1341:507:7",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1301,
"nodeType": "Block",
"src": "1891:662:7",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1243,
"name": "treasuryVester",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1134,
"src": "1910:14:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ITreasuryVester_$1112",
"typeString": "contract ITreasuryVester"
}
},
"id": 1244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "recipient",
"nodeType": "MemberAccess",
"referencedDeclaration": 1111,
"src": "1910:24:7",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$__$returns$_t_address_$",
"typeString": "function () external returns (address)"
}
},
"id": 1245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1910:26:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"id": 1248,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "1948:4:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_TreasuryVesterProxy_$1465",
"typeString": "contract TreasuryVesterProxy"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_TreasuryVesterProxy_$1465",
"typeString": "contract TreasuryVesterProxy"
}
],
"id": 1247,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1940:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1246,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1940:7:7",
"typeDescriptions": {}
}
},
"id": 1249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1940:13:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1910:43:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "547265617375727956657374657250726f78793a3a496e76616c69642074726561737572792076657374657220726563697069656e74",
"id": 1251,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1955:56:7",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_2ccf417ea0a8e7f976b20994efdee03b74a6dad64b71f5de57c99a01d0e1ffe0",
"typeString": "literal_string \"TreasuryVesterProxy::Invalid treasury vester recipient\""
},
"value": "TreasuryVesterProxy::Invalid treasury vester recipient"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_2ccf417ea0a8e7f976b20994efdee03b74a6dad64b71f5de57c99a01d0e1ffe0",
"typeString": "literal_string \"TreasuryVesterProxy::Invalid treasury vester recipient\""
}
],
"id": 1242,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1902:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1252,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1902:110:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1253,
"nodeType": "ExpressionStatement",
"src": "1902:110:7"
},
{
"assignments": [
1255
],
"declarations": [
{
"constant": false,
"id": 1255,
"mutability": "mutable",
"name": "unvestedPng",
"nodeType": "VariableDeclaration",
"scope": 1301,
"src": "2025:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1254,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2025:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 1263,
"initialValue": {
"arguments": [
{
"arguments": [
{
"id": 1260,
"name": "treasuryVester",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1134,
"src": "2066:14:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ITreasuryVester_$1112",
"typeString": "contract ITreasuryVester"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ITreasuryVester_$1112",
"typeString": "contract ITreasuryVester"
}
],
"id": 1259,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2058:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1258,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2058:7:7",
"typeDescriptions": {}
}
},
"id": 1261,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2058:23:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 1256,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1131,
"src": "2044:3:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 1257,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 160,
"src": "2044:13:7",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1262,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2044:38:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2025:57:7"
},
{
"assignments": [
1265
],
"declarations": [
{
"constant": false,
"id": 1265,
"mutability": "mutable",
"name": "treasuryBalance",
"nodeType": "VariableDeclaration",
"scope": 1301,
"src": "2093:20:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1264,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2093:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 1270,
"initialValue": {
"arguments": [
{
"id": 1268,
"name": "treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1139,
"src": "2130:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 1266,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1131,
"src": "2116:3:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 1267,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 160,
"src": "2116:13:7",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1269,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2116:23:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2093:46:7"
},
{
"expression": {
"id": 1275,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1271,
"name": "pngVested",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "2197:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1274,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1272,
"name": "PNG_INITIAL_MAX_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "2209:22:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 1273,
"name": "unvestedPng",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1255,
"src": "2234:11:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2209:36:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2197:48:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1276,
"nodeType": "ExpressionStatement",
"src": "2197:48:7"
},
{
"expression": {
"id": 1281,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1277,
"name": "treasuryDiversionRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1168,
"src": "2342:26:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1280,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1278,
"name": "TREASURY_TARGET_BALANCE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1148,
"src": "2371:23:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 1279,
"name": "treasuryBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1265,
"src": "2397:15:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2371:41:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2342:70:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1282,
"nodeType": "ExpressionStatement",
"src": "2342:70:7"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 1288,
"name": "chef",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1137,
"src": "2489:4:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMiniChefV2_$1120",
"typeString": "contract IMiniChefV2"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IMiniChefV2_$1120",
"typeString": "contract IMiniChefV2"
}
],
"id": 1287,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2481:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1286,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2481:7:7",
"typeDescriptions": {}
}
},
"id": 1289,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2481:13:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"expression": {
"arguments": [
{
"id": 1292,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2501:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1291,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2501:7:7",
"typeDescriptions": {}
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
}
],
"id": 1290,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -27,
"src": "2496:4:7",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 1293,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2496:13:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_uint256",
"typeString": "type(uint256)"
}
},
"id": 1294,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "max",
"nodeType": "MemberAccess",
"src": "2496:17:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 1283,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1131,
"src": "2469:3:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 1285,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "approve",
"nodeType": "MemberAccess",
"referencedDeclaration": 190,
"src": "2469:11:7",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 1295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2469:45:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1296,
"nodeType": "ExpressionStatement",
"src": "2469:45:7"
},
{
"expression": {
"id": 1299,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1297,
"name": "initialized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1162,
"src": "2527:11:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "74727565",
"id": 1298,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2541:4:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2527:18:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1300,
"nodeType": "ExpressionStatement",
"src": "2527:18:7"
}
]
},
"functionSelector": "e1c7392a",
"id": 1302,
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 1240,
"modifierName": {
"id": 1239,
"name": "onlyOwner",
"nodeType": "IdentifierPath",
"referencedDeclaration": 46,
"src": "1881:9:7"
},
"nodeType": "ModifierInvocation",
"src": "1881:9:7"
}
],
"name": "init",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1238,
"nodeType": "ParameterList",
"parameters": [],
"src": "1869:2:7"
},
"returnParameters": {
"id": 1241,
"nodeType": "ParameterList",
"parameters": [],
"src": "1891:0:7"
},
"scope": 1465,
"src": "1856:697:7",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 1463,
"nodeType": "Block",
"src": "2600:2158:7",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1308,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1306,
"name": "initialized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1162,
"src": "2619:11:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "74727565",
"id": 1307,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2634:4:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2619:19:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "547265617375727956657374657250726f78793a3a4e6f7420696e697469616c697a6564",
"id": 1309,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2640:38:7",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e23873d41ae59bf2a98692a32c9fa2824f103d7cfb9584ebf20c2eea259e7c2a",
"typeString": "literal_string \"TreasuryVesterProxy::Not initialized\""
},
"value": "TreasuryVesterProxy::Not initialized"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_e23873d41ae59bf2a98692a32c9fa2824f103d7cfb9584ebf20c2eea259e7c2a",
"typeString": "literal_string \"TreasuryVesterProxy::Not initialized\""
}
],
"id": 1305,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2611:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1310,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2611:68:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1311,
"nodeType": "ExpressionStatement",
"src": "2611:68:7"
},
{
"assignments": [
1313
],
"declarations": [
{
"constant": false,
"id": 1313,
"mutability": "mutable",
"name": "vestedAmountRemaining",
"nodeType": "VariableDeclaration",
"scope": 1463,
"src": "2690:26:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1312,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2690:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 1317,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1314,
"name": "treasuryVester",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1134,
"src": "2719:14:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ITreasuryVester_$1112",
"typeString": "contract ITreasuryVester"
}
},
"id": 1315,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "claim",
"nodeType": "MemberAccess",
"referencedDeclaration": 1106,
"src": "2719:20:7",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$",
"typeString": "function () external returns (uint256)"
}
},
"id": 1316,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2719:22:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2690:51:7"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1319,
"name": "vestedAmountRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1313,
"src": "2760:21:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 1320,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2784:1:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2760:25:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "547265617375727956657374657250726f78793a3a4e6f7468696e6720766573746564",
"id": 1322,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2787:37:7",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_957f7ceabbcc153e275d538d7e6f3da06adb3c2f0bf09e68a6764d3f58cdd21e",
"typeString": "literal_string \"TreasuryVesterProxy::Nothing vested\""
},
"value": "TreasuryVesterProxy::Nothing vested"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_957f7ceabbcc153e275d538d7e6f3da06adb3c2f0bf09e68a6764d3f58cdd21e",
"typeString": "literal_string \"TreasuryVesterProxy::Nothing vested\""
}
],
"id": 1318,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2752:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1323,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2752:73:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1324,
"nodeType": "ExpressionStatement",
"src": "2752:73:7"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1329,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1327,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1325,
"name": "distributionCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1166,
"src": "2906:17:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"hexValue": "333030",
"id": 1326,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2926:3:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_300_by_1",
"typeString": "int_const 300"
},
"value": "300"
},
"src": "2906:23:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 1328,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2933:1:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2906:28:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1335,
"nodeType": "IfStatement",
"src": "2902:92:7",
"trueBody": {
"id": 1334,
"nodeType": "Block",
"src": "2936:58:7",
"statements": [
{
"expression": {
"id": 1332,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1330,
"name": "diversionGain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1172,
"src": "2951:13:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"id": 1331,
"name": "DIVERSION_STEP",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1154,
"src": "2968:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2951:31:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1333,
"nodeType": "ExpressionStatement",
"src": "2951:31:7"
}
]
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1340,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1338,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1336,
"name": "distributionCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1166,
"src": "3055:17:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"hexValue": "3330",
"id": 1337,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3075:2:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_30_by_1",
"typeString": "int_const 30"
},
"value": "30"
},
"src": "3055:22:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 1339,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3081:1:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3055:27:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1346,
"nodeType": "IfStatement",
"src": "3051:92:7",
"trueBody": {
"id": 1345,
"nodeType": "Block",
"src": "3084:59:7",
"statements": [
{
"expression": {
"id": 1343,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1341,
"name": "diversionAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1170,
"src": "3099:15:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"id": 1342,
"name": "diversionGain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1172,
"src": "3118:13:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3099:32:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1344,
"nodeType": "ExpressionStatement",
"src": "3099:32:7"
}
]
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1349,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1347,
"name": "diversionAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1170,
"src": "3224:15:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"id": 1348,
"name": "vestedAmountRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1313,
"src": "3242:21:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3224:39:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1355,
"nodeType": "IfStatement",
"src": "3220:111:7",
"trueBody": {
"id": 1354,
"nodeType": "Block",
"src": "3265:66:7",
"statements": [
{
"expression": {
"id": 1352,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1350,
"name": "diversionAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1170,
"src": "3280:15:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 1351,
"name": "vestedAmountRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1313,
"src": "3298:21:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3280:39:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1353,
"nodeType": "ExpressionStatement",
"src": "3280:39:7"
}
]
}
},
{
"assignments": [
1357
],
"declarations": [
{
"constant": false,
"id": 1357,
"mutability": "mutable",
"name": "treasuryAmountMax",
"nodeType": "VariableDeclaration",
"scope": 1463,
"src": "3343:22:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1356,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "3343:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 1365,
"initialValue": {
"condition": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1360,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1358,
"name": "diversionAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1170,
"src": "3369:15:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"id": 1359,
"name": "treasuryDiversionRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1168,
"src": "3387:26:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3369:44:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 1361,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3368:46:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"id": 1363,
"name": "diversionAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1170,
"src": "3502:15:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "3368:149:7",
"trueExpression": {
"id": 1362,
"name": "treasuryDiversionRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1168,
"src": "3430:26:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3343:174:7"
},
{
"assignments": [
1367
],
"declarations": [
{
"constant": false,
"id": 1367,
"mutability": "mutable",
"name": "chefAmountMax",
"nodeType": "VariableDeclaration",
"scope": 1463,
"src": "3528:18:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1366,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "3528:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 1371,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1370,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1368,
"name": "vestedAmountRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1313,
"src": "3549:21:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 1369,
"name": "diversionAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1170,
"src": "3573:15:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3549:39:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3528:60:7"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1374,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1372,
"name": "treasuryDiversionRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1168,
"src": "3605:26:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 1373,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3634:1:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3605:30:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1408,
"nodeType": "IfStatement",
"src": "3601:461:7",
"trueBody": {
"id": 1407,
"nodeType": "Block",
"src": "3637:425:7",
"statements": [
{
"assignments": [
1376
],
"declarations": [
{
"constant": false,
"id": 1376,
"mutability": "mutable",
"name": "treasuryAmount",
"nodeType": "VariableDeclaration",
"scope": 1407,
"src": "3652:19:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1375,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "3652:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 1387,
"initialValue": {
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1381,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1379,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1377,
"name": "pngVested",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "3674:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 1378,
"name": "treasuryAmountMax",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1357,
"src": "3686:17:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3674:29:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"id": 1380,
"name": "PNG_NEW_MAX_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1145,
"src": "3706:18:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3674:50:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"id": 1385,
"name": "treasuryAmountMax",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1357,
"src": "3819:17:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1386,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "3674:162:7",
"trueExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1384,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1382,
"name": "PNG_NEW_MAX_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1145,
"src": "3744:18:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 1383,
"name": "pngVested",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "3765:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3744:30:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3652:184:7"
},
{
"expression": {
"id": 1390,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1388,
"name": "pngVested",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "3853:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"id": 1389,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1376,
"src": "3866:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3853:27:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1391,
"nodeType": "ExpressionStatement",
"src": "3853:27:7"
},
{
"expression": {
"id": 1394,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1392,
"name": "vestedAmountRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1313,
"src": "3895:21:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"id": 1393,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1376,
"src": "3920:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3895:39:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1395,
"nodeType": "ExpressionStatement",
"src": "3895:39:7"
},
{
"expression": {
"id": 1398,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1396,
"name": "treasuryDiversionRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1168,
"src": "3949:26:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"id": 1397,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1376,
"src": "3979:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3949:44:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1399,
"nodeType": "ExpressionStatement",
"src": "3949:44:7"
},
{
"expression": {
"arguments": [
{
"id": 1403,
"name": "treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1139,
"src": "4025:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 1404,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1376,
"src": "4035:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 1400,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1131,
"src": "4008:3:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 1402,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 252,
"src": "4008:16:7",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$221_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$221_$",
"typeString": "function (contract IERC20,address,uint256)"
}
},
"id": 1405,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4008:42:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1406,
"nodeType": "ExpressionStatement",
"src": "4008:42:7"
}
]
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1411,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1409,
"name": "pngVested",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "4078:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"id": 1410,
"name": "PNG_NEW_MAX_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1145,
"src": "4090:18:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4078:30:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1447,
"nodeType": "IfStatement",
"src": "4074:451:7",
"trueBody": {
"id": 1446,
"nodeType": "Block",
"src": "4110:415:7",
"statements": [
{
"assignments": [
1413
],
"declarations": [
{
"constant": false,
"id": 1413,
"mutability": "mutable",
"name": "chefAmount",
"nodeType": "VariableDeclaration",
"scope": 1446,
"src": "4125:15:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1412,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "4125:4:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 1425,
"initialValue": {
"condition": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1418,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1416,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1414,
"name": "pngVested",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "4144:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 1415,
"name": "chefAmountMax",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1367,
"src": "4156:13:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4144:25:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"id": 1417,
"name": "PNG_NEW_MAX_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1145,
"src": "4172:18:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4144:46:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"id": 1419,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "4143:48:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"id": 1423,
"name": "chefAmountMax",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1367,
"src": "4286:13:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1424,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "4143:156:7",
"trueExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1422,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1420,
"name": "PNG_NEW_MAX_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1145,
"src": "4211:18:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 1421,
"name": "pngVested",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "4232:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4211:30:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4125:174:7"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1428,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1426,
"name": "chefAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1413,
"src": "4320:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 1427,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4333:1:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4320:14:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1445,
"nodeType": "IfStatement",
"src": "4316:198:7",
"trueBody": {
"id": 1444,
"nodeType": "Block",
"src": "4336:178:7",
"statements": [
{
"expression": {
"id": 1431,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1429,
"name": "pngVested",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "4355:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"id": 1430,
"name": "chefAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1413,
"src": "4368:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4355:23:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1432,
"nodeType": "ExpressionStatement",
"src": "4355:23:7"
},
{
"expression": {
"id": 1435,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 1433,
"name": "vestedAmountRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1313,
"src": "4397:21:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"id": 1434,
"name": "chefAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1413,
"src": "4422:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4397:35:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1436,
"nodeType": "ExpressionStatement",
"src": "4397:35:7"
},
{
"expression": {
"arguments": [
{
"id": 1440,
"name": "chefAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1413,
"src": "4468:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 1441,
"name": "PNG_VESTING_CLIFF",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1151,
"src": "4480:17:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 1437,
"name": "chef",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1137,
"src": "4451:4:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IMiniChefV2_$1120",
"typeString": "contract IMiniChefV2"
}
},
"id": 1439,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "fundRewards",
"nodeType": "MemberAccess",
"referencedDeclaration": 1119,
"src": "4451:16:7",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (uint256,uint256) external"
}
},
"id": 1442,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4451:47:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1443,
"nodeType": "ExpressionStatement",
"src": "4451:47:7"
}
]
}
}
]
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1450,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1448,
"name": "vestedAmountRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1313,
"src": "4541:21:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 1449,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4565:1:7",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4541:25:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1459,
"nodeType": "IfStatement",
"src": "4537:182:7",
"trueBody": {
"id": 1458,
"nodeType": "Block",
"src": "4568:151:7",
"statements": [
{
"expression": {
"arguments": [
{
"id": 1454,
"name": "BURN_ADDRESS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1160,
"src": "4671:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 1455,
"name": "vestedAmountRemaining",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1313,
"src": "4685:21:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 1451,
"name": "png",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1131,
"src": "4654:3:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$221",
"typeString": "contract IERC20"
}
},
"id": 1453,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 252,
"src": "4654:16:7",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$221_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$221_$",
"typeString": "function (contract IERC20,address,uint256)"
}
},
"id": 1456,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4654:53:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1457,
"nodeType": "ExpressionStatement",
"src": "4654:53:7"
}
]
}
},
{
"expression": {
"id": 1461,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "4731:19:7",
"subExpression": {
"id": 1460,
"name": "distributionCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1166,
"src": "4731:17:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1462,
"nodeType": "ExpressionStatement",
"src": "4731:19:7"
}
]
},
"functionSelector": "dfb89c37",
"id": 1464,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "claimAndDistribute",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1303,
"nodeType": "ParameterList",
"parameters": [],
"src": "2588:2:7"
},
"returnParameters": {
"id": 1304,
"nodeType": "ParameterList",
"parameters": [],
"src": "2600:0:7"
},
"scope": 1465,
"src": "2561:2197:7",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1466,
"src": "545:4218:7"
}
],
"src": "0:4765:7"
},
"id": 7
}
}
}
}